From 883b0bbb24dbe1e90bf1ee929dcbe275ed71c00d Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Mon, 2 Sep 2024 12:29:53 +0200 Subject: [PATCH 01/39] Add path-bool library --- Cargo.toml | 1 + libraries/path-bool/.gitignore | 2 + libraries/path-bool/Cargo.toml | 23 + libraries/path-bool/README.md | 1 + .../visual-tests/dangling-01/difference.svg | 7 + .../visual-tests/dangling-01/division.svg | 7 + .../visual-tests/dangling-01/exclusion.svg | 7 + .../visual-tests/dangling-01/fracture.svg | 7 + .../visual-tests/dangling-01/intersection.svg | 7 + .../visual-tests/dangling-01/original.svg | 16 + .../visual-tests/dangling-01/union.svg | 7 + .../visual-tests/dangling-02/difference.svg | 7 + .../visual-tests/dangling-02/division.svg | 7 + .../visual-tests/dangling-02/exclusion.svg | 7 + .../visual-tests/dangling-02/fracture.svg | 7 + .../visual-tests/dangling-02/intersection.svg | 7 + .../visual-tests/dangling-02/original.svg | 16 + .../visual-tests/dangling-02/union.svg | 7 + .../visual-tests/dangling-03/difference.svg | 7 + .../visual-tests/dangling-03/division.svg | 7 + .../visual-tests/dangling-03/exclusion.svg | 7 + .../visual-tests/dangling-03/fracture.svg | 7 + .../visual-tests/dangling-03/intersection.svg | 7 + .../visual-tests/dangling-03/original.svg | 16 + .../visual-tests/dangling-03/union.svg | 7 + .../visual-tests/dangling-04/difference.svg | 7 + .../visual-tests/dangling-04/division.svg | 7 + .../visual-tests/dangling-04/exclusion.svg | 7 + .../visual-tests/dangling-04/fracture.svg | 7 + .../visual-tests/dangling-04/intersection.svg | 7 + .../visual-tests/dangling-04/original.svg | 16 + .../visual-tests/dangling-04/union.svg | 7 + .../visual-tests/establish-ground-truth.sh | 5 + .../visual-tests/generate-ground-truth.sh | 10 + .../visual-tests/nesting-01/difference.svg | 10 + .../visual-tests/nesting-01/division.svg | 10 + .../visual-tests/nesting-01/exclusion.svg | 10 + .../visual-tests/nesting-01/fracture.svg | 10 + .../visual-tests/nesting-01/intersection.svg | 10 + .../visual-tests/nesting-01/original.svg | 25 + .../visual-tests/nesting-01/union.svg | 10 + .../visual-tests/nesting-02/difference.svg | 10 + .../visual-tests/nesting-02/division.svg | 10 + .../visual-tests/nesting-02/exclusion.svg | 10 + .../visual-tests/nesting-02/fracture.svg | 10 + .../visual-tests/nesting-02/intersection.svg | 10 + .../visual-tests/nesting-02/original.svg | 25 + .../visual-tests/nesting-02/union.svg | 10 + .../visual-tests/nesting-03/difference.svg | 7 + .../visual-tests/nesting-03/division.svg | 7 + .../visual-tests/nesting-03/exclusion.svg | 7 + .../visual-tests/nesting-03/fracture.svg | 7 + .../visual-tests/nesting-03/intersection.svg | 7 + .../visual-tests/nesting-03/original.svg | 16 + .../visual-tests/nesting-03/union.svg | 7 + .../visual-tests/nesting-04/difference.svg | 8 + .../visual-tests/nesting-04/division.svg | 8 + .../visual-tests/nesting-04/exclusion.svg | 8 + .../visual-tests/nesting-04/fracture.svg | 8 + .../visual-tests/nesting-04/intersection.svg | 8 + .../visual-tests/nesting-04/original.svg | 18 + .../visual-tests/nesting-04/union.svg | 8 + .../visual-tests/real-01/difference.svg | 8 + .../visual-tests/real-01/division.svg | 8 + .../visual-tests/real-01/exclusion.svg | 8 + .../visual-tests/real-01/fracture.svg | 8 + .../visual-tests/real-01/intersection.svg | 8 + .../visual-tests/real-01/original.svg | 22 + .../visual-tests/real-01/union.svg | 8 + .../visual-tests/real-02/difference.svg | 5 + .../visual-tests/real-02/division.svg | 5 + .../visual-tests/real-02/exclusion.svg | 5 + .../visual-tests/real-02/fracture.svg | 5 + .../visual-tests/real-02/intersection.svg | 5 + .../visual-tests/real-02/original.svg | 13 + .../visual-tests/real-02/union.svg | 5 + .../visual-tests/simple-01/difference.svg | 5 + .../visual-tests/simple-01/division.svg | 5 + .../visual-tests/simple-01/exclusion.svg | 5 + .../visual-tests/simple-01/fracture.svg | 5 + .../visual-tests/simple-01/intersection.svg | 5 + .../visual-tests/simple-01/original.svg | 13 + .../visual-tests/simple-01/union.svg | 5 + .../visual-tests/simple-02/difference.svg | 5 + .../visual-tests/simple-02/division.svg | 5 + .../visual-tests/simple-02/exclusion.svg | 5 + .../visual-tests/simple-02/fracture.svg | 5 + .../visual-tests/simple-02/intersection.svg | 5 + .../visual-tests/simple-02/original.svg | 14 + .../visual-tests/simple-02/union.svg | 5 + .../visual-tests/simple-03/difference.svg | 7 + .../visual-tests/simple-03/division.svg | 7 + .../visual-tests/simple-03/exclusion.svg | 7 + .../visual-tests/simple-03/fracture.svg | 7 + .../visual-tests/simple-03/intersection.svg | 7 + .../visual-tests/simple-03/original.svg | 20 + .../visual-tests/simple-03/union.svg | 7 + .../visual-tests/simple-04/difference.svg | 10 + .../visual-tests/simple-04/division.svg | 10 + .../visual-tests/simple-04/exclusion.svg | 10 + .../visual-tests/simple-04/fracture.svg | 10 + .../visual-tests/simple-04/intersection.svg | 10 + .../visual-tests/simple-04/original.svg | 25 + .../visual-tests/simple-04/union.svg | 10 + .../visual-tests/simple-05/difference.svg | 7 + .../visual-tests/simple-05/division.svg | 7 + .../visual-tests/simple-05/exclusion.svg | 7 + .../visual-tests/simple-05/fracture.svg | 7 + .../visual-tests/simple-05/intersection.svg | 7 + .../visual-tests/simple-05/original.svg | 17 + .../visual-tests/simple-05/union.svg | 7 + .../visual-tests/simple-06/difference.svg | 7 + .../visual-tests/simple-06/division.svg | 7 + .../visual-tests/simple-06/exclusion.svg | 7 + .../visual-tests/simple-06/fracture.svg | 7 + .../visual-tests/simple-06/intersection.svg | 7 + .../visual-tests/simple-06/original.svg | 17 + .../visual-tests/simple-06/union.svg | 7 + .../visual-tests/simple-07/difference.svg | 7 + .../visual-tests/simple-07/division.svg | 7 + .../visual-tests/simple-07/exclusion.svg | 7 + .../visual-tests/simple-07/fracture.svg | 7 + .../visual-tests/simple-07/intersection.svg | 7 + .../visual-tests/simple-07/original.svg | 16 + .../visual-tests/simple-07/union.svg | 7 + .../visual-tests/simple-08/difference.svg | 7 + .../visual-tests/simple-08/division.svg | 7 + .../visual-tests/simple-08/exclusion.svg | 7 + .../visual-tests/simple-08/fracture.svg | 7 + .../visual-tests/simple-08/intersection.svg | 7 + .../visual-tests/simple-08/original.svg | 16 + .../visual-tests/simple-08/union.svg | 7 + .../__fixtures__/visual-tests/template.svg | 41 + libraries/path-bool/flake.nix | 48 + libraries/path-bool/shell.nix | 81 + libraries/path-bool/src/aabb.rs | 75 + libraries/path-bool/src/epsilons.rs | 10 + .../src/intersection_path_segment.rs | 187 ++ libraries/path-bool/src/lib.rs | 109 + libraries/path-bool/src/line_segment.rs | 43 + libraries/path-bool/src/line_segment_aabb.rs | 97 + libraries/path-bool/src/math.rs | 37 + libraries/path-bool/src/path.rs | 146 + libraries/path-bool/src/path_boolean.rs | 2395 +++++++++++++++++ libraries/path-bool/src/path_command.rs | 135 + .../path_cubic_segment_self_intersection.rs | 47 + libraries/path-bool/src/path_data.rs | 214 ++ libraries/path-bool/src/path_segment.rs | 449 +++ libraries/path-bool/src/quad_tree.rs | 176 ++ libraries/path-bool/src/vector.rs | 15 + libraries/path-bool/src/visual_tests.rs | 240 ++ 151 files changed, 5694 insertions(+) create mode 100644 libraries/path-bool/.gitignore create mode 100644 libraries/path-bool/Cargo.toml create mode 100644 libraries/path-bool/README.md create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-01/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-02/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-03/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/dangling-04/union.svg create mode 100755 libraries/path-bool/__fixtures__/visual-tests/establish-ground-truth.sh create mode 100755 libraries/path-bool/__fixtures__/visual-tests/generate-ground-truth.sh create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-01/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-02/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-03/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/nesting-04/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-01/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/real-02/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-01/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-02/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-03/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-04/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-05/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-06/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-07/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/difference.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/division.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/exclusion.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/fracture.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/intersection.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/original.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/simple-08/union.svg create mode 100644 libraries/path-bool/__fixtures__/visual-tests/template.svg create mode 100644 libraries/path-bool/flake.nix create mode 100644 libraries/path-bool/shell.nix create mode 100644 libraries/path-bool/src/aabb.rs create mode 100644 libraries/path-bool/src/epsilons.rs create mode 100644 libraries/path-bool/src/intersection_path_segment.rs create mode 100644 libraries/path-bool/src/lib.rs create mode 100644 libraries/path-bool/src/line_segment.rs create mode 100644 libraries/path-bool/src/line_segment_aabb.rs create mode 100644 libraries/path-bool/src/math.rs create mode 100644 libraries/path-bool/src/path.rs create mode 100644 libraries/path-bool/src/path_boolean.rs create mode 100644 libraries/path-bool/src/path_command.rs create mode 100644 libraries/path-bool/src/path_cubic_segment_self_intersection.rs create mode 100644 libraries/path-bool/src/path_data.rs create mode 100644 libraries/path-bool/src/path_segment.rs create mode 100644 libraries/path-bool/src/quad_tree.rs create mode 100644 libraries/path-bool/src/vector.rs create mode 100644 libraries/path-bool/src/visual_tests.rs diff --git a/Cargo.toml b/Cargo.toml index c377646f3c0..25d9499b013 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ members = [ "node-graph/gpu-executor", "node-graph/gpu-compiler/gpu-compiler-bin-wrapper", "libraries/dyn-any", + "libraries/path-bool", "libraries/bezier-rs", "libraries/raw-rs", "libraries/raw-rs/tag-derive", diff --git a/libraries/path-bool/.gitignore b/libraries/path-bool/.gitignore new file mode 100644 index 00000000000..3d626b23034 --- /dev/null +++ b/libraries/path-bool/.gitignore @@ -0,0 +1,2 @@ +/target +test-results diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml new file mode 100644 index 00000000000..2c26f466ea5 --- /dev/null +++ b/libraries/path-bool/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "path-bool" +version = "0.1.0" +rustc-version = "1.79" +authors = ["Graphite Authors "] +edition = "2021" +keywords = ["bezier", "boolean", "path", "ops", "operations", "2d"] +categories = ["graphics", "mathematics"] +licensce = "MIT OR Apache-2.0" + + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +glam = "0.29.0" +regex = "1.10.6" +slotmap = "1.0.7" + +[dev-dependencies] +glob = "0.3" +svg = "0.13" +resvg = "0.28" +image = "0.24" diff --git a/libraries/path-bool/README.md b/libraries/path-bool/README.md new file mode 100644 index 00000000000..48c8e587f9e --- /dev/null +++ b/libraries/path-bool/README.md @@ -0,0 +1 @@ +This is a reimplementation of https://github.com/r-flash/PathBool.js/ diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/difference.svg new file mode 100644 index 00000000000..8bd2508868b --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/division.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/division.svg new file mode 100644 index 00000000000..3f598745133 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/exclusion.svg new file mode 100644 index 00000000000..b0949e0f926 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/fracture.svg new file mode 100644 index 00000000000..142cccbcb69 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/intersection.svg new file mode 100644 index 00000000000..5595e7d7b2a --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/original.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/original.svg new file mode 100644 index 00000000000..73668dee932 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-01/union.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/union.svg new file mode 100644 index 00000000000..4e4df455ca1 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-01/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/difference.svg new file mode 100644 index 00000000000..8bd2508868b --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/division.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/division.svg new file mode 100644 index 00000000000..b95b4e41bac --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/exclusion.svg new file mode 100644 index 00000000000..665045430b0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/fracture.svg new file mode 100644 index 00000000000..b1a44e6acb2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/intersection.svg new file mode 100644 index 00000000000..21cf4ef8749 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/original.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/original.svg new file mode 100644 index 00000000000..24bb0df75e9 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-02/union.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/union.svg new file mode 100644 index 00000000000..5ce5269aeb3 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-02/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/difference.svg new file mode 100644 index 00000000000..6db8be97234 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/division.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/division.svg new file mode 100644 index 00000000000..d962fd3f940 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/exclusion.svg new file mode 100644 index 00000000000..6db8be97234 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/fracture.svg new file mode 100644 index 00000000000..d962fd3f940 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/intersection.svg new file mode 100644 index 00000000000..6db8be97234 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/original.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/original.svg new file mode 100644 index 00000000000..a25711e02f0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-03/union.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/union.svg new file mode 100644 index 00000000000..6db8be97234 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-03/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/difference.svg new file mode 100644 index 00000000000..bae74eb65fb --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/division.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/division.svg new file mode 100644 index 00000000000..201715a33ae --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/exclusion.svg new file mode 100644 index 00000000000..b3569edeee1 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/fracture.svg new file mode 100644 index 00000000000..33de261fe13 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/intersection.svg new file mode 100644 index 00000000000..73f4c7da4c5 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/original.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/original.svg new file mode 100644 index 00000000000..7d32ceef259 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/dangling-04/union.svg b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/union.svg new file mode 100644 index 00000000000..89fe9b6363a --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/dangling-04/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/establish-ground-truth.sh b/libraries/path-bool/__fixtures__/visual-tests/establish-ground-truth.sh new file mode 100755 index 00000000000..6bdb1ae542d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/establish-ground-truth.sh @@ -0,0 +1,5 @@ +for dir in */; do + for fn in difference division exclusion fracture intersection union; do + cp "${dir}test-results/$fn-ours.svg" "$dir$fn.svg" + done +done diff --git a/libraries/path-bool/__fixtures__/visual-tests/generate-ground-truth.sh b/libraries/path-bool/__fixtures__/visual-tests/generate-ground-truth.sh new file mode 100755 index 00000000000..104b43cf110 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/generate-ground-truth.sh @@ -0,0 +1,10 @@ +INKSCAPE_CMD=inkscape +OPS=(union difference intersection exclusion division fracture) + +for dir in */; do + for op in "${OPS[@]}"; do + if [ ! -e "$dir/$op.svg" ]; then + $INKSCAPE_CMD --actions="select-all; path-$op; export-filename:$dir/$op.svg; export-plain-svg; export-do; file-close" "$dir/original.svg" + fi + done +done diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/difference.svg new file mode 100644 index 00000000000..5cb447ebf22 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/difference.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/division.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/division.svg new file mode 100644 index 00000000000..0e86f1788b2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/division.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/exclusion.svg new file mode 100644 index 00000000000..5cb447ebf22 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/exclusion.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/fracture.svg new file mode 100644 index 00000000000..0e86f1788b2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/fracture.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/intersection.svg new file mode 100644 index 00000000000..45182cc30e0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/intersection.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/original.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/original.svg new file mode 100644 index 00000000000..72e961e1f9e --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/original.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-01/union.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/union.svg new file mode 100644 index 00000000000..7158b230202 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-01/union.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/difference.svg new file mode 100644 index 00000000000..204cfe54a38 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/difference.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/division.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/division.svg new file mode 100644 index 00000000000..e1f74182674 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/division.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/exclusion.svg new file mode 100644 index 00000000000..6b0fa562a48 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/exclusion.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/fracture.svg new file mode 100644 index 00000000000..cbaa7fb7731 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/fracture.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/intersection.svg new file mode 100644 index 00000000000..32fe0d3d67d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/intersection.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/original.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/original.svg new file mode 100644 index 00000000000..9538dcfc924 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/original.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-02/union.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/union.svg new file mode 100644 index 00000000000..0b77e355f4b --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-02/union.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/difference.svg new file mode 100644 index 00000000000..1057abc9acd --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/division.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/division.svg new file mode 100644 index 00000000000..7b029cb335a --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/exclusion.svg new file mode 100644 index 00000000000..1057abc9acd --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/fracture.svg new file mode 100644 index 00000000000..7b029cb335a --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/intersection.svg new file mode 100644 index 00000000000..d129881fea0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/original.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/original.svg new file mode 100644 index 00000000000..68fd8000d04 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-03/union.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/union.svg new file mode 100644 index 00000000000..58b3dc785c3 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-03/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/difference.svg new file mode 100644 index 00000000000..dc5f2f82003 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/difference.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/division.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/division.svg new file mode 100644 index 00000000000..98364868850 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/division.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/exclusion.svg new file mode 100644 index 00000000000..dc5f2f82003 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/exclusion.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/fracture.svg new file mode 100644 index 00000000000..98364868850 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/fracture.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/intersection.svg new file mode 100644 index 00000000000..d796f44cfae --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/intersection.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/original.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/original.svg new file mode 100644 index 00000000000..8289f94c5f3 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/original.svg @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/nesting-04/union.svg b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/union.svg new file mode 100644 index 00000000000..cbed7f6c9e8 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/nesting-04/union.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/difference.svg new file mode 100644 index 00000000000..cfa290bb217 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/difference.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/division.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/division.svg new file mode 100644 index 00000000000..1050988650a --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/division.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/exclusion.svg new file mode 100644 index 00000000000..007f0449820 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/exclusion.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/fracture.svg new file mode 100644 index 00000000000..d05df9c798f --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/fracture.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/intersection.svg new file mode 100644 index 00000000000..6811c73e3f4 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/intersection.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/original.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/original.svg new file mode 100644 index 00000000000..d5a474d2cdd --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/original.svg @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-01/union.svg b/libraries/path-bool/__fixtures__/visual-tests/real-01/union.svg new file mode 100644 index 00000000000..61a8c7c542d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-01/union.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/difference.svg new file mode 100644 index 00000000000..e409ac76818 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/difference.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/division.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/division.svg new file mode 100644 index 00000000000..80cd5747189 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/division.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/exclusion.svg new file mode 100644 index 00000000000..9fa91f4f91d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/exclusion.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/fracture.svg new file mode 100644 index 00000000000..032dc6c4cb0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/fracture.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/intersection.svg new file mode 100644 index 00000000000..e39315671a9 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/intersection.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/original.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/original.svg new file mode 100644 index 00000000000..84ce568e6f0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/original.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/real-02/union.svg b/libraries/path-bool/__fixtures__/visual-tests/real-02/union.svg new file mode 100644 index 00000000000..48a54a3a6e6 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/real-02/union.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/difference.svg new file mode 100644 index 00000000000..96354d58143 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/difference.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/division.svg new file mode 100644 index 00000000000..4fe8382a32d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/division.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/exclusion.svg new file mode 100644 index 00000000000..ad6ee042f8d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/exclusion.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/fracture.svg new file mode 100644 index 00000000000..aad2afb3424 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/fracture.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/intersection.svg new file mode 100644 index 00000000000..488ffda77cb --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/intersection.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/original.svg new file mode 100644 index 00000000000..549185c1c19 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/original.svg @@ -0,0 +1,13 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-01/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-01/union.svg new file mode 100644 index 00000000000..b8aab23f02d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-01/union.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/difference.svg new file mode 100644 index 00000000000..435cbd5a318 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/difference.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/division.svg new file mode 100644 index 00000000000..91396f9ba06 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/division.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/exclusion.svg new file mode 100644 index 00000000000..a9d4317eb86 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/exclusion.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/fracture.svg new file mode 100644 index 00000000000..b93d72e7ce3 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/fracture.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/intersection.svg new file mode 100644 index 00000000000..ce7bb7b8945 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/intersection.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/original.svg new file mode 100644 index 00000000000..808705ac4e6 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/original.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-02/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-02/union.svg new file mode 100644 index 00000000000..95235cd290f --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-02/union.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/difference.svg new file mode 100644 index 00000000000..64f3ea3247f --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/division.svg new file mode 100644 index 00000000000..e345808e6a2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/exclusion.svg new file mode 100644 index 00000000000..aa75604de74 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/fracture.svg new file mode 100644 index 00000000000..e6571d29822 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/intersection.svg new file mode 100644 index 00000000000..41859bf9333 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/original.svg new file mode 100644 index 00000000000..719cd06f3bb --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/original.svg @@ -0,0 +1,20 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-03/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-03/union.svg new file mode 100644 index 00000000000..9f15c2f1132 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-03/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/difference.svg new file mode 100644 index 00000000000..44633ab8b07 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/difference.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/division.svg new file mode 100644 index 00000000000..5c9452e17aa --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/division.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/exclusion.svg new file mode 100644 index 00000000000..0eb72069eba --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/exclusion.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/fracture.svg new file mode 100644 index 00000000000..b01da51aa35 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/fracture.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/intersection.svg new file mode 100644 index 00000000000..8a74d3aa445 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/intersection.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/original.svg new file mode 100644 index 00000000000..175b08d0837 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/original.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-04/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-04/union.svg new file mode 100644 index 00000000000..901db682f44 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-04/union.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/difference.svg new file mode 100644 index 00000000000..c8ced7faddb --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/division.svg new file mode 100644 index 00000000000..ea1e621a5a9 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/exclusion.svg new file mode 100644 index 00000000000..85ce148dd63 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/fracture.svg new file mode 100644 index 00000000000..d4aece55f1b --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/intersection.svg new file mode 100644 index 00000000000..7dd6c44e1e2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/original.svg new file mode 100644 index 00000000000..70d133b2d8d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/original.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-05/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-05/union.svg new file mode 100644 index 00000000000..5b434a40935 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-05/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/difference.svg new file mode 100644 index 00000000000..d7e318710f6 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/division.svg new file mode 100644 index 00000000000..d7e318710f6 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/exclusion.svg new file mode 100644 index 00000000000..c1b696c41bf --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/fracture.svg new file mode 100644 index 00000000000..e85812ca638 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/intersection.svg new file mode 100644 index 00000000000..6db8be97234 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/original.svg new file mode 100644 index 00000000000..d074477dbc4 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/original.svg @@ -0,0 +1,17 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-06/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-06/union.svg new file mode 100644 index 00000000000..c1b696c41bf --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-06/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/difference.svg new file mode 100644 index 00000000000..bf204563c3c --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/division.svg new file mode 100644 index 00000000000..db0eb8d0de2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/exclusion.svg new file mode 100644 index 00000000000..10010ca56dd --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/fracture.svg new file mode 100644 index 00000000000..12398a8d41f --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/intersection.svg new file mode 100644 index 00000000000..977056e673f --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/original.svg new file mode 100644 index 00000000000..c54e7978efe --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-07/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-07/union.svg new file mode 100644 index 00000000000..4cbea40eae4 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-07/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/difference.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/difference.svg new file mode 100644 index 00000000000..879a7f1d1a0 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/difference.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/division.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/division.svg new file mode 100644 index 00000000000..088af61ea4e --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/division.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/exclusion.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/exclusion.svg new file mode 100644 index 00000000000..633bca9afdc --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/exclusion.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/fracture.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/fracture.svg new file mode 100644 index 00000000000..61206af95c3 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/fracture.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/intersection.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/intersection.svg new file mode 100644 index 00000000000..f098ab7a92d --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/intersection.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/original.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/original.svg new file mode 100644 index 00000000000..b6f46719a6b --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/original.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/simple-08/union.svg b/libraries/path-bool/__fixtures__/visual-tests/simple-08/union.svg new file mode 100644 index 00000000000..2060282a06c --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/simple-08/union.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/libraries/path-bool/__fixtures__/visual-tests/template.svg b/libraries/path-bool/__fixtures__/visual-tests/template.svg new file mode 100644 index 00000000000..909afa291e2 --- /dev/null +++ b/libraries/path-bool/__fixtures__/visual-tests/template.svg @@ -0,0 +1,41 @@ + + + + + + + + diff --git a/libraries/path-bool/flake.nix b/libraries/path-bool/flake.nix new file mode 100644 index 00000000000..88be72b766b --- /dev/null +++ b/libraries/path-bool/flake.nix @@ -0,0 +1,48 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + rust-overlay = { + url = "github:oxalica/rust-overlay"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; + }; + }; + + outputs = {self, nixpkgs, flake-utils, rust-overlay }: + flake-utils.lib.eachDefaultSystem ( system: + let + overlays = [ (import rust-overlay) ]; + pkgs = import nixpkgs { + inherit system overlays; + }; + toolchain = pkgs.rust-bin.stable.latest.default.override { + extensions = ["rust-src" "clippy" "rust-analyzer"]; + }; + buildInputs = with pkgs; [ + llvm + ]; + in { + devShells.default = pkgs.mkShell { + stdenv = pkgs.clangStdenv; + packages = with pkgs; [ + bacon + valgrind + kcachegrind + cargo-flamegraph + ]; + nativeBuildInputs = with pkgs; [ + lld + toolchain + llvm + cargo + ]; + inherit buildInputs; + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath buildInputs; + }; + } + ); +} diff --git a/libraries/path-bool/shell.nix b/libraries/path-bool/shell.nix new file mode 100644 index 00000000000..5feb1012db5 --- /dev/null +++ b/libraries/path-bool/shell.nix @@ -0,0 +1,81 @@ +# This is a helper file for people using NixOS as their operating system. +# If you don't know what this file does, you can safely ignore it. + +# If you are using Nix as your package manager, you can run 'nix-shell' +# in the root directory of the project and Nix will open a bash shell +# with all the packages needed to build and run Graphite installed. +# A shell.nix file is used in the Nix ecosystem to define a development +# environment with specific dependencies. When you enter a Nix shell using +# this file, it ensures that all the specified tools and libraries are +# available regardless of the host system's configuration. This provides +# a reproducible development environment across different machines and developers. + +# You can enter the Nix shell and run Graphite like normal with: +# > npm start +# Or you can run it like this without needing to first enter the Nix shell: +# > nix-shell --command "npm start" + +let + # Get oxalica's Rust overlay for better Rust integration + rust-overlay-source = builtins.fetchGit { + url = "https://github.com/oxalica/rust-overlay"; + }; + + # Import it so we can use it in Nix + rust-overlay = import rust-overlay-source; + + # Import system packages overlaid with the Rust overlay + pkgs = import { + overlays = [ rust-overlay ]; + }; + + # Define the rustc we need + rustc-wasm = pkgs.rust-bin.stable.latest.default.override { + targets = [ "wasm32-unknown-unknown" ]; + # wasm-pack needs this + extensions = [ "rust-src" "rust-analyzer" "clippy"]; + }; +in + # Make a shell with the dependencies we need + pkgs.mkShell { + packages = with pkgs; [ + rustc-wasm + nodejs + cargo + cargo-watch + cargo-nextest + cargo-expand + wasm-pack + binaryen + wasm-bindgen-cli + vulkan-loader + libxkbcommon + llvm + gcc-unwrapped.lib + llvmPackages.libcxxStdenv + pkg-config + # used for profiling + gnuplot + samply + cargo-flamegraph + + # For Tauri + openssl + glib + gtk3 + libsoup + webkitgtk + + # For Raw-rs tests + libraw + + # Use Mold as a linker + mold + ]; + + # Hacky way to run Cargo through Mold + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [pkgs.openssl pkgs.vulkan-loader pkgs.libxkbcommon pkgs.llvmPackages.libcxxStdenv pkgs.gcc-unwrapped.lib pkgs.llvm pkgs.libraw]; + shellHook = '' + alias cargo='mold --run cargo' + ''; + } diff --git a/libraries/path-bool/src/aabb.rs b/libraries/path-bool/src/aabb.rs new file mode 100644 index 00000000000..1a83a5695ff --- /dev/null +++ b/libraries/path-bool/src/aabb.rs @@ -0,0 +1,75 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::vector::Vector; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub struct AABB { + pub top: f64, + pub right: f64, + pub bottom: f64, + pub left: f64, +} + +pub fn bounding_box_contains_point(bounding_box: &AABB, point: Vector) -> bool { + point.x >= bounding_box.left + && point.x <= bounding_box.right + && point.y >= bounding_box.top + && point.y <= bounding_box.bottom +} + +pub fn bounding_boxes_overlap(a: &AABB, b: &AABB) -> bool { + a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom +} + +pub fn merge_bounding_boxes(a: Option, b: &AABB) -> AABB { + match a { + Some(a) => AABB { + top: a.top.min(b.top), + right: a.right.max(b.right), + bottom: a.bottom.max(b.bottom), + left: a.left.min(b.left), + }, + None => *b, + } +} + +pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AABB { + match bounding_box { + Some(bb) => AABB { + top: bb.top.min(point.y), + right: bb.right.max(point.x), + bottom: bb.bottom.max(point.y), + left: bb.left.min(point.x), + }, + None => AABB { + top: point.y, + right: point.x, + bottom: point.y, + left: point.x, + }, + } +} + +pub fn bounding_box_max_extent(bounding_box: &AABB) -> f64 { + (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) +} + +pub fn bounding_box_around_point(point: Vector, padding: f64) -> AABB { + AABB { + top: point.y - padding, + right: point.x + padding, + bottom: point.y + padding, + left: point.x - padding, + } +} + +pub fn expand_bounding_box(bounding_box: &AABB, padding: f64) -> AABB { + AABB { + top: bounding_box.top - padding, + right: bounding_box.right + padding, + bottom: bounding_box.bottom + padding, + left: bounding_box.left - padding, + } +} diff --git a/libraries/path-bool/src/epsilons.rs b/libraries/path-bool/src/epsilons.rs new file mode 100644 index 00000000000..840daded205 --- /dev/null +++ b/libraries/path-bool/src/epsilons.rs @@ -0,0 +1,10 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +#[derive(Clone, Copy, Debug)] +pub struct Epsilons { + pub point: f64, + pub linear: f64, + pub param: f64, +} diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs new file mode 100644 index 00000000000..f5e6dbb6bee --- /dev/null +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -0,0 +1,187 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AABB}; +use crate::epsilons::Epsilons; +use crate::line_segment::{line_segment_intersection, line_segments_intersect}; +use crate::line_segment_aabb::line_segment_aabb_intersect; +use crate::math::lerp; +use crate::path_segment::{path_segment_bounding_box, split_segment_at, PathSegment}; +use crate::vector::{vectors_equal, Vector}; + +#[derive(Clone)] +struct IntersectionSegment { + seg: PathSegment, + start_param: f64, + end_param: f64, + bounding_box: AABB, +} + +fn subdivide_intersection_segment(int_seg: &IntersectionSegment) -> [IntersectionSegment; 2] { + let (seg0, seg1) = split_segment_at(&int_seg.seg, 0.5); + let mid_param = (int_seg.start_param + int_seg.end_param) / 2.0; + [ + IntersectionSegment { + seg: seg0.clone(), + start_param: int_seg.start_param, + end_param: mid_param, + bounding_box: path_segment_bounding_box(&seg0), + }, + IntersectionSegment { + seg: seg1.clone(), + start_param: mid_param, + end_param: int_seg.end_param, + bounding_box: path_segment_bounding_box(&seg1), + }, + ] +} + +fn path_segment_to_line_segment(seg: &PathSegment) -> [Vector; 2] { + match seg { + PathSegment::Line(start, end) => [*start, *end], + PathSegment::Cubic(start, _, _, end) => [*start, *end], + PathSegment::Quadratic(start, _, end) => [*start, *end], + PathSegment::Arc(start, _, _, _, _, _, end) => [*start, *end], + } +} + +fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &IntersectionSegment) -> bool { + match (&seg0.seg, &seg1.seg) { + (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { + line_segments_intersect([*start0, *end0], [*start1, *end1], 1e-6) // TODO: configurable + } + (PathSegment::Line(start, end), _) => { + line_segment_aabb_intersect([*start, *end], &seg1.bounding_box) + } + (_, PathSegment::Line(start, end)) => { + line_segment_aabb_intersect([*start, *end], &seg0.bounding_box) + } + _ => bounding_boxes_overlap(&seg0.bounding_box, &seg1.bounding_box), + } +} + +pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { + match (seg0.clone(), seg1.clone()) { + (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { + vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon) + } + (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { + vectors_equal(p00, p10, point_epsilon) + && vectors_equal(p01, p11, point_epsilon) + && vectors_equal(p02, p12, point_epsilon) + && vectors_equal(p03, p13, point_epsilon) + } + (PathSegment::Quadratic(p00, p01, p02), PathSegment::Quadratic(p10, p11, p12)) => { + vectors_equal(p00, p10, point_epsilon) + && vectors_equal(p01, p11, point_epsilon) + && vectors_equal(p02, p12, point_epsilon) + } + ( + PathSegment::Arc(p00, rx0, ry0, angle0, large_arc0, sweep0, p01), + PathSegment::Arc(p10, rx1, ry1, angle1, large_arc1, sweep1, p11), + ) => { + vectors_equal(p00, p10, point_epsilon) && + (rx0 - rx1).abs() < point_epsilon && + (ry0 - ry1).abs() < point_epsilon && + (angle0 - angle1).abs() < point_epsilon && // TODO: Phi can be anything if rx = ry. Also, handle rotations by Pi/2. + large_arc0 == large_arc1 && + sweep0 == sweep1 && + vectors_equal(p01, p11, point_epsilon) + } + _ => false, + } +} + +pub fn path_segment_intersection( + seg0: &PathSegment, + seg1: &PathSegment, + endpoints: bool, + eps: &Epsilons, +) -> Vec<[f64; 2]> { + if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { + if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { + if !endpoints + && (st.0 < eps.param || st.0 > 1.0 - eps.param) + && (st.1 < eps.param || st.1 > 1.0 - eps.param) + { + return vec![]; + } + return vec![st.into()]; + } + } + + // https://math.stackexchange.com/questions/20321/how-can-i-tell-when-two-cubic-b%C3%A9zier-curves-intersect + + let mut pairs = vec![( + IntersectionSegment { + seg: seg0.clone(), + start_param: 0.0, + end_param: 1.0, + bounding_box: path_segment_bounding_box(seg0), + }, + IntersectionSegment { + seg: seg1.clone(), + start_param: 0.0, + end_param: 1.0, + bounding_box: path_segment_bounding_box(seg1), + }, + )]; + + let mut params = Vec::new(); + + while !pairs.is_empty() { + let mut next_pairs = Vec::new(); + + for (seg0, seg1) in pairs { + if segments_equal(&seg0.seg, &seg1.seg, eps.point) { + // TODO: move this outside of this loop? + continue; // TODO: what to do? + } + + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; + let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; + + if is_linear0 && is_linear1 { + let line_segment0 = path_segment_to_line_segment(&seg0.seg); + let line_segment1 = path_segment_to_line_segment(&seg1.seg); + if let Some(st) = line_segment_intersection(line_segment0, line_segment1, eps.param) + { + params.push([ + lerp(seg0.start_param, seg0.end_param, st.0), + lerp(seg1.start_param, seg1.end_param, st.1), + ]); + } + } else { + let subdivided0 = if is_linear0 { + vec![seg0] + } else { + subdivide_intersection_segment(&seg0).to_vec() + }; + let subdivided1 = if is_linear1 { + vec![seg1] + } else { + subdivide_intersection_segment(&seg1).to_vec() + }; + + for seg0 in &subdivided0 { + for seg1 in &subdivided1 { + if intersection_segments_overlap(seg0, seg1) { + next_pairs.push((seg0.clone(), seg1.clone())); + } + } + } + } + } + + pairs = next_pairs; + } + + if !endpoints { + params.retain(|[s, t]| { + (s > &eps.param && s < &(1.0 - eps.param)) || (t > &eps.param && t < &(1.0 - eps.param)) + }); + } + + params +} diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs new file mode 100644 index 00000000000..4109a76bb31 --- /dev/null +++ b/libraries/path-bool/src/lib.rs @@ -0,0 +1,109 @@ +mod aabb; +mod epsilons; +mod intersection_path_segment; +mod line_segment; +mod line_segment_aabb; +mod math; +mod path; +pub mod path_boolean; +mod path_command; +mod path_cubic_segment_self_intersection; +mod path_data; +mod path_segment; +mod quad_tree; +mod vector; +#[cfg(test)] +mod visual_tests; + +#[cfg(test)] +mod test { + use crate::{ + path_boolean::{self, FillRule, PathBooleanOperation}, + path_data::{path_from_path_data, path_to_path_data}, + }; + use path_boolean::path_boolean; + + #[test] + fn square() { + // let a = path_from_path_data( + // "M 39,20 A 19,19 0 0 1 20,39 19,19 0 0 1 1,20 19,19 0 0 1 20,1 19,19 0 0 1 39,20 Z", + // ); + // let b = path_from_path_data( + // "M 47,28 A 19,19 0 0 1 28,47 19,19 0 0 1 9,28 19,19 0 0 1 28,9 19,19 0 0 1 47,28 Z", + // ); + let a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); + let b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); + // let a = path_from_path_data("M 0 0 L 10 0 L 5 10 Z"); + // let b = path_from_path_data("M 0 5 L 10 5 L 5 15 Z"); + let union = path_boolean( + &a, + path_boolean::FillRule::NonZero, + &b, + path_boolean::FillRule::NonZero, + path_boolean::PathBooleanOperation::Intersection, + ); + dbg!(path_to_path_data(&union[0], 0.001)); + // panic!(); + } + + #[test] + fn nesting_01() { + let a = path_from_path_data( + "M 47,24 A 23,23 0 0 1 24,47 23,23 0 0 1 1,24 23,23 0 0 1 24,1 23,23 0 0 1 47,24 Z", + ); + let b = path_from_path_data("M 37.909023,24 A 13.909023,13.909023 0 0 1 24,37.909023 13.909023,13.909023 0 0 1 10.090978,24 13.909023,13.909023 0 0 1 24,10.090978 13.909023,13.909023 0 0 1 37.909023,24 Z"); + let union = path_boolean( + &a, + path_boolean::FillRule::NonZero, + &b, + path_boolean::FillRule::NonZero, + path_boolean::PathBooleanOperation::Union, + ); + dbg!(path_to_path_data(&union[0], 0.001)); + } + #[test] + fn nesting_02() { + let a = path_from_path_data( + "M 0.99999994,31.334457 C 122.61195,71.81859 -79.025816,-5.5803326 47,32.253367 V 46.999996 H 0.99999994 Z", + ); + let b = path_from_path_data("m 25.797222,29.08718 c 0,1.292706 -1.047946,2.340652 -2.340652,2.340652 -1.292707,0 -2.340652,-1.047946 -2.340652,-2.340652 0,-1.292707 1.047945,-2.340652 2.340652,-2.340652 1.292706,0 2.340652,1.047945 2.340652,2.340652 z M 7.5851073,28.332212 c 1e-7,1.292706 -1.0479456,2.340652 -2.3406521,2.340652 -1.2927063,-1e-6 -2.3406518,-1.047946 -2.3406517,-2.340652 -10e-8,-1.292707 1.0479454,-2.340652 2.3406517,-2.340652 1.2927065,-1e-6 2.3406522,1.047945 2.3406521,2.340652 z"); + + let result = path_boolean( + &a, + FillRule::NonZero, + &b, + FillRule::NonZero, + PathBooleanOperation::Union, + ); + + // Add assertions here based on expected results + assert_eq!( + result.len(), + 1, + "Expected 1 resulting path for Union operation" + ); + // Add more specific assertions about the resulting path if needed + } + #[test] + fn simple_07() { + let a = path_from_path_data("M 37.671452,24 C 52.46888,31.142429 42.887716,37.358779 24,37.671452 16.4505,37.796429 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 6.871598,10.389295 13.671452,13.671452 z", + ); + let b = path_from_path_data("M 37.671452,24 C 33.698699,53.634887 29.50935,49.018306 24,37.671452 20.7021,30.879219 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 14.674677,6.187863 13.671452,13.671452 z"); + + let result = path_boolean( + &a, + FillRule::NonZero, + &b, + FillRule::NonZero, + PathBooleanOperation::Union, + ); + + // Add assertions here based on expected results + assert_eq!( + result.len(), + 1, + "Expected 1 resulting path for Union operation" + ); + // Add more specific assertions about the resulting path if needed + } +} diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/line_segment.rs new file mode 100644 index 00000000000..6a511f9a2b5 --- /dev/null +++ b/libraries/path-bool/src/line_segment.rs @@ -0,0 +1,43 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::vector::Vector; + +pub type LineSegment = [Vector; 2]; + +const COLLINEAR_EPS: f64 = f64::EPSILON * 64.0; + +pub fn line_segment_intersection( + [p1, p2]: LineSegment, + [p3, p4]: LineSegment, + eps: f64, +) -> Option<(f64, f64)> { + // https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments + + let a1 = p2.x - p1.x; + let b1 = p3.x - p4.x; + let c1 = p3.x - p1.x; + let a2 = p2.y - p1.y; + let b2 = p3.y - p4.y; + let c2 = p3.y - p1.y; + + let denom = a1 * b2 - a2 * b1; + + if denom.abs() < COLLINEAR_EPS { + return None; + } + + let s = (c1 * b2 - c2 * b1) / denom; + let t = (a1 * c2 - a2 * c1) / denom; + + if (-eps..=1.0 + eps).contains(&s) && (-eps..=1.0 + eps).contains(&t) { + Some((s, t)) + } else { + None + } +} + +pub fn line_segments_intersect(seg1: LineSegment, seg2: LineSegment, eps: f64) -> bool { + line_segment_intersection(seg1, seg2, eps).is_some() +} diff --git a/libraries/path-bool/src/line_segment_aabb.rs b/libraries/path-bool/src/line_segment_aabb.rs new file mode 100644 index 00000000000..2238ef9a17c --- /dev/null +++ b/libraries/path-bool/src/line_segment_aabb.rs @@ -0,0 +1,97 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::aabb::AABB; +use crate::line_segment::LineSegment; + +const INSIDE: u8 = 0; +const LEFT: u8 = 1; +const RIGHT: u8 = 1 << 1; +const BOTTOM: u8 = 1 << 2; +const TOP: u8 = 1 << 3; + +fn out_code(x: f64, y: f64, bounding_box: &AABB) -> u8 { + let mut code = INSIDE; + + if x < bounding_box.left { + code |= LEFT; + } else if x > bounding_box.right { + code |= RIGHT; + } + + if y < bounding_box.top { + code |= BOTTOM; + } else if y > bounding_box.bottom { + code |= TOP; + } + + code +} + +pub fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AABB) -> bool { + let [mut p0, mut p1] = seg; + + let mut outcode0 = out_code(p0.x, p0.y, bounding_box); + let mut outcode1 = out_code(p1.x, p1.y, bounding_box); + + loop { + if (outcode0 | outcode1) == 0 { + // bitwise OR is 0: both points inside window; trivially accept and exit loop + return true; + } else if (outcode0 & outcode1) != 0 { + // bitwise AND is not 0: both points share an outside zone (LEFT, RIGHT, TOP, + // or BOTTOM), so both must be outside window; exit loop (accept is false) + return false; + } else { + // failed both tests, so calculate the line segment to clip + // from an outside point to an intersection with clip edge + let mut x = 0.0; + let mut y = 0.0; + + // At least one endpoint is outside the clip rectangle; pick it. + let outcode_out = if outcode1 > outcode0 { + outcode1 + } else { + outcode0 + }; + + // Now find the intersection point; + // use formulas: + // slope = (y1 - y0) / (x1 - x0) + // x = x0 + (1 / slope) * (ym - y0), where ym is ymin or ymax + // y = y0 + slope * (xm - x0), where xm is xmin or xmax + // No need to worry about divide-by-zero because, in each case, the + // outcode bit being tested guarantees the denominator is non-zero + if (outcode_out & TOP) != 0 { + // point is above the clip window + x = p0.x + (p1.x - p0.x) * (bounding_box.bottom - p0.y) / (p1.y - p0.y); + y = bounding_box.bottom; + } else if (outcode_out & BOTTOM) != 0 { + // point is below the clip window + x = p0.x + (p1.x - p0.x) * (bounding_box.top - p0.y) / (p1.y - p0.y); + y = bounding_box.top; + } else if (outcode_out & RIGHT) != 0 { + // point is to the right of clip window + y = p0.y + (p1.y - p0.y) * (bounding_box.right - p0.x) / (p1.x - p0.x); + x = bounding_box.right; + } else if (outcode_out & LEFT) != 0 { + // point is to the left of clip window + y = p0.y + (p1.y - p0.y) * (bounding_box.left - p0.x) / (p1.x - p0.x); + x = bounding_box.left; + } + + // Now we move outside point to intersection point to clip + // and get ready for next pass. + if outcode_out == outcode0 { + p0.x = x; + p0.y = y; + outcode0 = out_code(p0.x, p0.y, bounding_box); + } else { + p1.x = x; + p1.y = y; + outcode1 = out_code(p1.x, p1.y, bounding_box); + } + } + } +} diff --git a/libraries/path-bool/src/math.rs b/libraries/path-bool/src/math.rs new file mode 100644 index 00000000000..153ddadc14a --- /dev/null +++ b/libraries/path-bool/src/math.rs @@ -0,0 +1,37 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +// TODO(@TrueDoctor) check math + +use crate::vector::Vector; +pub use std::f64::consts::{PI, TAU}; + +pub fn lin_map(value: f64, in_min: f64, in_max: f64, out_min: f64, out_max: f64) -> f64 { + ((value - in_min) / (in_max - in_min)) * (out_max - out_min) + out_min +} + +pub fn lerp(a: f64, b: f64, t: f64) -> f64 { + a + (b - a) * t +} + +pub fn rad2deg(rad: f64) -> f64 { + (rad / PI) * 180.0 +} + +pub fn deg2rad(deg: f64) -> f64 { + (deg / 180.0) * PI +} + +pub fn vector_angle(u: Vector, v: Vector) -> f64 { + const EPS: f64 = 1e-12; + + let sign = u.x * v.y - u.y * v.x; + + if sign.abs() < EPS && (u + v).length_squared() < EPS * EPS { + // TODO: u can be scaled + return PI; + } + + sign.signum() * (u.dot(v) / (u.length() * v.length())).acos() +} diff --git a/libraries/path-bool/src/path.rs b/libraries/path-bool/src/path.rs new file mode 100644 index 00000000000..8cd5d6824dc --- /dev/null +++ b/libraries/path-bool/src/path.rs @@ -0,0 +1,146 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use glam::DVec2; + +use crate::path_command::{to_absolute_commands, AbsolutePathCommand, PathCommand}; +use crate::path_segment::PathSegment; +use crate::vector::{vectors_equal, Vector}; + +pub type Path = Vec; + +fn reflect_control_point(point: Vector, control_point: Vector) -> Vector { + point * 2.0 - control_point +} + +pub fn path_from_commands(commands: I) -> impl Iterator +where + I: IntoIterator, +{ + let mut first_point: Option = None; + let mut last_point: Option = None; + let mut last_control_point: Option = None; + + to_absolute_commands(commands).filter_map(move |cmd| match cmd { + AbsolutePathCommand::M(point) => { + last_point = Some(point); + first_point = Some(point); + last_control_point = None; + None + } + AbsolutePathCommand::L(point) => { + let start = last_point.unwrap(); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::H(x) => { + let start = last_point.unwrap(); + let point = DVec2::new(x, start.y); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::V(y) => { + let start = last_point.unwrap(); + let point = DVec2::new(start.x, y); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::C(c1, c2, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = Some(c2); + Some(PathSegment::Cubic(start, c1, c2, end)) + } + AbsolutePathCommand::S(c2, end) => { + let start = last_point.unwrap(); + let c1 = reflect_control_point(start, last_control_point.unwrap_or(start)); + last_point = Some(end); + last_control_point = Some(c2); + Some(PathSegment::Cubic(start, c1, c2, end)) + } + AbsolutePathCommand::Q(c, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = Some(c); + Some(PathSegment::Quadratic(start, c, end)) + } + AbsolutePathCommand::T(end) => { + let start = last_point.unwrap(); + let c = reflect_control_point(start, last_control_point.unwrap_or(start)); + last_point = Some(end); + last_control_point = Some(c); + Some(PathSegment::Quadratic(start, c, end)) + } + AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = None; + Some(PathSegment::Arc( + start, + rx, + ry, + x_axis_rotation, + large_arc_flag, + sweep_flag, + end, + )) + } + AbsolutePathCommand::Z => { + let start = last_point.unwrap(); + let end = first_point.unwrap(); + last_point = Some(end); + last_control_point = None; + Some(PathSegment::Line(start, end)) + } + }) +} + +pub fn path_to_commands<'a, I>(segments: I, eps: f64) -> impl Iterator + 'a +where + I: IntoIterator + 'a, +{ + let mut last_point: Option = None; + + segments.into_iter().flat_map(move |seg| { + let start = crate::path_segment::get_start_point(seg); + let mut commands = Vec::new(); + + if last_point.map_or(true, |lp| !vectors_equal(start, lp, eps)) { + commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); + } + + match seg { + PathSegment::Line(_, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::L(*end))); + last_point = Some(*end); + } + PathSegment::Cubic(_, c1, c2, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::C( + *c1, *c2, *end, + ))); + last_point = Some(*end); + } + PathSegment::Quadratic(_, c, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::Q(*c, *end))); + last_point = Some(*end); + } + PathSegment::Arc(_, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::A( + *rx, + *ry, + *x_axis_rotation, + *large_arc_flag, + *sweep_flag, + *end, + ))); + last_point = Some(*end); + } + } + + commands + }) +} diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs new file mode 100644 index 00000000000..c5ab2b4207e --- /dev/null +++ b/libraries/path-bool/src/path_boolean.rs @@ -0,0 +1,2395 @@ +use slotmap::{new_key_type, SlotMap}; + +new_key_type! { + pub struct MajorVertexKey; + pub struct MajorEdgeKey; + pub struct MinorVertexKey; + pub struct MinorEdgeKey; + pub struct DualVertexKey; + pub struct DualEdgeKey; +} +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::aabb::{bounding_box_around_point, bounding_box_max_extent, merge_bounding_boxes, AABB}; +use crate::epsilons::Epsilons; +use crate::intersection_path_segment::{path_segment_intersection, segments_equal}; +use crate::path::Path; +use crate::path_cubic_segment_self_intersection::path_cubic_segment_self_intersection; +use crate::path_data::path_to_path_data; +use crate::path_segment::{ + get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, + sample_path_segment_at, split_segment_at, PathSegment, +}; +use crate::quad_tree::QuadTree; +use crate::vector::{vectors_equal, Vector}; +use std::collections::{HashMap, HashSet}; +use std::fmt::Write; + +#[derive(Debug, Clone, Copy)] +pub enum PathBooleanOperation { + Union, + Difference, + Intersection, + Exclusion, + Division, + Fracture, +} + +#[derive(Debug, Clone, Copy)] +pub enum FillRule { + NonZero, + EvenOdd, +} + +const INTERSECTION_TREE_DEPTH: usize = 8; +const POINT_TREE_DEPTH: usize = 8; + +const EPS: Epsilons = Epsilons { + point: 1e-6, + linear: 1e-4, + param: 1e-8, +}; + +type MajorGraphEdgeStage1 = (PathSegment, u8); +type MajorGraphEdgeStage2 = (PathSegment, u8, AABB); + +#[derive(Debug, Clone)] +struct MajorGraphEdge { + seg: PathSegment, + parent: u8, + incident_vertices: [MajorVertexKey; 2], + direction_flag: Direction, + twin: Option, + bounding_box: AABB, +} + +#[derive(Debug, Clone, Default)] +struct MajorGraphVertex { + point: Vector, + outgoing_edges: Vec, +} + +#[derive(Debug, Clone)] +struct MajorGraph { + edges: SlotMap, + vertices: SlotMap, +} + +#[derive(Debug, Clone, PartialEq)] +struct MinorGraphEdge { + segments: Vec, + parent: u8, + incident_vertices: [MinorVertexKey; 2], + direction_flag: Direction, + twin: Option, +} + +impl MinorGraphEdge { + fn format_path(&self) -> String { + let mut output = String::new(); + let mut segments = self.segments.clone(); + if self.direction_flag.backwards() { + // segments.reverse(); + } + for segment in segments.into_iter() { + match segment { + PathSegment::Line(mut start, mut end) => { + if self.direction_flag.backwards() { + (end, start) = (start, end); + } + write!( + &mut output, + "{:.1},{:.1}-{:.1},{:.1} ", + start.x, start.y, end.x, end.y + ) + } + x => write!(&mut output, "{:?}", x), + }; + } + output + } +} + +#[derive(Debug, Clone, Default)] +struct MinorGraphVertex { + outgoing_edges: Vec, +} + +#[derive(Debug, Clone)] +struct MinorGraphCycle { + segments: Vec, + parent: u8, + direction_flag: Direction, +} + +#[derive(Debug, Clone)] +struct MinorGraph { + edges: SlotMap, + vertices: SlotMap, + cycles: Vec, +} + +#[derive(Debug, Clone, PartialEq)] +struct DualGraphHalfEdge { + segments: Vec, + parent: u8, + incident_vertex: DualVertexKey, + direction_flag: Direction, + twin: Option, +} + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +struct DualGraphVertex { + incident_edges: Vec, +} + +#[derive(Debug, Clone)] +struct DualGraphComponent { + edges: Vec, + vertices: Vec, + outer_face: Option, +} + +#[derive(Debug, Clone)] +struct DualGraph { + components: Vec, + edges: SlotMap, + vertices: SlotMap, +} + +#[derive(Debug, Clone)] +struct NestingTree { + component: DualGraphComponent, + outgoing_edges: HashMap>, +} + +fn major_graph_to_dot(graph: &MajorGraph) -> String { + let mut dot = String::from("digraph {\n"); + for (vertex_key, vertex) in &graph.vertices { + dot.push_str(&format!( + " {:?} [label=\"{:.1},{:.1}\"]\n", + (vertex_key.0.as_ffi() & 0xFF) - 1, + vertex.point.x, + vertex.point.y + )); + } + for (edge_key, edge) in &graph.edges { + dot.push_str(&format!( + " {:?} -> {:?}: {:0b}\n", + (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + edge.parent + )); + } + dot.push_str("}\n"); + dot +} + +fn minor_graph_to_dot(edges: &SlotMap) -> String { + let mut dot = String::from("digraph {\n"); + for (edge_key, edge) in edges { + dot.push_str(&format!( + " {:?} -> {:?}: {:0b}\n", + (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + edge.parent + )); + } + dot.push_str("}\n"); + dot +} + +fn dual_graph_to_dot( + components: &[DualGraphComponent], + edges: &SlotMap, +) -> String { + let mut dot = String::from("strict graph {\n"); + for component in components { + for &edge_key in &component.edges { + let edge = &edges[edge_key]; + dot.push_str(&format!( + " {:?} -- {:?}\n", + (edge.incident_vertex.0.as_ffi() & 0xFF) - 1, + (edge.twin.unwrap().0.as_ffi() & 0xFF) - 1 + )); + } + } + dot.push_str("}\n"); + dot +} + +fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> MajorGraphEdgeStage1 { + move |seg| (*seg, parent) +} + +fn split_at_self_intersections(edges: &mut Vec) { + let mut new_edges = Vec::new(); + for (seg, parent) in edges.iter_mut() { + if let PathSegment::Cubic(..) = seg { + if let Some(intersection) = path_cubic_segment_self_intersection(seg) { + let mut intersection = intersection; + if intersection[0] > intersection[1] { + intersection.swap(0, 1); + } + let [t1, t2] = intersection; + if (t1 - t2).abs() < EPS.param { + let (seg1, seg2) = split_segment_at(seg, t1); + *seg = seg1; + new_edges.push((seg2, *parent)); + } else { + let (seg1, tmp_seg) = split_segment_at(seg, t1); + let (seg2, seg3) = split_segment_at(&tmp_seg, (t2 - t1) / (1.0 - t1)); + *seg = seg1; + new_edges.push((seg2, *parent)); + new_edges.push((seg3, *parent)); + } + } + } + } + edges.extend(new_edges); +} + +fn split_at_intersections( + edges: &[MajorGraphEdgeStage1], +) -> (Vec, Option) { + // println!("Starting split_at_intersections with {} edges", edges.len()); + + // Step 1: Add bounding boxes to edges + let with_bounding_box: Vec = edges + .iter() + .map(|(seg, parent)| (*seg, *parent, path_segment_bounding_box(seg))) + .collect(); + // println!("Added bounding boxes to edges"); + + // Step 2: Calculate total bounding box + let total_bounding_box = with_bounding_box + .iter() + .fold(None, |acc, (_, _, bb)| Some(merge_bounding_boxes(acc, bb))); + + let total_bounding_box = match total_bounding_box { + Some(bb) => bb, + None => return (Vec::new(), None), + }; + // println!("Calculated total bounding box: {:?}", total_bounding_box); + + // Step 3: Create edge tree for efficient intersection checks + let mut edge_tree = QuadTree::new(total_bounding_box, INTERSECTION_TREE_DEPTH, 8); + + let mut splits_per_edge: HashMap> = HashMap::new(); + + // Helper function to add split + fn add_split(splits_per_edge: &mut HashMap>, i: usize, t: f64) { + splits_per_edge.entry(i).or_default().push(t); + // println!("Added split for edge {} at t={}", i, t); + } + + // Step 4: Find intersections and record split points + for i in 0..with_bounding_box.len() { + let edge = &with_bounding_box[i]; + let candidates = edge_tree.find(&edge.2); + // println!("Edge {}: Found {} candidates", i, candidates.len()); + for &j in &candidates { + let candidate: &(_, _) = &edges[j]; + let include_endpoints = edge.1 != candidate.1 + || !(vectors_equal( + get_end_point(&candidate.0), + get_start_point(&edge.0), + EPS.point, + ) || vectors_equal( + get_start_point(&candidate.0), + get_end_point(&edge.0), + EPS.point, + )); + let intersection = + path_segment_intersection(&edge.0, &candidate.0, include_endpoints, &EPS); + // println!( + // " Checking intersection between edge {} and {}: {:?}", + // i, j, intersection + // ); + for [t0, t1] in intersection { + add_split(&mut splits_per_edge, i, t0); + add_split(&mut splits_per_edge, j, t1); + } + } + edge_tree.insert(edge.2, i); + } + + // println!("Splits per edge: {:?}", splits_per_edge); + + // Step 5: Apply splits to create new edges + let mut new_edges = Vec::new(); + + for (i, (seg, parent, _)) in with_bounding_box.into_iter().enumerate() { + // println!("Processing edge {}", i); + if let Some(splits) = splits_per_edge.get(&i) { + let mut splits = splits.clone(); + splits.sort_by(|a, b| a.partial_cmp(b).unwrap()); + // println!(" Sorted splits: {:?}", splits); + let mut tmp_seg = seg; + let mut prev_t = 0.0; + for &t in splits.iter() { + if t > 1.0 - EPS.param { + // println!(" Breaking due to t > 1 - EPS.param"); + break; + } + let tt = (t - prev_t) / (1.0 - prev_t); + // println!(" t={}, prev_t={}, tt={}", t, prev_t, tt); + prev_t = t; + if tt < EPS.param { + // println!(" Skipping due to tt < EPS.param"); + continue; + } + if tt > 1.0 - EPS.param { + // println!(" Skipping due to tt > 1 - EPS.param"); + continue; + } + let (seg1, seg2) = split_segment_at(&tmp_seg, tt); + new_edges.push((seg1, parent, path_segment_bounding_box(&seg1))); + // println!(" Added new edge, total now: {}", new_edges.len()); + tmp_seg = seg2; + } + new_edges.push((tmp_seg, parent, path_segment_bounding_box(&tmp_seg))); + // println!(" Added final segment, total now: {}", new_edges.len()); + } else { + new_edges.push((seg, parent, path_segment_bounding_box(&seg))); + // println!(" Added unsplit edge, total now: {}", new_edges.len()); + } + } + + // println!("Final number of edges: {}", new_edges.len()); + (new_edges, Some(total_bounding_box)) +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +enum Direction { + Forward, + Backwards, +} + +impl std::ops::Neg for Direction { + type Output = Self; + + fn neg(self) -> Self::Output { + match self { + Self::Forward => Self::Backwards, + Self::Backwards => Self::Forward, + } + } +} +impl std::ops::Not for Direction { + type Output = Self; + + fn not(self) -> Self::Output { + match self { + Self::Forward => Self::Backwards, + Self::Backwards => Self::Forward, + } + } +} + +impl Direction { + fn forward(self) -> bool { + self == Self::Forward + } + fn backwards(self) -> bool { + self == Self::Backwards + } +} + +// TODO:(@TrueDoctor) Optimize this by rounding each vertex up and down and then inserting them in a hashmap. This should remove the need for bbox calculations and the quad tree +fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AABB) -> MajorGraph { + // println!("Starting find_vertices"); + // println!("Number of input edges: {}", edges.len()); + + let mut vertex_tree = QuadTree::new(bounding_box, POINT_TREE_DEPTH, 8); + let mut graph = MajorGraph { + edges: SlotMap::with_key(), + vertices: SlotMap::with_key(), + }; + + let mut parents: HashMap = HashMap::new(); + + let mut vertex_pair_id_to_edges: HashMap< + (MajorVertexKey, MajorVertexKey), + Vec<(MajorGraphEdgeStage2, MajorEdgeKey, MajorEdgeKey)>, + > = HashMap::new(); + + for (seg, parent, bounding_box) in edges { + let mut get_vertex = |point: Vector| -> MajorVertexKey { + let box_around_point = bounding_box_around_point(point, EPS.point); + if let Some(&existing_vertex) = vertex_tree.find(&box_around_point).iter().next() { + existing_vertex + } else { + let vertex_key = graph.vertices.insert(MajorGraphVertex { + point, + outgoing_edges: Vec::new(), + }); + vertex_tree.insert(box_around_point, vertex_key); + vertex_key + } + }; + // println!("Processing edge: {:?}, parent: {}", seg, parent); + + let start_point = get_start_point(seg); + let end_point = get_end_point(seg); + // println!(" Start point: {:?}", start_point); + // println!(" End point: {:?}", end_point); + + let start_vertex = get_vertex(start_point); + let end_vertex = get_vertex(end_point); + // println!(" Start vertex: {:?}", start_vertex); + // println!(" End vertex: {:?}", end_vertex); + let start_vertex = get_vertex(get_start_point(seg)); + let end_vertex = get_vertex(get_end_point(seg)); + + if start_vertex == end_vertex { + match seg { + PathSegment::Line(..) => continue, + PathSegment::Cubic(_, c1, c2, _) => { + if vectors_equal(*c1, *c2, EPS.point) { + continue; + } + } + PathSegment::Quadratic(_, c, _) => { + if vectors_equal(get_start_point(seg), *c, EPS.point) { + continue; + } + } + PathSegment::Arc(_, _, _, _, _, false, _) => continue, + _ => {} + } + } + + let vertex_pair_id = (start_vertex.min(end_vertex), start_vertex.max(end_vertex)); + if let Some(existing_edges) = vertex_pair_id_to_edges.get(&vertex_pair_id) { + if let Some(existing_edge) = existing_edges + .iter() + .find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point)) + { + println!("parent: {parent:0b}"); + *parents.entry(existing_edge.1).or_default() |= parent; + *parents.entry(existing_edge.2).or_default() |= parent; + continue; + } + } + + let fwd_edge_key = graph.edges.insert(MajorGraphEdge { + seg: *seg, + parent: *parent, + incident_vertices: [start_vertex, end_vertex], + direction_flag: Direction::Forward, + twin: None, + bounding_box: *bounding_box, + }); + + let bwd_edge_key = graph.edges.insert(MajorGraphEdge { + seg: *seg, + parent: *parent, + incident_vertices: [end_vertex, start_vertex], + direction_flag: Direction::Backwards, + twin: Some(fwd_edge_key), + bounding_box: *bounding_box, + }); + + graph.edges[fwd_edge_key].twin = Some(bwd_edge_key); + + graph.vertices[start_vertex] + .outgoing_edges + .push(fwd_edge_key); + graph.vertices[end_vertex].outgoing_edges.push(bwd_edge_key); + + vertex_pair_id_to_edges + .entry(vertex_pair_id) + .or_default() + .push(((*seg, *parent, *bounding_box), fwd_edge_key, bwd_edge_key)); + } + // println!("Finished find_vertices"); + // println!("Number of vertices: {}", graph.vertices.len()); + // println!("Number of edges: {}", graph.edges.len()); + for (edge_key, parent) in parents { + graph.edges[edge_key].parent |= parent; + } + + graph +} + +fn get_order(vertex: &MajorGraphVertex) -> usize { + vertex.outgoing_edges.len() +} + +fn compute_minor(major_graph: &MajorGraph) -> MinorGraph { + // println!("Starting compute_minor"); + // println!("Major graph edges: {}", major_graph.edges.len()); + // println!("Major graph vertices: {}", major_graph.vertices.len()); + + let mut new_edges = SlotMap::with_key(); + let mut new_vertices = SlotMap::with_key(); + let mut to_minor_vertex = HashMap::new(); + let mut id_to_edge = HashMap::new(); + let mut visited = HashSet::new(); + + // Handle components that are not cycles + for (major_vertex_key, vertex) in &major_graph.vertices { + // println!("Processing major vertex: {:?}", major_vertex_key); + // println!(" Outgoing edges: {:?}", vertex.outgoing_edges); + + // Edges are contracted + if get_order(vertex) == 2 { + continue; + } + let start_vertex = *to_minor_vertex.entry(major_vertex_key).or_insert_with(|| { + new_vertices.insert(MinorGraphVertex { + outgoing_edges: Vec::new(), + }) + }); + + for &start_edge_key in &vertex.outgoing_edges { + let mut segments = Vec::new(); + let mut edge_key = start_edge_key; + let mut edge = &major_graph.edges[edge_key]; + + while edge.parent == major_graph.edges[start_edge_key].parent + && edge.direction_flag == major_graph.edges[start_edge_key].direction_flag + && get_order(&major_graph.vertices[edge.incident_vertices[1]]) == 2 + { + segments.push(edge.seg); + visited.insert(edge.incident_vertices[1]); + let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; + // choose the edge which is not our twin so we can make progress + edge_key = *next_vertex + .outgoing_edges + .iter() + .find(|&&e| Some(e) != edge.twin) + .unwrap(); + edge = &major_graph.edges[edge_key]; + } + segments.push(edge.seg); + + let end_vertex = *to_minor_vertex + .entry(edge.incident_vertices[1]) + .or_insert_with(|| { + new_vertices.insert(MinorGraphVertex { + outgoing_edges: Vec::new(), + }) + }); + assert!(major_graph.edges[start_edge_key].twin.is_some()); + assert!(edge.twin.is_some()); + + let edge_id = (start_edge_key, edge_key); + let twin_id = ( + edge.twin.unwrap(), + major_graph.edges[start_edge_key].twin.unwrap(), + ); + + let twin_key = id_to_edge.get(&twin_id); + + let new_edge_key = new_edges.insert(MinorGraphEdge { + segments, + parent: major_graph.edges[start_edge_key].parent, + incident_vertices: [start_vertex, end_vertex], + direction_flag: major_graph.edges[start_edge_key].direction_flag, + twin: twin_key.copied(), + }); + if let Some(&twin_key) = twin_key { + new_edges[twin_key].twin = Some(new_edge_key); + } + id_to_edge.insert(edge_id, new_edge_key); + new_vertices[start_vertex].outgoing_edges.push(new_edge_key); + } + } + + // Ensure all edges have twins + // let mut insert_edges = Vec::new(); + // for (edge_key, edge) in new_edges.iter_mut() { + // if edge.twin.is_none() { + // panic!(); + // insert_edges.push((edge_key, edge.clone())); + // } + // } + // for (edge_key, edge) in insert_edges.iter_mut() { + // let twin_key = new_edges.insert(MinorGraphEdge { + // segments: edge + // .segments + // .iter() + // .rev() + // .map(reverse_path_segment) + // .collect(), + // parent: edge.parent, + // incident_vertices: [edge.incident_vertices[1], edge.incident_vertices[0]], + // direction_flag: !edge.direction_flag, + // twin: Some(*edge_key), + // }); + // edge.twin = Some(twin_key); + // new_vertices[edge.incident_vertices[1]] + // .outgoing_edges + // .push(twin_key); + // } + + // println!("Created {} minor edges", new_edges.len()); + for (edge_key, edge) in &new_edges { + // println!( + // " Minor edge {:?}: {:?} -> {:?}", + // edge_key, edge.incident_vertices[0], edge.incident_vertices[1] + // ); + } + + // Handle cyclic components (if any) + + let mut cycles = Vec::new(); + for (major_vertex_key, vertex) in &major_graph.vertices { + if vertex.outgoing_edges.len() != 2 || visited.contains(&major_vertex_key) { + continue; + } + let mut edge_key = vertex.outgoing_edges[0]; + let mut edge = &major_graph.edges[edge_key]; + let mut cycle = MinorGraphCycle { + segments: Vec::new(), + parent: edge.parent, + direction_flag: edge.direction_flag, + }; + loop { + cycle.segments.push(edge.seg); + visited.insert(edge.incident_vertices[0]); + assert_eq!( + major_graph.vertices[edge.incident_vertices[1]] + .outgoing_edges + .len(), + 2, + "Found an unvisited vertex of order != 2." + ); + let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; + edge_key = *next_vertex + .outgoing_edges + .iter() + .find(|&&e| Some(e) != edge.twin) + .unwrap(); + edge = &major_graph.edges[edge_key]; + if edge.incident_vertices[0] == major_vertex_key { + break; + } + } + cycles.push(cycle); + } + + // println!("Finished compute_minor"); + // println!("Minor graph edges: {}", new_edges.len()); + // println!("Minor graph vertices: {}", new_vertices.len()); + // println!("Minor graph cycles: {}", cycles.len()); + + MinorGraph { + edges: new_edges, + vertices: new_vertices, + cycles, + } +} + +fn remove_dangling_edges(graph: &mut MinorGraph) { + // Basically DFS for each parent with bfs number + fn walk(parent: u8, graph: &MinorGraph) -> HashSet { + let mut kept_vertices = HashSet::new(); + let mut vertex_to_level = HashMap::new(); + + fn visit( + vertex: MinorVertexKey, + incoming_edge: Option, + level: usize, + graph: &MinorGraph, + vertex_to_level: &mut HashMap, + kept_vertices: &mut HashSet, + parent: u8, + ) -> usize { + if let Some(&existing_level) = vertex_to_level.get(&vertex) { + return existing_level; + } + vertex_to_level.insert(vertex, level); + // println!( + // "inserting {}, with level {}", + // (vertex.0.as_ffi() & 0xFF) - 1, + // level + // ); + + let mut min_level = usize::MAX; + for &edge_key in &graph.vertices[vertex].outgoing_edges { + let edge = &graph.edges[edge_key]; + if edge.parent & parent != 0 && Some(edge_key) != incoming_edge { + min_level = min_level.min(visit( + edge.incident_vertices[1], + edge.twin, + level + 1, + graph, + vertex_to_level, + kept_vertices, + parent, + )); + } + } + + // println!("min_level: {min_level}, level: {level}"); + if min_level <= level { + // println!( + // "keeping {:?}, {}, {}", + // (vertex.0.as_ffi() & 0xFF) - 1, + // min_level, + // level + // ); + kept_vertices.insert(vertex); + } + + min_level + } + + for edge in graph.edges.values() { + // println!("parent: {parent}"); + if edge.parent & parent != 0 { + visit( + edge.incident_vertices[0], + None, + 0, + graph, + &mut vertex_to_level, + &mut kept_vertices, + parent, + ); + } + } + + kept_vertices + } + + let kept_vertices_a = walk(1, graph); + let kept_vertices_b = walk(2, graph); + // println!("keep a: {kept_vertices_a:?}"); + // println!("keep b: {kept_vertices_b:?}"); + + graph + .vertices + .retain(|k, _| kept_vertices_a.contains(&k) || kept_vertices_b.contains(&k)); + + for vertex in graph.vertices.values_mut() { + vertex.outgoing_edges.retain(|&edge_key| { + let edge = &graph.edges[edge_key]; + (edge.parent & 1 == 1 + && kept_vertices_a.contains(&edge.incident_vertices[0]) + && kept_vertices_a.contains(&edge.incident_vertices[1])) + || (edge.parent & 2 == 2 + && kept_vertices_b.contains(&edge.incident_vertices[0]) + && kept_vertices_b.contains(&edge.incident_vertices[1])) + }); + } + // TODO(@TrueDoctor): merge + graph.edges.retain(|_, edge| { + (edge.parent & 1 == 1 + && kept_vertices_a.contains(&edge.incident_vertices[0]) + && kept_vertices_a.contains(&edge.incident_vertices[1])) + || (edge.parent & 2 == 2 + && kept_vertices_b.contains(&edge.incident_vertices[0]) + && kept_vertices_b.contains(&edge.incident_vertices[1])) + }); +} + +fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { + let seg = &edge.segments[0]; // TODO: explain in comment why this is always the incident one in both fwd and bwd + let (p0, p1) = if edge.direction_flag.forward() { + ( + sample_path_segment_at(seg, 0.0), + sample_path_segment_at(seg, EPS.param), + ) + } else { + ( + sample_path_segment_at(seg, 1.0), + sample_path_segment_at(seg, 1.0 - EPS.param), + ) + }; + (p1.y - p0.y).atan2(p1.x - p0.x) +} + +fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { + for vertex in graph.vertices.values_mut() { + if vertex.outgoing_edges.len() > 2 { + vertex.outgoing_edges.sort_by(|&a, &b| { + get_incidence_angle(&graph.edges[a]) + .partial_cmp(&get_incidence_angle(&graph.edges[b])) + .unwrap() + }); + } + } +} + +fn face_to_polygon( + face: &DualGraphVertex, + edges: &SlotMap, +) -> Vec { + const CNT: usize = 3; + + face.incident_edges + .iter() + .flat_map(|&edge_key| { + let edge = &edges[edge_key]; + edge.segments.iter().flat_map(move |seg| { + (0..CNT).map(move |i| { + let t0 = i as f64 / CNT as f64; + let t = if edge.direction_flag.forward() { + t0 + } else { + 1.0 - t0 + }; + sample_path_segment_at(seg, t) + }) + }) + }) + .collect() +} + +fn interval_crosses_point(a: f64, b: f64, p: f64) -> bool { + let dy1 = a >= p; + let dy2 = b < p; + dy1 == dy2 +} + +fn line_segment_intersects_horizontal_ray(a: Vector, b: Vector, point: Vector) -> bool { + if !interval_crosses_point(a.y, b.y, point.y) { + return false; + } + let x = crate::math::lin_map(point.y, a.y, b.y, a.x, b.x); + x >= point.x +} + +fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { + if polygon.len() <= 2 { + return 0; + } + let mut prev_point = polygon[polygon.len() - 1]; + let mut winding = 0; + for &point in polygon { + if line_segment_intersects_horizontal_ray(prev_point, point, tested_point) { + winding += if point.y > prev_point.y { -1 } else { 1 }; + } + prev_point = point; + } + winding +} + +fn compute_winding( + face: &DualGraphVertex, + edges: &SlotMap, +) -> (i32, Vector) { + let polygon = face_to_polygon(face, edges); + // println!( + // "Computing winding for polygon with {} points:", + // polygon.len() + // ); + for (i, point) in polygon.iter().enumerate() { + // println!(" Point {}: ({}, {})", i, point.x, point.y); + } + + for i in 0..polygon.len() { + let a = polygon[i]; + let b = polygon[(i + 1) % polygon.len()]; + let c = polygon[(i + 2) % polygon.len()]; + let center = (a + b + c) / 3.; + let winding = compute_point_winding(&polygon, center); + if winding != 0 { + return (winding, center); + } + } + + panic!("No ear in polygon found."); +} + +fn compute_dual(minor_graph: &MinorGraph) -> DualGraph { + // println!("Starting compute_dual function"); + // println!("Minor graph edges: {:?}", minor_graph.edges.len()); + // println!("Minor graph vertices: {:?}", minor_graph.vertices.len()); + + let mut new_vertices: Vec = Vec::new(); + let mut minor_to_dual_edge: HashMap = HashMap::new(); + let mut dual_edges = SlotMap::with_key(); + let mut dual_vertices = SlotMap::with_key(); + + for (start_edge_key, start_edge) in &minor_graph.edges { + // println!("Processing start edge: {:?}", start_edge_key,); + + if minor_to_dual_edge.contains_key(&start_edge_key) { + // println!("Edge {:?} already processed, skipping", start_edge_key); + continue; + } + + let face_key = dual_vertices.insert(DualGraphVertex { + incident_edges: Vec::new(), + }); + // println!("Created new face vertex: {:?}", face_key); + + let mut edge_key = start_edge_key; + let mut edge = start_edge; + + loop { + // println!("Processing edge: {:?}: {}", edge_key, edge.format_path()); + + let twin = edge.twin.expect("Edge doesn't have a twin"); + // println!("Twin edge: {:?}", twin); + + let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); + // println!("Twin dual key: {:?}", twin_dual_key); + + let new_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: edge.segments.clone(), + parent: edge.parent, + incident_vertex: face_key, + direction_flag: edge.direction_flag, + twin: twin_dual_key, + }); + // println!("Inserted new dual edge: {:?}", new_edge_key); + + if let Some(twin_key) = twin_dual_key { + dual_edges[twin_key].twin = Some(new_edge_key); + // println!("Updated twin of {:?} to {:?}", twin_key, new_edge_key); + } + + minor_to_dual_edge.insert(edge_key, new_edge_key); + // println!( + // "Mapped minor edge {:?} to dual edge {:?}", + // edge_key, new_edge_key + // ); + + dual_vertices[face_key].incident_edges.push(new_edge_key); + + edge_key = get_next_edge(edge_key, minor_graph); + edge = &minor_graph.edges[edge_key]; + // println!("Next edge: {:?}", edge_key); + + if edge.incident_vertices[0] == start_edge.incident_vertices[0] { + // println!("Completed face, breaking loop"); + break; + } + } + + new_vertices.push(face_key); + // println!("Added face vertex {:?} to new_vertices", face_key); + } + + // println!("Finished processing edges"); + // println!("New vertices: {:?}", new_vertices); + + for cycle in &minor_graph.cycles { + let inner_face_key = dual_vertices.insert(DualGraphVertex { + incident_edges: Vec::new(), + }); + let outer_face_key = dual_vertices.insert(DualGraphVertex { + incident_edges: Vec::new(), + }); + + let inner_half_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: cycle.segments.clone(), + parent: cycle.parent, + incident_vertex: inner_face_key, + direction_flag: cycle.direction_flag, + twin: None, + }); + + let outer_half_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: cycle.segments.iter().cloned().rev().collect(), + parent: cycle.parent, + incident_vertex: outer_face_key, + direction_flag: !cycle.direction_flag, + twin: Some(inner_half_edge_key), + }); + + dual_edges[inner_half_edge_key].twin = Some(outer_half_edge_key); + dual_vertices[inner_face_key] + .incident_edges + .push(inner_half_edge_key); + dual_vertices[outer_face_key] + .incident_edges + .push(outer_half_edge_key); + new_vertices.push(inner_face_key); + new_vertices.push(outer_face_key); + } + + let mut components = Vec::new(); + let mut visited_vertices = HashSet::new(); + let mut visited_edges = HashSet::new(); + + for &start_vertex_key in &new_vertices { + if visited_vertices.contains(&start_vertex_key) { + continue; + } + + let mut component_vertices = Vec::new(); + let mut component_edges = Vec::new(); + + let mut stack = vec![start_vertex_key]; + while let Some(vertex_key) = stack.pop() { + if visited_vertices.insert(vertex_key) { + component_vertices.push(vertex_key); + } + + for &edge_key in &dual_vertices[vertex_key].incident_edges { + if !visited_edges.insert(edge_key) { + continue; + } + + let edge = &dual_edges[edge_key]; + let twin_key = edge.twin.expect("Edge doesn't have a twin."); + component_edges.push(edge_key); + component_edges.push(twin_key); + visited_edges.insert(twin_key); + stack.push(dual_edges[twin_key].incident_vertex); + } + } + + let outer_face_key = *component_vertices + .iter() + .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) + .expect("No outer face of a component found."); + + assert_eq!( + component_vertices + .iter() + .filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) + .count(), + 1, + "Multiple outer faces found." + ); + + components.push(DualGraphComponent { + vertices: component_vertices, + edges: component_edges, + outer_face: Some(outer_face_key), + }); + } + + // println!("Dual graph components: {}", components.len()); + // for (i, component) in components.iter().enumerate() { + // println!( + // "Component {}: {} vertices, {} edges", + // i, + // component.vertices.len(), + // component.edges.len() + // ); + // } + + DualGraph { + vertices: dual_vertices, + edges: dual_edges, + components, + } +} + +fn get_next_edge(edge_key: MinorEdgeKey, graph: &MinorGraph) -> MinorEdgeKey { + let edge = &graph.edges[edge_key]; + let vertex = &graph.vertices[edge.incident_vertices[1]]; + let index = vertex + .outgoing_edges + .iter() + .position(|&e| Some(edge_key) == graph.edges[e].twin) + .unwrap(); + vertex.outgoing_edges[(index + 1) % vertex.outgoing_edges.len()] +} + +fn test_inclusion( + a: &DualGraphComponent, + b: &DualGraphComponent, + edges: &SlotMap, + vertices: &SlotMap, +) -> Option { + let tested_point = get_start_point(&edges[a.edges[0]].segments[0]); + for (face_key, face) in b.vertices.iter().map(|&key| (key, &vertices[key])) { + if Some(face_key) == b.outer_face { + continue; + } + let mut count = 0; + for &edge_key in &face.incident_edges { + let edge = &edges[edge_key]; + for seg in &edge.segments { + count += path_segment_horizontal_ray_intersection_count(seg, tested_point); + } + } + if count % 2 == 1 { + return Some(face_key); + } + } + None +} +fn bounding_box_intersects_horizontal_ray(bounding_box: &AABB, point: Vector) -> bool { + interval_crosses_point(bounding_box.top, bounding_box.bottom, point[1]) + && bounding_box.right >= point[0] +} + +struct IntersectionSegment { + bounding_box: AABB, + seg: PathSegment, +} + +pub fn path_segment_horizontal_ray_intersection_count( + orig_seg: &PathSegment, + point: Vector, +) -> usize { + // println!("Checking segment: {:?}", orig_seg); + // println!("Against point: {:?}", point); + + let total_bounding_box = path_segment_bounding_box(orig_seg); + // println!("Total bounding box: {:?}", total_bounding_box); + + if !bounding_box_intersects_horizontal_ray(&total_bounding_box, point) { + // println!("Ray doesn't intersect bounding box. Returning 0."); + return 0; + } + + let mut segments = vec![IntersectionSegment { + bounding_box: total_bounding_box, + seg: *orig_seg, + }]; + let mut count = 0; + let mut iterations = 0; + + while !segments.is_empty() { + iterations += 1; + // println!( + // "Iteration {}, segments to check: {}", + // iterations, + // segments.len() + // ); + + let mut next_segments = Vec::new(); + for segment in segments { + // println!("Checking sub-segment: {:?}", segment.seg); + // println!( + // "Segment endpoints: start={:?}, end={:?}", + // get_start_point(&segment.seg), + // get_end_point(&segment.seg) + // ); + if bounding_box_max_extent(&segment.bounding_box) < EPS.linear { + // println!("Segment is small enough. Checking for intersection."); + if line_segment_intersects_horizontal_ray( + get_start_point(&segment.seg), + get_end_point(&segment.seg), + point, + ) { + count += 1; + // println!("Intersection found. Current count: {}", count); + } + } else { + // println!("Subdividing segment."); + let split = split_segment_at(&segment.seg, 0.5); + let bounding_box0 = path_segment_bounding_box(&split.0); + let bounding_box1 = path_segment_bounding_box(&split.1); + + if bounding_box_intersects_horizontal_ray(&bounding_box0, point) { + next_segments.push(IntersectionSegment { + bounding_box: bounding_box0, + seg: split.0, + }); + // println!("First half intersects. Added to next iteration."); + } + if bounding_box_intersects_horizontal_ray(&bounding_box1, point) { + next_segments.push(IntersectionSegment { + bounding_box: bounding_box1, + seg: split.1, + }); + // println!("Second half intersects. Added to next iteration."); + } + } + } + segments = next_segments; + } + + // println!("Final count: {}, after {} iterations", count, iterations); + count +} + +fn compute_nesting_tree( + DualGraph { + components, + vertices, + edges, + }: &DualGraph, +) -> Vec { + let mut nesting_trees = Vec::new(); + + for component in components { + insert_component(&mut nesting_trees, component, edges, vertices); + } + + nesting_trees +} + +fn insert_component( + trees: &mut Vec, + component: &DualGraphComponent, + edges: &SlotMap, + vertices: &SlotMap, +) { + for tree in trees.iter_mut() { + if let Some(face_key) = test_inclusion(component, &tree.component, edges, vertices) { + if let Some(children) = tree.outgoing_edges.get_mut(&face_key) { + insert_component(children, component, edges, vertices); + } else { + tree.outgoing_edges.insert( + face_key, + vec![NestingTree { + component: component.clone(), + outgoing_edges: HashMap::new(), + }], + ); + } + return; + } + } + + let mut new_tree = NestingTree { + component: component.clone(), + outgoing_edges: HashMap::new(), + }; + + let mut i = 0; + while i < trees.len() { + if let Some(face_key) = + test_inclusion(&trees[i].component, &new_tree.component, edges, vertices) + { + // TODO: (@TrueDoctor) use swap remove + let tree = trees.remove(i); + new_tree + .outgoing_edges + .entry(face_key) + .or_default() + .push(tree); + } else { + i += 1; + } + } + + trees.push(new_tree); +} + +fn get_flag(count: i32, fill_rule: FillRule) -> u8 { + match fill_rule { + FillRule::NonZero => { + if count == 0 { + 0 + } else { + 1 + } + } + FillRule::EvenOdd => (count % 2).unsigned_abs() as u8, + } +} + +fn flag_faces( + nesting_trees: &mut [NestingTree], + a_fill_rule: FillRule, + b_fill_rule: FillRule, + edges: &SlotMap, + vertices: &SlotMap, + flags: &mut HashMap, +) { + fn visit_tree( + tree: &mut NestingTree, + a_running_count: i32, + b_running_count: i32, + a_fill_rule: FillRule, + b_fill_rule: FillRule, + edges: &SlotMap, + vertices: &SlotMap, + flags: &mut HashMap, + ) { + let mut visited_faces = HashSet::new(); + + fn visit_face( + face_key: DualVertexKey, + a_running_count: i32, + b_running_count: i32, + tree: &mut NestingTree, + visited_faces: &mut HashSet, + a_fill_rule: FillRule, + b_fill_rule: FillRule, + edges: &SlotMap, + vertices: &SlotMap, + flags: &mut HashMap, + ) { + if visited_faces.contains(&face_key) { + return; + } + visited_faces.insert(face_key); + + let a_flag = get_flag(a_running_count, a_fill_rule); + let b_flag = get_flag(b_running_count, b_fill_rule); + *flags.entry(face_key).or_default() = a_flag | (b_flag << 1); + + for edge_key in vertices[face_key].incident_edges.clone() { + let edge = &edges[edge_key]; + let twin_key = edge.twin.expect("Edge doesn't have a twin"); + let mut next_a_count = a_running_count; + if edge.parent & 1 != 0 { + next_a_count += if edge.direction_flag.forward() { 1 } else { -1 }; + } + let mut next_b_count = b_running_count; + if edge.parent & 2 != 0 { + next_b_count += if edge.direction_flag.forward() { 1 } else { -1 }; + } + visit_face( + edges[twin_key].incident_vertex, + next_a_count, + next_b_count, + tree, + visited_faces, + a_fill_rule, + b_fill_rule, + edges, + vertices, + flags, + ); + } + + if let Some(subtrees) = tree.outgoing_edges.get_mut(&face_key) { + for subtree in subtrees.iter_mut() { + visit_tree( + subtree, + a_running_count, + b_running_count, + a_fill_rule, + b_fill_rule, + edges, + vertices, + flags, + ); + } + } + } + + let outer_face_key = tree + .component + .outer_face + .expect("Component doesn't have an outer face."); + visit_face( + outer_face_key, + a_running_count, + b_running_count, + tree, + &mut visited_faces, + a_fill_rule, + b_fill_rule, + edges, + vertices, + flags, + ); + } + + for tree in nesting_trees.iter_mut() { + visit_tree(tree, 0, 0, a_fill_rule, b_fill_rule, edges, vertices, flags); + } +} + +// TODO(@Truedoctor): Check if we can just iterate over the flags +fn get_selected_faces<'a>( + nesting_trees: &[NestingTree], + predicate: &'a impl Fn(u8) -> bool, + flags: &'a HashMap, +) -> impl Iterator + 'a { + // flags + // .iter() + // .filter_map(|(key, &flag)| predicate(flag).then_some(*key)) + let mut selected_faces = Vec::new(); + for tree in nesting_trees { + for face_key in tree.component.vertices.iter() { + if predicate(*flags.get(face_key).unwrap()) { + selected_faces.push(*face_key); + } + } + for subtree in tree.outgoing_edges.values().flatten() { + selected_faces.extend(get_selected_faces( + std::slice::from_ref(subtree), + predicate, + flags, + )); + } + } + selected_faces.into_iter() +} + +fn walk_faces<'a>( + faces: &'a HashSet, + edges: &SlotMap, + vertices: &SlotMap, +) -> impl Iterator + 'a { + let is_removed_edge = |edge: &DualGraphHalfEdge| { + faces.contains(&edge.incident_vertex) + == faces.contains(&edges[edge.twin.unwrap()].incident_vertex) + }; + + let mut edge_to_next = HashMap::new(); + for face_key in faces { + let face = &vertices[*face_key]; + let mut prev_edge = *face.incident_edges.last().unwrap(); + for &edge in &face.incident_edges { + edge_to_next.insert(prev_edge, edge); + prev_edge = edge; + } + } + + let mut visited_edges = HashSet::new(); + let mut result = Vec::new(); + + for &face_key in faces { + let face = &vertices[face_key]; + for &start_edge in &face.incident_edges { + if is_removed_edge(&edges[start_edge]) || visited_edges.contains(&start_edge) { + continue; + } + let mut edge = start_edge; + loop { + let current_edge = &edges[edge]; + if current_edge.direction_flag.forward() { + result.extend(current_edge.segments.iter().cloned()); + } else { + result.extend(current_edge.segments.iter().map(reverse_path_segment)); + } + visited_edges.insert(edge); + edge = *edge_to_next.get(&edge).unwrap(); + while is_removed_edge(&edges[edge]) { + edge = *edge_to_next.get(&edges[edge].twin.unwrap()).unwrap(); + } + if edge == start_edge { + break; + } + } + } + } + + result.into_iter() +} + +fn dump_faces( + nesting_trees: &[NestingTree], + predicate: impl Fn(u8) -> bool + Copy, + edges: &SlotMap, + vertices: &SlotMap, + flags: &HashMap, +) -> Vec { + let mut paths = Vec::new(); + + fn visit( + tree: &NestingTree, + predicate: impl Fn(u8) -> bool + Copy, + paths: &mut Vec, + edges: &SlotMap, + vertices: &SlotMap, + flags: &HashMap, + ) { + for &face_key in tree.component.vertices.iter() { + let face = &vertices[face_key]; + let flag = flags[&face_key]; + if !predicate(flag) || Some(face_key) == tree.component.outer_face { + continue; + } + + let mut path = Vec::new(); + + for &edge_key in &face.incident_edges { + let edge = &edges[edge_key]; + if edge.direction_flag.forward() { + path.extend(edge.segments.iter().cloned()); + } else { + path.extend(edge.segments.iter().map(reverse_path_segment)); + } + } + + // poke holes in the face + if let Some(subtrees) = tree.outgoing_edges.get(&face_key) { + for subtree in subtrees { + let outer_face_key = subtree.component.outer_face.unwrap(); + for &edge_key in &vertices[outer_face_key].incident_edges { + let edge = &edges[edge_key]; + if edge.direction_flag.forward() { + path.extend(edge.segments.iter().cloned()); + } else { + path.extend(edge.segments.iter().map(reverse_path_segment)); + } + } + } + } + + paths.push(path); + } + + for subtrees in tree.outgoing_edges.values() { + for subtree in subtrees { + visit(subtree, predicate, paths, edges, vertices, flags); + } + } + } + + for tree in nesting_trees { + visit(tree, predicate, &mut paths, edges, vertices, flags); + } + + paths +} + +const OPERATION_PREDICATES: [fn(u8) -> bool; 6] = [ + |flag: u8| flag > 0, // Union + |flag: u8| flag == 1, // Difference + |flag: u8| flag == 0b11, // Intersection + |flag: u8| flag == 1 || flag == 2, // Exclusion + |flag: u8| (flag & 1) == 1, // Division + |flag: u8| flag > 0, // Fracture +]; + +pub fn path_boolean( + a: &Path, + a_fill_rule: FillRule, + b: &Path, + b_fill_rule: FillRule, + op: PathBooleanOperation, +) -> Vec { + let mut unsplit_edges: Vec = a + .iter() + .map(segment_to_edge(1)) + .chain(b.iter().map(segment_to_edge(2))) + .collect(); + + for edge in &unsplit_edges { + // println!(" {:?}", &path_to_path_data(&vec![edge.0], 0.001)); + } + split_at_self_intersections(&mut unsplit_edges); + // println!("after self intersection"); + // for edge in &unsplit_edges { + // // println!(" {:?}", &edge); + // println!(" {:?}", &path_to_path_data(&vec![edge.0], 0.001)); + // } + + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + // println!( + // "split_edges: {:?}\n\n total_bounding_box {:?}", + // split_edges, total_bounding_box + // ); + + let total_bounding_box = match total_bounding_box { + Some(bb) => bb, + None => return Vec::new(), // input geometry is empty + }; + + let major_graph = find_vertices(&split_edges, total_bounding_box); + + // println!("Major graph:"); + // println!("{}", major_graph_to_dot(&major_graph)); + + let mut minor_graph = compute_minor(&major_graph); + // println!("Minor graph:"); + // println!("{}", minor_graph_to_dot(&minor_graph.edges)); + + remove_dangling_edges(&mut minor_graph); + // println!("After removing dangling edges:"); + // println!("{}", minor_graph_to_dot(&minor_graph.edges)); + + sort_outgoing_edges_by_angle(&mut minor_graph); + + for (edge_key, edge) in &minor_graph.edges { + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[0]), + "Edge {:?} has invalid start vertex", + edge_key + ); + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[1]), + "Edge {:?} has invalid end vertex", + edge_key + ); + assert!( + edge.twin.is_some(), + "Edge {:?} should have a twin", + edge_key + ); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!( + twin.twin.unwrap(), + edge_key, + "Twin relationship should be symmetrical for edge {:?}", + edge_key + ); + } + + // println!("Minor graph structure before compute_dual:"); + for (vertex_key, vertex) in &minor_graph.vertices { + // println!("Vertex {:?}:", vertex_key); + // println!(" Outgoing edges: {:?}", vertex.outgoing_edges); + for &edge_key in &vertex.outgoing_edges { + let edge = &minor_graph.edges[edge_key]; + // println!(" Edge {:?}:", edge_key); + // println!(" Parent: {}", edge.parent); + // println!(" Direction flag: {:?}", edge.direction_flag); + // println!(" Incident vertices: {:?}", edge.incident_vertices); + // println!(" Twin: {:?}", edge.twin); + // println!(" Segments: {}", edge.format_path()); + } + } + + let dual_graph = compute_dual(&minor_graph); + // println!("Dual graph:"); + // println!( + // "{}", + // dual_graph_to_dot(&dual_graph.components, &dual_graph.edges) + // ); + + // println!( + // "Dual Graph computed. Components: {}", + // dual_graph.components.len() + // ); + + let mut nesting_trees = compute_nesting_tree(&dual_graph); + // println!( + // "Nesting trees computed. Number of trees: {}", + // nesting_trees.len() + // ); + + let DualGraph { + edges, vertices, .. + } = &dual_graph; + + let mut flags = HashMap::new(); + flag_faces( + &mut nesting_trees, + a_fill_rule, + b_fill_rule, + edges, + vertices, + &mut flags, + ); + // println!("Faces flagged. Number of flagged faces:",); + // for (id, flag) in flags.iter() { + // println!("{:?}: {:02b}", id, flag); + // } + + let predicate = OPERATION_PREDICATES[op as usize]; + + match op { + PathBooleanOperation::Division | PathBooleanOperation::Fracture => { + let result = dump_faces(&nesting_trees, predicate, edges, vertices, &flags); + // println!( + // "Operation result (Division/Fracture). Number of paths: {}", + // result.len() + // ); + result + } + _ => { + let selected_faces: HashSet = + get_selected_faces(&nesting_trees, &predicate, &flags).collect(); + // println!("Selected faces: {}", selected_faces.len()); + let result = vec![walk_faces(&selected_faces, edges, vertices).collect()]; + // println!("Operation result. Number of paths: {}", result.len()); + result + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + use glam::DVec2; // Assuming DVec2 is defined in your crate + + #[test] + fn test_segment_to_edge() { + let segment = PathSegment::Arc( + DVec2::new(39.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 39.0), + ); + let parent = 1; + let edge = segment_to_edge(parent)(&segment); + assert_eq!(edge.0, segment); + assert_eq!(edge.1, parent); + } + + #[test] + fn test_split_at_self_intersections() { + let mut edges = vec![ + ( + PathSegment::Arc( + DVec2::new(39.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 39.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 39.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(1.0, 20.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(1.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 1.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 1.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(39.0, 20.0), + ), + 1, + ), + ( + PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), + 1, + ), + ]; + + let original_length = edges.len(); + split_at_self_intersections(&mut edges); + + // We don't expect any splits to occur + assert_eq!(edges.len(), original_length); + + // Add a cubic curve (even if it doesn't self-intersect) + edges.push(( + PathSegment::Cubic( + DVec2::new(0.0, 0.0), + DVec2::new(10.0, 10.0), + DVec2::new(-10.0, 10.0), + DVec2::new(0.0, 0.0), + ), + 1, + )); + + split_at_self_intersections(&mut edges); + + // We expect the cubic curve to remain unchanged + assert_eq!(edges.len(), original_length + 1); + } + + #[test] + fn test_split_at_intersections() { + let unsplit_edges = vec![ + ( + PathSegment::Arc( + DVec2::new(39.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 39.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 39.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(1.0, 20.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(1.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 1.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 1.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(39.0, 20.0), + ), + 1, + ), + ( + PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(47.0, 28.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(28.0, 47.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(28.0, 47.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(9.0, 28.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(9.0, 28.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(28.0, 9.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(28.0, 9.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(47.0, 28.0), + ), + 2, + ), + ( + PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), + 2, + ), + ]; + + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + + // Check that we have a valid bounding box + assert!(total_bounding_box.is_some()); + + // Check that we have more edges after splitting (due to intersections) + assert!(split_edges.len() >= unsplit_edges.len()); + + // Check that all edges have a valid bounding box + for (_, _, bb) in &split_edges { + assert!(bb.left <= bb.right); + assert!(bb.top <= bb.bottom); + } + + // You might want to add more specific checks based on the expected behavior + // of your split_at_intersections function + } + + fn unsplit_edges() -> Vec<(PathSegment, u8)> { + let unsplit_edges = vec![ + ( + PathSegment::Arc( + DVec2::new(39.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 39.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 39.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(1.0, 20.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(1.0, 20.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(20.0, 1.0), + ), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(20.0, 1.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(39.0, 20.0), + ), + 1, + ), + ( + PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), + 1, + ), + ( + PathSegment::Arc( + DVec2::new(47.0, 28.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(28.0, 47.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(28.0, 47.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(9.0, 28.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(9.0, 28.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(28.0, 9.0), + ), + 2, + ), + ( + PathSegment::Arc( + DVec2::new(28.0, 9.0), + 19.0, + 19.0, + 0.0, + false, + true, + DVec2::new(47.0, 28.0), + ), + 2, + ), + ( + PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), + 2, + ), + ]; + unsplit_edges + } + + #[test] + fn test_compute_minor() { + // Set up the initial graph + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); + + // Compute minor graph + let minor_graph = compute_minor(&major_graph); + + // Print minor graph state + // println!("Minor Graph:"); + print_minor_graph_state(&minor_graph); + + // Assertions + assert_eq!( + minor_graph.edges.len(), + 8, + "Expected 8 edges in minor graph" + ); + assert_eq!( + minor_graph.vertices.len(), + 2, + "Expected 2 vertices in minor graph" + ); + assert!( + minor_graph.cycles.is_empty(), + "Expected no cycles in minor graph" + ); + + // Check that each vertex has 4 outgoing edges + for (vertex_key, vertex) in &minor_graph.vertices { + assert_eq!( + vertex.outgoing_edges.len(), + 4, + "Vertex {:?} should have 4 outgoing edges", + vertex_key + ); + } + + // Check that all edges have valid incident vertices and twins + for (edge_key, edge) in &minor_graph.edges { + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[0]), + "Edge {:?} has invalid start vertex", + edge_key + ); + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[1]), + "Edge {:?} has invalid end vertex", + edge_key + ); + assert!( + edge.twin.is_some(), + "Edge {:?} should have a twin", + edge_key + ); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!( + twin.twin.unwrap(), + edge_key, + "Twin relationship should be symmetrical for edge {:?}", + edge_key + ); + } + + // Check that parents are correctly assigned + assert_eq!( + minor_graph.edges.values().filter(|e| e.parent == 1).count(), + 4, + "Expected 4 edges with parent 1" + ); + assert_eq!( + minor_graph.edges.values().filter(|e| e.parent == 2).count(), + 4, + "Expected 4 edges with parent 2" + ); + } + + #[test] + fn test_remove_dangling_edges() { + // Set up the initial graph + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); + let mut minor_graph = compute_minor(&major_graph); + + // Print initial state + // println!("Initial Minor Graph:"); + print_minor_graph_state(&minor_graph); + + // Store initial counts + let initial_edge_count = minor_graph.edges.len(); + let initial_vertex_count = minor_graph.vertices.len(); + + // Apply remove_dangling_edges + remove_dangling_edges(&mut minor_graph); + + // Print final state + // println!("\nAfter remove_dangling_edges:"); + print_minor_graph_state(&minor_graph); + + // Assertions + assert_eq!( + minor_graph.edges.len(), + initial_edge_count, + "Number of edges should not change if there are no dangling edges" + ); + assert_eq!( + minor_graph.vertices.len(), + initial_vertex_count, + "Number of vertices should not change if there are no dangling edges" + ); + assert!( + minor_graph.cycles.is_empty(), + "Expected no cycles after removing dangling edges" + ); + + // Check that each vertex has the same number of outgoing edges as before + for (vertex_key, vertex) in &minor_graph.vertices { + assert_eq!( + vertex.outgoing_edges.len(), + 4, + "Vertex {:?} should have 8 outgoing edges", + vertex_key + ); + } + + // Check that all edges have valid incident vertices and twins + for (edge_key, edge) in &minor_graph.edges { + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[0]), + "Edge {:?} has invalid start vertex", + edge_key + ); + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[1]), + "Edge {:?} has invalid end vertex", + edge_key + ); + assert!( + edge.twin.is_some(), + "Edge {:?} should have a twin", + edge_key + ); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!( + twin.twin.unwrap(), + edge_key, + "Twin relationship should be symmetrical for edge {:?}", + edge_key + ); + } + + // Check that all edges are referenced by vertices + let all_outgoing_edges: HashSet<_> = minor_graph + .vertices + .values() + .flat_map(|v| v.outgoing_edges.iter().cloned()) + .collect(); + assert_eq!( + all_outgoing_edges.len(), + minor_graph.edges.len(), + "All edges should be referenced by vertices" + ); + + // Check that the graph structure remains unchanged + assert_eq!( + minor_graph.edges.len(), + 8, + "Expected 16 edges after removing dangling edges" + ); + assert_eq!( + minor_graph.vertices.len(), + 2, + "Expected 2 vertices after removing dangling edges" + ); + } + + fn print_minor_graph_state(graph: &MinorGraph) { + // println!(" Vertices: {}", graph.vertices.len()); + // println!(" Edges: {}", graph.edges.len()); + // println!(" Cycles: {}", graph.cycles.len()); + + for (vertex_key, vertex) in &graph.vertices { + // println!( + // " Vertex {:?}: {} outgoing edges", + // vertex_key, + // vertex.outgoing_edges.len() + // ); + } + + for (edge_key, edge) in &graph.edges { + // println!(" Edge {:?}:", edge_key); + // println!(" Parent: {}", edge.parent); + // println!(" Twin: {:?}", edge.twin); + // println!(" Incident vertices: {:?}", edge.incident_vertices); + } + } + + #[test] + fn test_sort_outgoing_edges_by_angle() { + // Set up the initial graph + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); + let mut minor_graph = compute_minor(&major_graph); + + // Print initial state + // println!("Initial Minor Graph:"); + print_minor_graph_state(&minor_graph); + + // Store initial edge order + let initial_edge_order: HashMap> = minor_graph + .vertices + .iter() + .map(|(k, v)| (k, v.outgoing_edges.clone())) + .collect(); + + // Apply sort_outgoing_edges_by_angle + sort_outgoing_edges_by_angle(&mut minor_graph); + + // Print final state + // println!("\nAfter sort_outgoing_edges_by_angle:"); + print_minor_graph_state(&minor_graph); + + // Assertions + assert_eq!( + minor_graph.edges.len(), + 8, + "Number of edges should remain unchanged" + ); + assert_eq!( + minor_graph.vertices.len(), + 2, + "Number of vertices should remain unchanged" + ); + assert!(minor_graph.cycles.is_empty(), "Expected no cycles"); + + // Check that each vertex still has 4 outgoing edges + for (vertex_key, vertex) in &minor_graph.vertices { + assert_eq!( + vertex.outgoing_edges.len(), + 4, + "Vertex {:?} should have 4 outgoing edges", + vertex_key + ); + } + + // Check that the edges are sorted by angle + for (vertex_key, vertex) in &minor_graph.vertices { + let angles: Vec = vertex + .outgoing_edges + .iter() + .map(|&edge_key| get_incidence_angle(&minor_graph.edges[edge_key])) + .collect(); + + // Check if angles are in ascending order + for i in 1..angles.len() { + assert!( + angles[i] >= angles[i - 1], + "Edges for vertex {:?} are not sorted by angle", + vertex_key + ); + } + + // Check that the set of edges is the same as before, just in different order + let initial_edges: HashSet<_> = initial_edge_order[&vertex_key].iter().collect(); + let sorted_edges: HashSet<_> = vertex.outgoing_edges.iter().collect(); + assert_eq!( + initial_edges, sorted_edges, + "Set of edges for vertex {:?} changed after sorting", + vertex_key + ); + } + + // Check that all edges still have valid incident vertices and twins + for (edge_key, edge) in &minor_graph.edges { + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[0]), + "Edge {:?} has invalid start vertex", + edge_key + ); + assert!( + minor_graph.vertices.contains_key(edge.incident_vertices[1]), + "Edge {:?} has invalid end vertex", + edge_key + ); + assert!( + edge.twin.is_some(), + "Edge {:?} should have a twin", + edge_key + ); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!( + twin.twin.unwrap(), + edge_key, + "Twin relationship should be symmetrical for edge {:?}", + edge_key + ); + } + } + + fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { + let seg = &edge.segments[0]; // First segment is always the incident one in both fwd and bwd + let (p0, p1) = if edge.direction_flag.forward() { + ( + sample_path_segment_at(seg, 0.0), + sample_path_segment_at(seg, EPS.param), + ) + } else { + ( + sample_path_segment_at(seg, 1.0), + sample_path_segment_at(seg, 1.0 - EPS.param), + ) + }; + (p1.y - p0.y).atan2(p1.x - p0.x) + } + + #[test] + fn test_path_segment_horizontal_ray_intersection_count() { + let orig_seg = PathSegment::Arc( + DVec2::new(24.0, 10.090978), + 13.909023, + 13.909023, + 0.0, + false, + true, + DVec2::new(47., 24.0), + ); + + let point = DVec2::new(37.99, 24.0); + + println!("Starting test with segment: {:?}", orig_seg); + println!("Test point: {:?}", point); + + let count = path_segment_horizontal_ray_intersection_count(&orig_seg, point); + + println!("Final intersection count: {}", count); + + let expected_count = 1; + assert_eq!(count, expected_count, "Intersection count mismatch"); + } + + #[test] + fn test_bounding_box_intersects_horizontal_ray() { + let bbox = AABB { + top: 10.0, + right: 40.0, + bottom: 30.0, + left: 20.0, + }; + + assert!(bounding_box_intersects_horizontal_ray( + &bbox, + DVec2::new(0.0, 30.0) + )); + assert!(bounding_box_intersects_horizontal_ray( + &bbox, + DVec2::new(20.0, 30.0) + )); + assert!(bounding_box_intersects_horizontal_ray( + &bbox, + DVec2::new(10.0, 20.0) + )); + assert!(!bounding_box_intersects_horizontal_ray( + &bbox, + DVec2::new(30.0, 40.0) + )); + } +} diff --git a/libraries/path-bool/src/path_command.rs b/libraries/path-bool/src/path_command.rs new file mode 100644 index 00000000000..e1c698afa2a --- /dev/null +++ b/libraries/path-bool/src/path_command.rs @@ -0,0 +1,135 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::vector::Vector; + +#[derive(Clone, Debug)] +pub enum AbsolutePathCommand { + H(f64), + V(f64), + M(Vector), + L(Vector), + C(Vector, Vector, Vector), + S(Vector, Vector), + Q(Vector, Vector), + T(Vector), + A(f64, f64, f64, bool, bool, Vector), + Z, +} + +#[derive(Clone, Debug)] +pub enum RelativePathCommand { + H(f64), + V(f64), + M(f64, f64), + L(f64, f64), + C(f64, f64, f64, f64, f64, f64), + S(f64, f64, f64, f64), + Q(f64, f64, f64, f64), + T(f64, f64), + A(f64, f64, f64, bool, bool, f64, f64), +} + +#[derive(Clone, Debug)] +pub enum PathCommand { + Absolute(AbsolutePathCommand), + Relative(RelativePathCommand), +} + +pub fn to_absolute_commands(commands: I) -> impl Iterator +where + I: IntoIterator, +{ + let mut last_point = Vector::ZERO; + let mut first_point = last_point; + + commands.into_iter().flat_map(move |cmd| match cmd { + PathCommand::Absolute(abs_cmd) => { + match abs_cmd { + AbsolutePathCommand::H(x) => { + last_point.x = x; + } + AbsolutePathCommand::V(y) => { + last_point.y = y; + } + AbsolutePathCommand::M(point) => { + last_point = point; + first_point = point; + } + AbsolutePathCommand::L(point) => { + last_point = point; + } + AbsolutePathCommand::C(_, _, end) => { + last_point = end; + } + AbsolutePathCommand::S(_, end) => { + last_point = end; + } + AbsolutePathCommand::Q(_, end) => { + last_point = end; + } + AbsolutePathCommand::T(end) => { + last_point = end; + } + AbsolutePathCommand::A(_, _, _, _, _, end) => { + last_point = end; + } + AbsolutePathCommand::Z => { + last_point = first_point; + } + } + vec![abs_cmd] + } + PathCommand::Relative(rel_cmd) => match rel_cmd { + RelativePathCommand::H(dx) => { + last_point.x += dx; + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::V(dy) => { + last_point.y += dy; + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::M(dx, dy) => { + last_point += Vector::new(dx, dy); + first_point = last_point; + vec![AbsolutePathCommand::M(last_point)] + } + RelativePathCommand::L(dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => { + let c1 = last_point + Vector::new(dx1, dy1); + let c2 = last_point + Vector::new(dx2, dy2); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::C(c1, c2, last_point)] + } + RelativePathCommand::S(dx2, dy2, dx, dy) => { + let c2 = last_point + Vector::new(dx2, dy2); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::S(c2, last_point)] + } + RelativePathCommand::Q(dx1, dy1, dx, dy) => { + let control = last_point + Vector::new(dx1, dy1); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::Q(control, last_point)] + } + RelativePathCommand::T(dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::T(last_point)] + } + RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::A( + rx, + ry, + x_axis_rotation, + large_arc_flag, + sweep_flag, + last_point, + )] + } + }, + }) +} diff --git a/libraries/path-bool/src/path_cubic_segment_self_intersection.rs b/libraries/path-bool/src/path_cubic_segment_self_intersection.rs new file mode 100644 index 00000000000..04c5c062629 --- /dev/null +++ b/libraries/path-bool/src/path_cubic_segment_self_intersection.rs @@ -0,0 +1,47 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::path_segment::PathSegment; + +const EPS: f64 = 1e-12; + +pub fn path_cubic_segment_self_intersection(seg: &PathSegment) -> Option<[f64; 2]> { + // https://math.stackexchange.com/questions/3931865/self-intersection-of-a-cubic-bezier-interpretation-of-the-solution + + if let PathSegment::Cubic(p1, p2, p3, p4) = seg { + let ax = -p1.x + 3.0 * p2.x - 3.0 * p3.x + p4.x; + let ay = -p1.y + 3.0 * p2.y - 3.0 * p3.y + p4.y; + let bx = 3.0 * p1.x - 6.0 * p2.x + 3.0 * p3.x; + let by = 3.0 * p1.y - 6.0 * p2.y + 3.0 * p3.y; + let cx = -3.0 * p1.x + 3.0 * p2.x; + let cy = -3.0 * p1.y + 3.0 * p2.y; + + let m = ay * bx - ax * by; + let n = ax * cy - ay * cx; + + let k = (-3.0 * ax * ax * cy * cy + 6.0 * ax * ay * cx * cy + 4.0 * ax * bx * by * cy + - 4.0 * ax * by * by * cx + - 3.0 * ay * ay * cx * cx + - 4.0 * ay * bx * bx * cy + + 4.0 * ay * bx * by * cx) + / (ax * ax * by * by - 2.0 * ax * ay * bx * by + ay * ay * bx * bx); + + if k < 0.0 { + return None; + } + + let t1 = (n / m + k.sqrt()) / 2.0; + let t2 = (n / m - k.sqrt()) / 2.0; + + if (EPS..=1.0 - EPS).contains(&t1) && (EPS..=1.0 - EPS).contains(&t2) { + let mut result = [t1, t2]; + result.sort_by(|a, b| a.partial_cmp(b).unwrap()); + Some(result) + } else { + None + } + } else { + None + } +} diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/path_data.rs new file mode 100644 index 00000000000..20276d2ab7c --- /dev/null +++ b/libraries/path-bool/src/path_data.rs @@ -0,0 +1,214 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::path::{path_from_commands, path_to_commands, Path}; +use crate::path_command::{AbsolutePathCommand, PathCommand, RelativePathCommand}; +use crate::vector::Vector; +use regex::Regex; + +pub fn commands_from_path_data(d: &str) -> Vec { + let re_float = Regex::new(r"^\s*,?\s*(-?\d*(?:\d\.|\.\d|\d)\d*(?:[eE][+\-]?\d+)?)").unwrap(); + let re_cmd = Regex::new(r"^\s*([MLCSQTAZHVmlhvcsqtaz])").unwrap(); + let re_bool = Regex::new(r"^\s*,?\s*([01])").unwrap(); + + let mut i = 0; + let mut last_cmd = 'M'; + let mut commands = Vec::new(); + + let get_cmd = |i: &mut usize, last_cmd: char| -> Option { + if *i >= d.len() - 1 { + return None; + } + + if let Some(cap) = re_cmd.captures(&d[*i..]) { + *i += cap[0].len(); + Some(cap[1].chars().next().unwrap()) + } else { + match last_cmd { + 'M' => Some('L'), + 'm' => Some('l'), + _ => Some(last_cmd), + } + } + }; + + let get_float = |i: &mut usize| -> f64 { + if let Some(cap) = re_float.captures(&d[*i..]) { + *i += cap[0].len(); + cap[1].parse().unwrap() + } else { + panic!("Invalid path data. Expected a number at index {}", i); + } + }; + + let get_bool = |i: &mut usize| -> bool { + if let Some(cap) = re_bool.captures(&d[*i..]) { + *i += cap[0].len(); + &cap[1] == "1" + } else { + panic!("Invalid path data. Expected a flag at index {}", i); + } + }; + + while let Some(cmd) = get_cmd(&mut i, last_cmd) { + last_cmd = cmd; + match cmd { + 'M' => commands.push(PathCommand::Absolute(AbsolutePathCommand::M(Vector::new( + get_float(&mut i), + get_float(&mut i), + )))), + 'L' => commands.push(PathCommand::Absolute(AbsolutePathCommand::L(Vector::new( + get_float(&mut i), + get_float(&mut i), + )))), + 'C' => commands.push(PathCommand::Absolute(AbsolutePathCommand::C( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'S' => commands.push(PathCommand::Absolute(AbsolutePathCommand::S( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'Q' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Q( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'T' => commands.push(PathCommand::Absolute(AbsolutePathCommand::T(Vector::new( + get_float(&mut i), + get_float(&mut i), + )))), + 'A' => commands.push(PathCommand::Absolute(AbsolutePathCommand::A( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_bool(&mut i), + get_bool(&mut i), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'Z' | 'z' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Z)), + 'H' => commands.push(PathCommand::Absolute(AbsolutePathCommand::H(get_float( + &mut i, + )))), + 'V' => commands.push(PathCommand::Absolute(AbsolutePathCommand::V(get_float( + &mut i, + )))), + 'm' => commands.push(PathCommand::Relative(RelativePathCommand::M( + get_float(&mut i), + get_float(&mut i), + ))), + 'l' => commands.push(PathCommand::Relative(RelativePathCommand::L( + get_float(&mut i), + get_float(&mut i), + ))), + 'h' => commands.push(PathCommand::Relative(RelativePathCommand::H(get_float( + &mut i, + )))), + 'v' => commands.push(PathCommand::Relative(RelativePathCommand::V(get_float( + &mut i, + )))), + 'c' => commands.push(PathCommand::Relative(RelativePathCommand::C( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 's' => commands.push(PathCommand::Relative(RelativePathCommand::S( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 'q' => commands.push(PathCommand::Relative(RelativePathCommand::Q( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 't' => commands.push(PathCommand::Relative(RelativePathCommand::T( + get_float(&mut i), + get_float(&mut i), + ))), + 'a' => commands.push(PathCommand::Relative(RelativePathCommand::A( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_bool(&mut i), + get_bool(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + _ => panic!("Invalid command: {}", cmd), + } + } + + commands +} + +pub fn path_from_path_data(d: &str) -> Path { + path_from_commands(commands_from_path_data(d)).collect() +} + +pub fn path_to_path_data(path: &Path, eps: f64) -> String { + path_to_commands(path.iter(), eps) + .map(|cmd| match cmd { + PathCommand::Absolute(abs_cmd) => match abs_cmd { + AbsolutePathCommand::H(dx) => format!("H{:.12}", dx), + AbsolutePathCommand::V(dy) => format!("V{:.12}", dy), + AbsolutePathCommand::M(p) => format!("M{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::L(p) => format!("L{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::C(p1, p2, p3) => format!( + "C{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", + p1.x, p1.y, p2.x, p2.y, p3.x, p3.y + ), + AbsolutePathCommand::S(p1, p2) => { + format!("S{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + } + AbsolutePathCommand::Q(p1, p2) => { + format!("Q{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + } + AbsolutePathCommand::T(p) => format!("T{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, p) => { + format!( + "A{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", + rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, p.x, p.y + ) + } + AbsolutePathCommand::Z => "Z".to_string(), + }, + PathCommand::Relative(rel_cmd) => match rel_cmd { + RelativePathCommand::M(dx, dy) => format!("m{:.12},{:.12}", dx, dy), + RelativePathCommand::L(dx, dy) => format!("l{:.12},{:.12}", dx, dy), + RelativePathCommand::H(dx) => format!("h{:.12}", dx), + RelativePathCommand::V(dy) => format!("v{:.12}", dy), + RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => format!( + "c{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", + dx1, dy1, dx2, dy2, dx, dy + ), + RelativePathCommand::S(dx2, dy2, dx, dy) => { + format!("s{:.12},{:.12} {:.12},{:.12}", dx2, dy2, dx, dy) + } + RelativePathCommand::Q(dx1, dy1, dx, dy) => { + format!("q{:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx, dy) + } + RelativePathCommand::T(dx, dy) => format!("t{:.12},{:.12}", dx, dy), + RelativePathCommand::A( + rx, + ry, + x_axis_rotation, + large_arc_flag, + sweep_flag, + dx, + dy, + ) => format!( + "a{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", + rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, dx, dy + ), + }, + }) + .collect::>() + .join(" ") +} diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs new file mode 100644 index 00000000000..d97fdd85c09 --- /dev/null +++ b/libraries/path-bool/src/path_segment.rs @@ -0,0 +1,449 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use glam::{DMat2, DMat3, DVec2}; +use std::f64::consts::{PI, TAU}; + +use crate::aabb::{ + bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AABB, +}; +use crate::math::{deg2rad, lerp, vector_angle}; +use crate::vector::Vector; + +#[derive(Clone, Copy, Debug, PartialEq)] +pub enum PathSegment { + Line(Vector, Vector), + Cubic(Vector, Vector, Vector, Vector), + Quadratic(Vector, Vector, Vector), + Arc(Vector, f64, f64, f64, bool, bool, Vector), +} + +pub struct PathArcSegmentCenterParametrization { + center: Vector, + theta1: f64, + delta_theta: f64, + rx: f64, + ry: f64, + phi: f64, +} + +pub fn get_start_point(seg: &PathSegment) -> Vector { + match seg { + PathSegment::Line(start, _) => *start, + PathSegment::Cubic(start, _, _, _) => *start, + PathSegment::Quadratic(start, _, _) => *start, + PathSegment::Arc(start, _, _, _, _, _, _) => *start, + } +} + +pub fn get_end_point(seg: &PathSegment) -> Vector { + match seg { + PathSegment::Line(_, end) => *end, + PathSegment::Cubic(_, _, _, end) => *end, + PathSegment::Quadratic(_, _, end) => *end, + PathSegment::Arc(_, _, _, _, _, _, end) => *end, + } +} + +pub fn reverse_path_segment(seg: &PathSegment) -> PathSegment { + match *seg { + PathSegment::Line(start, end) => PathSegment::Line(end, start), + PathSegment::Cubic(p1, p2, p3, p4) => PathSegment::Cubic(p4, p3, p2, p1), + PathSegment::Quadratic(p1, p2, p3) => PathSegment::Quadratic(p3, p2, p1), + PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { + PathSegment::Arc(end, rx, ry, phi, fa, !fs, start) + } + } +} + +pub fn arc_segment_to_center(seg: &PathSegment) -> Option { + if let PathSegment::Arc(xy1, rx, ry, phi, fa, fs, xy2) = *seg { + if rx == 0.0 || ry == 0.0 { + return None; + } + + let rotation_matrix = DMat2::from_angle(-deg2rad(phi)); + let mut xy1_prime = rotation_matrix * (xy1 - xy2) * 0.5; + + let mut rx2 = rx * rx; + let mut ry2 = ry * ry; + let x1_prime2 = xy1_prime.x * xy1_prime.x; + let y1_prime2 = xy1_prime.y * xy1_prime.y; + + let mut rx = rx.abs(); + let mut ry = ry.abs(); + let lambda = x1_prime2 / rx2 + y1_prime2 / ry2 + 1e-12; + if lambda > 1.0 { + let lambda_sqrt = lambda.sqrt(); + rx *= lambda_sqrt; + ry *= lambda_sqrt; + let lambda_abs = lambda.abs(); + rx2 *= lambda_abs; + ry2 *= lambda_abs; + } + + let sign = if fa == fs { -1.0 } else { 1.0 }; + let multiplier = ((rx2 * ry2 - rx2 * y1_prime2 - ry2 * x1_prime2) + / (rx2 * y1_prime2 + ry2 * x1_prime2)) + .sqrt(); + let cx_prime = sign * multiplier * ((rx * xy1_prime.y) / ry); + let cy_prime = sign * multiplier * ((-ry * xy1_prime.x) / rx); + + let cxy = rotation_matrix.transpose() * DVec2::new(cx_prime, cy_prime) + (xy1 + xy2) * 0.5; + + let vec1 = DVec2::new((xy1_prime.x - cx_prime) / rx, (xy1_prime.y - cy_prime) / ry); + let theta1 = vector_angle(DVec2::new(1.0, 0.0), vec1); + let mut delta_theta = vector_angle( + vec1, + DVec2::new( + (-xy1_prime.x - cx_prime) / rx, + (-xy1_prime.y - cy_prime) / ry, + ), + ); + + if !fs && delta_theta > 0.0 { + delta_theta -= TAU; + } else if fs && delta_theta < 0.0 { + delta_theta += TAU; + } + + Some(PathArcSegmentCenterParametrization { + center: cxy, + theta1, + delta_theta, + rx, + ry, + phi, + }) + } else { + None + } +} + +pub fn arc_segment_from_center(params: &PathArcSegmentCenterParametrization) -> PathSegment { + let rotation_matrix = DMat2::from_angle(params.phi); + + let xy1 = rotation_matrix + * DVec2::new( + params.rx * params.theta1.cos(), + params.ry * params.theta1.sin(), + ) + + params.center; + + let xy2 = rotation_matrix + * DVec2::new( + params.rx * (params.theta1 + params.delta_theta).cos(), + params.ry * (params.theta1 + params.delta_theta).sin(), + ) + + params.center; + + let fa = (params.delta_theta.abs() > PI) as bool; + let fs = params.delta_theta > 0.0; + + PathSegment::Arc(xy1, params.rx, params.ry, params.phi, fa, fs, xy2) +} + +pub fn sample_path_segment_at(seg: &PathSegment, t: f64) -> Vector { + match *seg { + PathSegment::Line(start, end) => start.lerp(end, t), + PathSegment::Cubic(p1, p2, p3, p4) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + let p23 = p3.lerp(p4, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + p012.lerp(p123, t) + } + PathSegment::Quadratic(p1, p2, p3) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + p01.lerp(p12, t) + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let theta = center_param.theta1 + t * center_param.delta_theta; + let p = DVec2::new(rx * theta.cos(), ry * theta.sin()); + let rotation_matrix = DMat2::from_angle(phi); + rotation_matrix * p + center_param.center + } else { + start.lerp(end, t) + } + } + } +} + +pub fn arc_segment_to_cubics(seg: &PathSegment, max_delta_theta: f64) -> Vec { + if let PathSegment::Arc(start, rx, ry, phi, _, _, end) = *seg { + if let Some(center_param) = arc_segment_to_center(seg) { + let count = ((center_param.delta_theta.abs() / max_delta_theta).ceil() as usize).max(1); + + let from_unit = DMat3::from_translation(center_param.center) + * DMat3::from_angle(deg2rad(phi)) + * DMat3::from_scale(DVec2::new(rx, ry)); + + let theta = center_param.delta_theta / count as f64; + let k = (4.0 / 3.0) * (theta / 4.0).tan(); + let sin_theta = theta.sin(); + let cos_theta = theta.cos(); + + (0..count) + .map(|i| { + let start = DVec2::new(1.0, 0.0); + let control1 = DVec2::new(1.0, k); + let control2 = DVec2::new(cos_theta + k * sin_theta, sin_theta - k * cos_theta); + let end = DVec2::new(cos_theta, sin_theta); + + let matrix = + DMat3::from_angle(center_param.theta1 + i as f64 * theta) * from_unit; + let start = (matrix * start.extend(1.0)).truncate(); + let control1 = (matrix * control1.extend(1.0)).truncate(); + let control2 = (matrix * control2.extend(1.0)).truncate(); + let end = (matrix * end.extend(1.0)).truncate(); + + PathSegment::Cubic(start, control1, control2, end) + }) + .collect() + } else { + vec![PathSegment::Line(start, end)] + } + } else { + vec![seg.clone()] + } +} + +fn eval_cubic_1d(p0: f64, p1: f64, p2: f64, p3: f64, t: f64) -> f64 { + let p01 = lerp(p0, p1, t); + let p12 = lerp(p1, p2, t); + let p23 = lerp(p2, p3, t); + let p012 = lerp(p01, p12, t); + let p123 = lerp(p12, p23, t); + lerp(p012, p123, t) +} + +fn cubic_bounding_interval(p0: f64, p1: f64, p2: f64, p3: f64) -> (f64, f64) { + let mut min = p0.min(p3); + let mut max = p0.max(p3); + + let a = 3.0 * (-p0 + 3.0 * p1 - 3.0 * p2 + p3); + let b = 6.0 * (p0 - 2.0 * p1 + p2); + let c = 3.0 * (p1 - p0); + let d = b * b - 4.0 * a * c; + + if d < 0.0 || a == 0.0 { + // TODO: if a=0, solve linear + return (min, max); + } + + let sqrt_d = d.sqrt(); + + let t0 = (-b - sqrt_d) / (2.0 * a); + if 0.0 < t0 && t0 < 1.0 { + let x0 = eval_cubic_1d(p0, p1, p2, p3, t0); + min = min.min(x0); + max = max.max(x0); + } + + let t1 = (-b + sqrt_d) / (2.0 * a); + if 0.0 < t1 && t1 < 1.0 { + let x1 = eval_cubic_1d(p0, p1, p2, p3, t1); + min = min.min(x1); + max = max.max(x1); + } + + (min, max) +} + +fn eval_quadratic_1d(p0: f64, p1: f64, p2: f64, t: f64) -> f64 { + let p01 = lerp(p0, p1, t); + let p12 = lerp(p1, p2, t); + lerp(p01, p12, t) +} + +fn quadratic_bounding_interval(p0: f64, p1: f64, p2: f64) -> (f64, f64) { + let mut min = p0.min(p2); + let mut max = p0.max(p2); + + let denominator = p0 - 2.0 * p1 + p2; + + if denominator == 0.0 { + return (min, max); + } + + let t = (p0 - p1) / denominator; + if 0.0 <= t && t <= 1.0 { + let x = eval_quadratic_1d(p0, p1, p2, t); + min = min.min(x); + max = max.max(x); + } + + (min, max) +} + +fn in_interval(x: f64, x0: f64, x1: f64) -> bool { + let mapped = (x - x0) / (x1 - x0); + 0.0 <= mapped && mapped <= 1.0 +} + +pub fn path_segment_bounding_box(seg: &PathSegment) -> AABB { + match *seg { + PathSegment::Line(start, end) => AABB { + top: start.y.min(end.y), + right: start.x.max(end.x), + bottom: start.y.max(end.y), + left: start.x.min(end.x), + }, + PathSegment::Cubic(p1, p2, p3, p4) => { + let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); + let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); + AABB { + top, + right, + bottom, + left, + } + } + PathSegment::Quadratic(p1, p2, p3) => { + let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); + let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); + AABB { + top, + right, + bottom, + left, + } + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let theta2 = center_param.theta1 + center_param.delta_theta; + let mut bounding_box = + extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end); + + if phi == 0.0 || rx == ry { + // FIXME: the following gives false positives, resulting in larger boxes + if in_interval(-PI, center_param.theta1, theta2) + || in_interval(PI, center_param.theta1, theta2) + { + bounding_box = extend_bounding_box( + Some(bounding_box), + DVec2::new(center_param.center.x - rx, center_param.center.y), + ); + } + if in_interval(-PI / 2.0, center_param.theta1, theta2) + || in_interval(3.0 * PI / 2.0, center_param.theta1, theta2) + { + bounding_box = extend_bounding_box( + Some(bounding_box), + DVec2::new(center_param.center.x, center_param.center.y - ry), + ); + } + if in_interval(0.0, center_param.theta1, theta2) + || in_interval(2.0 * PI, center_param.theta1, theta2) + { + bounding_box = extend_bounding_box( + Some(bounding_box), + DVec2::new(center_param.center.x + rx, center_param.center.y), + ); + } + if in_interval(PI / 2.0, center_param.theta1, theta2) + || in_interval(5.0 * PI / 2.0, center_param.theta1, theta2) + { + bounding_box = extend_bounding_box( + Some(bounding_box), + DVec2::new(center_param.center.x, center_param.center.y + ry), + ); + } + expand_bounding_box(&bounding_box, 1e-11) // TODO: get rid of expansion + } else { + // TODO: don't convert to cubics + let cubics = arc_segment_to_cubics(seg, PI / 16.0); + let mut bounding_box = None; + for cubic_seg in cubics { + bounding_box = Some(merge_bounding_boxes( + bounding_box, + &path_segment_bounding_box(&cubic_seg), + )); + } + bounding_box.unwrap_or_else(|| bounding_box_around_point(start, 0.0)) + } + } else { + extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end) + } + } + } +} + +pub fn split_segment_at(seg: &PathSegment, t: f64) -> (PathSegment, PathSegment) { + match *seg { + PathSegment::Line(start, end) => { + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + PathSegment::Cubic(p0, p1, p2, p3) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p23 = p2.lerp(p3, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + let p = p012.lerp(p123, t); + + ( + PathSegment::Cubic(p0, p01, p012, p), + PathSegment::Cubic(p, p123, p23, p3), + ) + } + PathSegment::Quadratic(p0, p1, p2) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p = p01.lerp(p12, t); + + ( + PathSegment::Quadratic(p0, p01, p), + PathSegment::Quadratic(p, p12, p2), + ) + } + PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let mid_theta = center_param.theta1 + center_param.delta_theta * t; + let mid_point = sample_path_segment_at(seg, t); + + let seg1 = PathSegment::Arc( + start, rx, ry, phi, false, // large arc flag for first half + fs, // sweep flag remains the same + mid_point, + ); + + let seg2 = PathSegment::Arc( + mid_point, rx, ry, phi, false, // large arc flag for second half + fs, // sweep flag remains the same + end, + ); + + (seg1, seg2) + } else { + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + } + } + // PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { + // if let Some(center_param) = arc_segment_to_center(seg) { + // let mid_delta_theta = center_param.delta_theta * t; + // let seg1 = arc_segment_from_center(&PathArcSegmentCenterParametrization { + // delta_theta: mid_delta_theta, + // ..center_param + // }); + // let seg2 = arc_segment_from_center(&PathArcSegmentCenterParametrization { + // theta1: center_param.theta1 + mid_delta_theta, + // delta_theta: center_param.delta_theta - mid_delta_theta, + // ..center_param + // }); + // (seg1, seg2) + // } else { + // // https://svgwg.org/svg2-draft/implnote.html#ArcCorrectionOutOfRangeRadii + // let p = start.lerp(end, t); + // (PathSegment::Line(start, p), PathSegment::Line(p, end)) + // } + // } + // } +} diff --git a/libraries/path-bool/src/quad_tree.rs b/libraries/path-bool/src/quad_tree.rs new file mode 100644 index 00000000000..d83adca5aea --- /dev/null +++ b/libraries/path-bool/src/quad_tree.rs @@ -0,0 +1,176 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use crate::aabb::AABB; +use crate::line_segment_aabb::line_segment_aabb_intersect; +use crate::vector::Vector; +use std::collections::HashSet; + +pub struct QuadTree { + bounding_box: AABB, + depth: usize, + inner_node_capacity: usize, + subtrees: Option; 4]>>, + pairs: Vec<(AABB, T)>, +} + +impl QuadTree { + pub fn from_pairs(pairs: &[(AABB, T)], depth: usize, inner_node_capacity: usize) -> Self { + if pairs.is_empty() { + panic!("QuadTree::from_pairs: at least one pair needed."); + } + + let mut bounding_box = pairs[0].0; + for (key, _) in pairs.iter().skip(1) { + bounding_box = crate::aabb::merge_bounding_boxes(Some(bounding_box), key); + } + + let mut tree = QuadTree::new(bounding_box, depth, inner_node_capacity); + + for (key, value) in pairs { + tree.insert(*key, value.clone()); + } + + tree + } + + pub fn new(bounding_box: AABB, depth: usize, inner_node_capacity: usize) -> Self { + QuadTree { + bounding_box, + depth, + inner_node_capacity, + subtrees: None, + pairs: Vec::new(), + } + } + + pub fn insert(&mut self, bounding_box: AABB, value: T) -> bool { + if !crate::aabb::bounding_boxes_overlap(&bounding_box, &self.bounding_box) { + return false; + } + + if self.depth > 0 && self.pairs.len() >= self.inner_node_capacity { + self.ensure_subtrees(); + for tree in self.subtrees.as_mut().unwrap().iter_mut() { + tree.insert(bounding_box, value.clone()); + } + } else { + self.pairs.push((bounding_box, value)); + } + + true + } + + pub fn find(&self, bounding_box: &AABB) -> HashSet + where + T: Eq + std::hash::Hash + Clone, + { + let mut set = HashSet::new(); + self.find_internal(bounding_box, &mut set); + set + } + + fn find_internal(&self, bounding_box: &AABB, set: &mut HashSet) + where + T: Eq + std::hash::Hash + Clone, + { + if !crate::aabb::bounding_boxes_overlap(bounding_box, &self.bounding_box) { + return; + } + + for (key, value) in &self.pairs { + if crate::aabb::bounding_boxes_overlap(bounding_box, key) { + set.insert(value.clone()); + } + } + + if let Some(subtrees) = &self.subtrees { + for tree in subtrees.iter() { + tree.find_internal(bounding_box, set); + } + } + } + + pub fn find_on_line_segment(&self, seg: [Vector; 2]) -> HashSet + where + T: Eq + std::hash::Hash + Clone, + { + let mut set = HashSet::new(); + self.find_on_line_segment_internal(seg, &mut set); + set + } + + fn find_on_line_segment_internal(&self, seg: [Vector; 2], set: &mut HashSet) + where + T: Eq + std::hash::Hash + Clone, + { + if !line_segment_aabb_intersect(seg, &self.bounding_box) { + return; + } + + for (key, value) in &self.pairs { + if line_segment_aabb_intersect(seg, key) { + set.insert(value.clone()); + } + } + + if let Some(subtrees) = &self.subtrees { + for tree in subtrees.iter() { + tree.find_on_line_segment_internal(seg, set); + } + } + } + + fn ensure_subtrees(&mut self) { + if self.subtrees.is_some() { + return; + } + + let midx = (self.bounding_box.left + self.bounding_box.right) / 2.0; + let midy = (self.bounding_box.top + self.bounding_box.bottom) / 2.0; + + self.subtrees = Some(Box::new([ + QuadTree::new( + AABB { + top: self.bounding_box.top, + right: midx, + bottom: midy, + left: self.bounding_box.left, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AABB { + top: self.bounding_box.top, + right: self.bounding_box.right, + bottom: midy, + left: midx, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AABB { + top: midy, + right: midx, + bottom: self.bounding_box.bottom, + left: self.bounding_box.left, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AABB { + top: midy, + right: self.bounding_box.right, + bottom: self.bounding_box.bottom, + left: midx, + }, + self.depth - 1, + self.inner_node_capacity, + ), + ])); + } +} diff --git a/libraries/path-bool/src/vector.rs b/libraries/path-bool/src/vector.rs new file mode 100644 index 00000000000..8005905b478 --- /dev/null +++ b/libraries/path-bool/src/vector.rs @@ -0,0 +1,15 @@ +// Copyright 2024 Adam Platkevič +// +// SPDX-License-Identifier: MIT + +use glam::DVec2; + +pub type Vector = DVec2; + +pub fn create_vector() -> Vector { + Vector::ZERO +} + +pub fn vectors_equal(a: Vector, b: Vector, eps: f64) -> bool { + a.abs_diff_eq(b, eps) +} diff --git a/libraries/path-bool/src/visual_tests.rs b/libraries/path-bool/src/visual_tests.rs new file mode 100644 index 00000000000..26e515a88a5 --- /dev/null +++ b/libraries/path-bool/src/visual_tests.rs @@ -0,0 +1,240 @@ +use core::panic; +use glob::glob; +use image::{DynamicImage, GenericImageView, RgbaImage}; +use resvg::render; +use resvg::tiny_skia::Transform; +use resvg::usvg::{Options, Tree}; +use std::fs; +use std::path::{Path, PathBuf}; +use svg::parser::Event; +use svg::parser::Parser; + +use crate::path_boolean::{self, FillRule, PathBooleanOperation}; +use crate::path_data::{path_from_path_data, path_to_path_data}; + +const TOLERANCE: u8 = 84; + +fn get_fill_rule(fill_rule: &str) -> FillRule { + match fill_rule { + "evenodd" => FillRule::EvenOdd, + _ => FillRule::NonZero, + } +} + +#[test] +fn visual_tests() { + let ops = [ + ("union", PathBooleanOperation::Union), + ("difference", PathBooleanOperation::Difference), + ("intersection", PathBooleanOperation::Intersection), + ("exclusion", PathBooleanOperation::Exclusion), + ("division", PathBooleanOperation::Division), + ("fracture", PathBooleanOperation::Fracture), + ]; + + let folders: Vec<(String, PathBuf, &str, PathBooleanOperation)> = + glob("__fixtures__/visual-tests/*/") + .expect("Failed to read glob pattern") + .flat_map(|entry| { + let dir = entry.expect("Failed to get directory entry"); + ops.iter().map(move |(op_name, op)| { + ( + dir.file_name().unwrap().to_string_lossy().into_owned(), + dir.clone(), + *op_name, + *op, + ) + }) + }) + .collect(); + + let mut failure = false; + + for (name, dir, op_name, op) in folders { + let test_name = format!("{} {}", name, op_name); + println!("Running test: {}", test_name); + + fs::create_dir_all(dir.join("test-results")) + .expect("Failed to create test-results directory"); + + let original_path = dir.join("original.svg"); + + let mut content = String::new(); + let svg_tree = svg::open(&original_path, &mut content).expect("Failed to parse SVG"); + + let mut paths = Vec::new(); + let mut first_path_attributes = String::new(); + let mut width = String::new(); + let mut height = String::new(); + let mut view_box = String::new(); + for event in svg_tree { + match event { + Event::Tag("svg", svg::node::element::tag::Type::Start, attributes) => { + width = attributes + .get("width") + .map(|s| s.to_string()) + .unwrap_or_default(); + height = attributes + .get("height") + .map(|s| s.to_string()) + .unwrap_or_default(); + view_box = attributes + .get("viewBox") + .map(|s| s.to_string()) + .unwrap_or_default(); + } + Event::Tag("path", svg::node::element::tag::Type::Empty, attributes) => { + let data = attributes + .get("d") + .map(|s| s.to_string()) + .expect("Path data not found"); + let fill_rule = attributes + .get("fill-rule") + .map(|v| v.to_string()) + .unwrap_or_else(|| "nonzero".to_string()); + paths.push((data, fill_rule)); + + // Store attributes of the first path + if first_path_attributes.is_empty() { + for (key, value) in attributes.iter() { + if key != "d" && key != "id" { + first_path_attributes.push_str(&format!("{}=\"{}\" ", key, value)); + } + } + } + } + _ => {} + } + } + + if (width.is_empty() || height.is_empty()) && !view_box.is_empty() { + let vb: Vec<&str> = view_box.split_whitespace().collect(); + if vb.len() == 4 { + width = vb[2].to_string(); + height = vb[3].to_string(); + } + } + + if width.is_empty() || height.is_empty() { + panic!("Failed to extract width and height from SVG"); + } + + let a_node = paths[0].clone(); + let b_node = paths[1].clone(); + + let a = path_from_path_data(&a_node.0); + let b = path_from_path_data(&b_node.0); + + let a_fill_rule = get_fill_rule(&a_node.1); + let b_fill_rule = get_fill_rule(&b_node.1); + + let result = path_boolean::path_boolean(&a, a_fill_rule, &b, b_fill_rule, op); + + // Create the result SVG with correct dimensions + let mut result_svg = format!( + "", + width, height, view_box + ); + for path in &result { + result_svg.push_str(&format!( + "", + path_to_path_data(path, 1e-4), + first_path_attributes + )); + } + result_svg.push_str(""); + + // Save the result SVG + let destination_path = dir + .join("test-results") + .join(format!("{}-ours.svg", op_name)); + fs::write(&destination_path, &result_svg).expect("Failed to write result SVG"); + + // Render and compare images + let ground_truth_path = dir.join(format!("{}.svg", op_name)); + let ground_truth_svg = + fs::read_to_string(&ground_truth_path).expect("Failed to read ground truth SVG"); + + let ours_image = render_svg(&result_svg); + let ground_truth_image = render_svg(&ground_truth_svg); + + let ours_png_path = dir + .join("test-results") + .join(format!("{}-ours.png", op_name)); + ours_image + .save(&ours_png_path) + .expect("Failed to save our PNG"); + + let ground_truth_png_path = dir.join("test-results").join(format!("{}.png", op_name)); + ground_truth_image + .save(&ground_truth_png_path) + .expect("Failed to save ground truth PNG"); + + failure |= compare_images( + &ours_image, + &ground_truth_image, + ours_image.width(), + TOLERANCE, + ); + + // Check the number of paths + let result_path_count = result.len(); + let ground_truth_path_count = ground_truth_svg.matches(" DynamicImage { + let opts = Options::default(); + let tree = Tree::from_str(svg_code, &opts).unwrap(); + let pixmap_size = tree.size.to_screen_size(); + let (width, height) = (pixmap_size.width(), pixmap_size.height()); + let mut pixmap = resvg::tiny_skia::Pixmap::new(width, height).unwrap(); + render( + &tree, + resvg::usvg::FitTo::Original, + Transform::default(), + pixmap.as_mut(), + ); + DynamicImage::ImageRgba8(RgbaImage::from_raw(width, height, pixmap.data().to_vec()).unwrap()) +} + +fn compare_images(img1: &DynamicImage, img2: &DynamicImage, width: u32, tolerance: u8) -> bool { + assert_eq!( + img1.dimensions(), + img2.dimensions(), + "Image dimensions do not match" + ); + + for (x, y, pixel1) in img1.pixels() { + let pixel2 = img2.get_pixel(x, y); + for i in 0..4 { + let difference = (pixel1[i] as i32 - pixel2[i] as i32).abs() as u8; + if difference > tolerance { + println!( + "Difference {} larger than tolerance {} at [{}, {}], channel {}.", + difference, tolerance, x, y, i + ); + return true; + } + + assert!( + difference <= tolerance, + "Difference {} larger than tolerance {} at [{}, {}], channel {}.", + difference, + tolerance, + x, + y, + i + ); + } + } + false +} From 5abda2894269fe16c99b70fc5470fa89a51120ce Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Mon, 2 Sep 2024 14:58:01 +0200 Subject: [PATCH 02/39] Cleanup code --- Cargo.lock | 117 +- libraries/path-bool/Cargo.toml | 11 +- libraries/path-bool/src/aabb.rs | 103 +- .../src/intersection_path_segment.rs | 270 +- libraries/path-bool/src/lib.rs | 138 +- libraries/path-bool/src/line_segment_aabb.rs | 144 +- libraries/path-bool/src/math.rs | 26 +- libraries/path-bool/src/path_boolean.rs | 3422 ++++++----------- libraries/path-bool/src/path_segment.rs | 691 ++-- libraries/path-bool/src/quad_tree.rs | 279 +- libraries/path-bool/src/vector.rs | 6 +- libraries/path-bool/src/visual_tests.rs | 369 +- 12 files changed, 2195 insertions(+), 3381 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 30ddb44bad6..e516360f456 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -519,7 +519,7 @@ name = "bezier-rs" version = "0.4.0" dependencies = [ "dyn-any", - "glam", + "glam 0.28.0", "kurbo", "log", "serde", @@ -530,7 +530,7 @@ name = "bezier-rs-wasm" version = "0.0.0" dependencies = [ "bezier-rs", - "glam", + "glam 0.28.0", "js-sys", "log", "serde", @@ -563,6 +563,12 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -1487,7 +1493,7 @@ name = "dyn-any" version = "0.3.1" dependencies = [ "dyn-any-derive", - "glam", + "glam 0.28.0", "log", "reqwest 0.12.7", ] @@ -1645,6 +1651,22 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.7.4", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] name = "fastnoise-lite" version = "1.1.1" @@ -1732,6 +1754,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2162,6 +2193,12 @@ dependencies = [ "serde", ] +[[package]] +name = "glam" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" + [[package]] name = "glib" version = "0.15.12" @@ -2332,7 +2369,7 @@ dependencies = [ "bytemuck", "dyn-any", "futures", - "glam", + "glam 0.28.0", "graphene-core", "log", "node-macro", @@ -2351,7 +2388,7 @@ dependencies = [ "criterion", "dyn-any", "futures", - "glam", + "glam 0.28.0", "glob", "graph-craft", "graphene-core", @@ -2383,7 +2420,7 @@ dependencies = [ "dyn-any", "fern", "futures", - "glam", + "glam 0.28.0", "gpu-executor", "graph-craft", "graphene-core", @@ -2408,7 +2445,7 @@ dependencies = [ "bytemuck", "ctor", "dyn-any", - "glam", + "glam 0.28.0", "half", "image 0.25.2", "js-sys", @@ -2443,7 +2480,7 @@ dependencies = [ "dyn-any", "fastnoise-lite", "futures", - "glam", + "glam 0.28.0", "gpu-compiler-bin-wrapper", "gpu-executor", "graph-craft", @@ -2503,7 +2540,7 @@ dependencies = [ "dyn-any", "env_logger", "futures", - "glam", + "glam 0.28.0", "gpu-executor", "graph-craft", "graphene-core", @@ -2544,7 +2581,7 @@ name = "graphite-wasm" version = "0.0.0" dependencies = [ "bezier-rs", - "glam", + "glam 0.28.0", "graph-craft", "graphene-core", "graphite-editor", @@ -3085,7 +3122,13 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", + "exr", + "gif", + "jpeg-decoder", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] @@ -3173,7 +3216,7 @@ version = "0.1.0" dependencies = [ "dyn-any", "futures", - "glam", + "glam 0.28.0", "gpu-executor", "graph-craft", "graphene-core", @@ -3312,6 +3355,9 @@ name = "jpeg-decoder" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] [[package]] name = "js-sys" @@ -3392,6 +3438,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + [[package]] name = "libc" version = "0.2.158" @@ -4269,6 +4321,19 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "path-bool" +version = "0.1.0" +dependencies = [ + "glam 0.29.0", + "glob", + "image 0.24.9", + "regex", + "resvg", + "slotmap", + "svg", +] + [[package]] name = "pathdiff" version = "0.2.1" @@ -4650,6 +4715,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + [[package]] name = "quick-xml" version = "0.31.0" @@ -5714,7 +5788,7 @@ name = "specta" version = "2.0.0-rc.20" source = "git+https://github.com/oscartbeaumont/specta.git#8509af0162b26bb2c08e84a41cdfc4eaf67a6ab3" dependencies = [ - "glam", + "glam 0.28.0", "specta-macros", "thiserror", ] @@ -5754,7 +5828,7 @@ version = "0.9.0" source = "git+https://github.com/GraphiteEditor/rust-gpu.git#7f60fbbdddc0d6effa1c3c86e3e11f9896c970e8" dependencies = [ "bitflags 1.3.2", - "glam", + "glam 0.28.0", "num-traits", "spirv-std-macros", "spirv-std-types", @@ -5844,6 +5918,12 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "svg" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d815ad337e8449d2374d4248448645edfe74e699343dd5719139d93fa87112" + [[package]] name = "svg_fmt" version = "0.4.3" @@ -7358,7 +7438,7 @@ dependencies = [ "dyn-any", "futures", "futures-intrusive", - "glam", + "glam 0.28.0", "gpu-executor", "graphene-core", "half", @@ -8274,6 +8354,15 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + [[package]] name = "zune-jpeg" version = "0.4.13" diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml index 2c26f466ea5..96c6e994536 100644 --- a/libraries/path-bool/Cargo.toml +++ b/libraries/path-bool/Cargo.toml @@ -1,15 +1,18 @@ [package] name = "path-bool" version = "0.1.0" -rustc-version = "1.79" +rust-version = "1.79" authors = ["Graphite Authors "] edition = "2021" keywords = ["bezier", "boolean", "path", "ops", "operations", "2d"] categories = ["graphics", "mathematics"] -licensce = "MIT OR Apache-2.0" +license = "MIT OR Apache-2.0" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] +logging = ["parsing"] +parsing = [] +default = ["parsing"] [dependencies] glam = "0.29.0" @@ -19,5 +22,5 @@ slotmap = "1.0.7" [dev-dependencies] glob = "0.3" svg = "0.13" -resvg = "0.28" +resvg = "0.42" image = "0.24" diff --git a/libraries/path-bool/src/aabb.rs b/libraries/path-bool/src/aabb.rs index 1a83a5695ff..719c400575e 100644 --- a/libraries/path-bool/src/aabb.rs +++ b/libraries/path-bool/src/aabb.rs @@ -5,71 +5,64 @@ use crate::vector::Vector; #[derive(Clone, Copy, Debug, PartialEq)] -pub struct AABB { - pub top: f64, - pub right: f64, - pub bottom: f64, - pub left: f64, +pub struct AaBb { + pub top: f64, + pub right: f64, + pub bottom: f64, + pub left: f64, } -pub fn bounding_box_contains_point(bounding_box: &AABB, point: Vector) -> bool { - point.x >= bounding_box.left - && point.x <= bounding_box.right - && point.y >= bounding_box.top - && point.y <= bounding_box.bottom +pub fn bounding_boxes_overlap(a: &AaBb, b: &AaBb) -> bool { + a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom } -pub fn bounding_boxes_overlap(a: &AABB, b: &AABB) -> bool { - a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom +pub fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { + match a { + Some(a) => AaBb { + top: a.top.min(b.top), + right: a.right.max(b.right), + bottom: a.bottom.max(b.bottom), + left: a.left.min(b.left), + }, + None => *b, + } } -pub fn merge_bounding_boxes(a: Option, b: &AABB) -> AABB { - match a { - Some(a) => AABB { - top: a.top.min(b.top), - right: a.right.max(b.right), - bottom: a.bottom.max(b.bottom), - left: a.left.min(b.left), - }, - None => *b, - } +pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AaBb { + match bounding_box { + Some(bb) => AaBb { + top: bb.top.min(point.y), + right: bb.right.max(point.x), + bottom: bb.bottom.max(point.y), + left: bb.left.min(point.x), + }, + None => AaBb { + top: point.y, + right: point.x, + bottom: point.y, + left: point.x, + }, + } } -pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AABB { - match bounding_box { - Some(bb) => AABB { - top: bb.top.min(point.y), - right: bb.right.max(point.x), - bottom: bb.bottom.max(point.y), - left: bb.left.min(point.x), - }, - None => AABB { - top: point.y, - right: point.x, - bottom: point.y, - left: point.x, - }, - } +pub fn bounding_box_max_extent(bounding_box: &AaBb) -> f64 { + (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) } -pub fn bounding_box_max_extent(bounding_box: &AABB) -> f64 { - (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) +pub fn bounding_box_around_point(point: Vector, padding: f64) -> AaBb { + AaBb { + top: point.y - padding, + right: point.x + padding, + bottom: point.y + padding, + left: point.x - padding, + } } -pub fn bounding_box_around_point(point: Vector, padding: f64) -> AABB { - AABB { - top: point.y - padding, - right: point.x + padding, - bottom: point.y + padding, - left: point.x - padding, - } -} - -pub fn expand_bounding_box(bounding_box: &AABB, padding: f64) -> AABB { - AABB { - top: bounding_box.top - padding, - right: bounding_box.right + padding, - bottom: bounding_box.bottom + padding, - left: bounding_box.left - padding, - } +pub fn expand_bounding_box(bounding_box: &AaBb, padding: f64) -> AaBb { + AaBb { + top: bounding_box.top - padding, + right: bounding_box.right + padding, + bottom: bounding_box.bottom + padding, + left: bounding_box.left - padding, + } } diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index f5e6dbb6bee..9078c3abb60 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AABB}; +use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AaBb}; use crate::epsilons::Epsilons; use crate::line_segment::{line_segment_intersection, line_segments_intersect}; use crate::line_segment_aabb::line_segment_aabb_intersect; @@ -12,176 +12,140 @@ use crate::vector::{vectors_equal, Vector}; #[derive(Clone)] struct IntersectionSegment { - seg: PathSegment, - start_param: f64, - end_param: f64, - bounding_box: AABB, + seg: PathSegment, + start_param: f64, + end_param: f64, + bounding_box: AaBb, } fn subdivide_intersection_segment(int_seg: &IntersectionSegment) -> [IntersectionSegment; 2] { - let (seg0, seg1) = split_segment_at(&int_seg.seg, 0.5); - let mid_param = (int_seg.start_param + int_seg.end_param) / 2.0; - [ - IntersectionSegment { - seg: seg0.clone(), - start_param: int_seg.start_param, - end_param: mid_param, - bounding_box: path_segment_bounding_box(&seg0), - }, - IntersectionSegment { - seg: seg1.clone(), - start_param: mid_param, - end_param: int_seg.end_param, - bounding_box: path_segment_bounding_box(&seg1), - }, - ] + let (seg0, seg1) = split_segment_at(&int_seg.seg, 0.5); + let mid_param = (int_seg.start_param + int_seg.end_param) / 2.0; + [ + IntersectionSegment { + seg: seg0, + start_param: int_seg.start_param, + end_param: mid_param, + bounding_box: path_segment_bounding_box(&seg0), + }, + IntersectionSegment { + seg: seg1, + start_param: mid_param, + end_param: int_seg.end_param, + bounding_box: path_segment_bounding_box(&seg1), + }, + ] } fn path_segment_to_line_segment(seg: &PathSegment) -> [Vector; 2] { - match seg { - PathSegment::Line(start, end) => [*start, *end], - PathSegment::Cubic(start, _, _, end) => [*start, *end], - PathSegment::Quadratic(start, _, end) => [*start, *end], - PathSegment::Arc(start, _, _, _, _, _, end) => [*start, *end], - } + match seg { + PathSegment::Line(start, end) => [*start, *end], + PathSegment::Cubic(start, _, _, end) => [*start, *end], + PathSegment::Quadratic(start, _, end) => [*start, *end], + PathSegment::Arc(start, _, _, _, _, _, end) => [*start, *end], + } } fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &IntersectionSegment) -> bool { - match (&seg0.seg, &seg1.seg) { - (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { - line_segments_intersect([*start0, *end0], [*start1, *end1], 1e-6) // TODO: configurable - } - (PathSegment::Line(start, end), _) => { - line_segment_aabb_intersect([*start, *end], &seg1.bounding_box) - } - (_, PathSegment::Line(start, end)) => { - line_segment_aabb_intersect([*start, *end], &seg0.bounding_box) - } - _ => bounding_boxes_overlap(&seg0.bounding_box, &seg1.bounding_box), - } + match (&seg0.seg, &seg1.seg) { + (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { + line_segments_intersect([*start0, *end0], [*start1, *end1], 1e-6) // TODO: configurable + } + (PathSegment::Line(start, end), _) => line_segment_aabb_intersect([*start, *end], &seg1.bounding_box), + (_, PathSegment::Line(start, end)) => line_segment_aabb_intersect([*start, *end], &seg0.bounding_box), + _ => bounding_boxes_overlap(&seg0.bounding_box, &seg1.bounding_box), + } } pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { - match (seg0.clone(), seg1.clone()) { - (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { - vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon) - } - (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { - vectors_equal(p00, p10, point_epsilon) - && vectors_equal(p01, p11, point_epsilon) - && vectors_equal(p02, p12, point_epsilon) - && vectors_equal(p03, p13, point_epsilon) - } - (PathSegment::Quadratic(p00, p01, p02), PathSegment::Quadratic(p10, p11, p12)) => { - vectors_equal(p00, p10, point_epsilon) - && vectors_equal(p01, p11, point_epsilon) - && vectors_equal(p02, p12, point_epsilon) - } - ( - PathSegment::Arc(p00, rx0, ry0, angle0, large_arc0, sweep0, p01), - PathSegment::Arc(p10, rx1, ry1, angle1, large_arc1, sweep1, p11), - ) => { - vectors_equal(p00, p10, point_epsilon) && + match (*seg0, *seg1) { + (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), + (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { + vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) && vectors_equal(p03, p13, point_epsilon) + } + (PathSegment::Quadratic(p00, p01, p02), PathSegment::Quadratic(p10, p11, p12)) => { + vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) + } + (PathSegment::Arc(p00, rx0, ry0, angle0, large_arc0, sweep0, p01), PathSegment::Arc(p10, rx1, ry1, angle1, large_arc1, sweep1, p11)) => { + vectors_equal(p00, p10, point_epsilon) && (rx0 - rx1).abs() < point_epsilon && (ry0 - ry1).abs() < point_epsilon && (angle0 - angle1).abs() < point_epsilon && // TODO: Phi can be anything if rx = ry. Also, handle rotations by Pi/2. large_arc0 == large_arc1 && sweep0 == sweep1 && vectors_equal(p01, p11, point_epsilon) - } - _ => false, - } + } + _ => false, + } } -pub fn path_segment_intersection( - seg0: &PathSegment, - seg1: &PathSegment, - endpoints: bool, - eps: &Epsilons, -) -> Vec<[f64; 2]> { - if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { - if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { - if !endpoints - && (st.0 < eps.param || st.0 > 1.0 - eps.param) - && (st.1 < eps.param || st.1 > 1.0 - eps.param) - { - return vec![]; - } - return vec![st.into()]; - } - } - - // https://math.stackexchange.com/questions/20321/how-can-i-tell-when-two-cubic-b%C3%A9zier-curves-intersect - - let mut pairs = vec![( - IntersectionSegment { - seg: seg0.clone(), - start_param: 0.0, - end_param: 1.0, - bounding_box: path_segment_bounding_box(seg0), - }, - IntersectionSegment { - seg: seg1.clone(), - start_param: 0.0, - end_param: 1.0, - bounding_box: path_segment_bounding_box(seg1), - }, - )]; - - let mut params = Vec::new(); - - while !pairs.is_empty() { - let mut next_pairs = Vec::new(); - - for (seg0, seg1) in pairs { - if segments_equal(&seg0.seg, &seg1.seg, eps.point) { - // TODO: move this outside of this loop? - continue; // TODO: what to do? - } - - let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; - let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; - - if is_linear0 && is_linear1 { - let line_segment0 = path_segment_to_line_segment(&seg0.seg); - let line_segment1 = path_segment_to_line_segment(&seg1.seg); - if let Some(st) = line_segment_intersection(line_segment0, line_segment1, eps.param) - { - params.push([ - lerp(seg0.start_param, seg0.end_param, st.0), - lerp(seg1.start_param, seg1.end_param, st.1), - ]); - } - } else { - let subdivided0 = if is_linear0 { - vec![seg0] - } else { - subdivide_intersection_segment(&seg0).to_vec() - }; - let subdivided1 = if is_linear1 { - vec![seg1] - } else { - subdivide_intersection_segment(&seg1).to_vec() - }; - - for seg0 in &subdivided0 { - for seg1 in &subdivided1 { - if intersection_segments_overlap(seg0, seg1) { - next_pairs.push((seg0.clone(), seg1.clone())); - } - } - } - } - } - - pairs = next_pairs; - } - - if !endpoints { - params.retain(|[s, t]| { - (s > &eps.param && s < &(1.0 - eps.param)) || (t > &eps.param && t < &(1.0 - eps.param)) - }); - } - - params +pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoints: bool, eps: &Epsilons) -> Vec<[f64; 2]> { + if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { + if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { + if !endpoints && (st.0 < eps.param || st.0 > 1.0 - eps.param) && (st.1 < eps.param || st.1 > 1.0 - eps.param) { + return vec![]; + } + return vec![st.into()]; + } + } + + // https://math.stackexchange.com/questions/20321/how-can-i-tell-when-two-cubic-b%C3%A9zier-curves-intersect + + let mut pairs = vec![( + IntersectionSegment { + seg: *seg0, + start_param: 0.0, + end_param: 1.0, + bounding_box: path_segment_bounding_box(seg0), + }, + IntersectionSegment { + seg: *seg1, + start_param: 0.0, + end_param: 1.0, + bounding_box: path_segment_bounding_box(seg1), + }, + )]; + + let mut params = Vec::new(); + + while !pairs.is_empty() { + let mut next_pairs = Vec::new(); + + for (seg0, seg1) in pairs { + if segments_equal(&seg0.seg, &seg1.seg, eps.point) { + // TODO: move this outside of this loop? + continue; // TODO: what to do? + } + + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; + let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; + + if is_linear0 && is_linear1 { + let line_segment0 = path_segment_to_line_segment(&seg0.seg); + let line_segment1 = path_segment_to_line_segment(&seg1.seg); + if let Some(st) = line_segment_intersection(line_segment0, line_segment1, eps.param) { + params.push([lerp(seg0.start_param, seg0.end_param, st.0), lerp(seg1.start_param, seg1.end_param, st.1)]); + } + } else { + let subdivided0 = if is_linear0 { vec![seg0] } else { subdivide_intersection_segment(&seg0).to_vec() }; + let subdivided1 = if is_linear1 { vec![seg1] } else { subdivide_intersection_segment(&seg1).to_vec() }; + + for seg0 in &subdivided0 { + for seg1 in &subdivided1 { + if intersection_segments_overlap(seg0, seg1) { + next_pairs.push((seg0.clone(), seg1.clone())); + } + } + } + } + } + + pairs = next_pairs; + } + + if !endpoints { + params.retain(|[s, t]| (s > &eps.param && s < &(1.0 - eps.param)) || (t > &eps.param && t < &(1.0 - eps.param))); + } + + params } diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 4109a76bb31..cbcdf55b6e2 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -8,7 +8,7 @@ mod path; pub mod path_boolean; mod path_command; mod path_cubic_segment_self_intersection; -mod path_data; +pub mod path_data; mod path_segment; mod quad_tree; mod vector; @@ -17,93 +17,65 @@ mod visual_tests; #[cfg(test)] mod test { - use crate::{ - path_boolean::{self, FillRule, PathBooleanOperation}, - path_data::{path_from_path_data, path_to_path_data}, - }; - use path_boolean::path_boolean; + use crate::{ + path_boolean::{self, FillRule, PathBooleanOperation}, + path_data::{path_from_path_data, path_to_path_data}, + }; + use path_boolean::path_boolean; - #[test] - fn square() { - // let a = path_from_path_data( - // "M 39,20 A 19,19 0 0 1 20,39 19,19 0 0 1 1,20 19,19 0 0 1 20,1 19,19 0 0 1 39,20 Z", - // ); - // let b = path_from_path_data( - // "M 47,28 A 19,19 0 0 1 28,47 19,19 0 0 1 9,28 19,19 0 0 1 28,9 19,19 0 0 1 47,28 Z", - // ); - let a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); - let b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); - // let a = path_from_path_data("M 0 0 L 10 0 L 5 10 Z"); - // let b = path_from_path_data("M 0 5 L 10 5 L 5 15 Z"); - let union = path_boolean( - &a, - path_boolean::FillRule::NonZero, - &b, - path_boolean::FillRule::NonZero, - path_boolean::PathBooleanOperation::Intersection, - ); - dbg!(path_to_path_data(&union[0], 0.001)); - // panic!(); - } + #[test] + fn square() { + // let a = path_from_path_data( + // "M 39,20 A 19,19 0 0 1 20,39 19,19 0 0 1 1,20 19,19 0 0 1 20,1 19,19 0 0 1 39,20 Z", + // ); + // let b = path_from_path_data( + // "M 47,28 A 19,19 0 0 1 28,47 19,19 0 0 1 9,28 19,19 0 0 1 28,9 19,19 0 0 1 47,28 Z", + // ); + let a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); + let b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); + // let a = path_from_path_data("M 0 0 L 10 0 L 5 10 Z"); + // let b = path_from_path_data("M 0 5 L 10 5 L 5 15 Z"); + let union = path_boolean( + &a, + path_boolean::FillRule::NonZero, + &b, + path_boolean::FillRule::NonZero, + path_boolean::PathBooleanOperation::Intersection, + ); + dbg!(path_to_path_data(&union[0], 0.001)); + // panic!(); + } - #[test] - fn nesting_01() { - let a = path_from_path_data( - "M 47,24 A 23,23 0 0 1 24,47 23,23 0 0 1 1,24 23,23 0 0 1 24,1 23,23 0 0 1 47,24 Z", - ); - let b = path_from_path_data("M 37.909023,24 A 13.909023,13.909023 0 0 1 24,37.909023 13.909023,13.909023 0 0 1 10.090978,24 13.909023,13.909023 0 0 1 24,10.090978 13.909023,13.909023 0 0 1 37.909023,24 Z"); - let union = path_boolean( - &a, - path_boolean::FillRule::NonZero, - &b, - path_boolean::FillRule::NonZero, - path_boolean::PathBooleanOperation::Union, - ); - dbg!(path_to_path_data(&union[0], 0.001)); - } - #[test] - fn nesting_02() { - let a = path_from_path_data( - "M 0.99999994,31.334457 C 122.61195,71.81859 -79.025816,-5.5803326 47,32.253367 V 46.999996 H 0.99999994 Z", - ); - let b = path_from_path_data("m 25.797222,29.08718 c 0,1.292706 -1.047946,2.340652 -2.340652,2.340652 -1.292707,0 -2.340652,-1.047946 -2.340652,-2.340652 0,-1.292707 1.047945,-2.340652 2.340652,-2.340652 1.292706,0 2.340652,1.047945 2.340652,2.340652 z M 7.5851073,28.332212 c 1e-7,1.292706 -1.0479456,2.340652 -2.3406521,2.340652 -1.2927063,-1e-6 -2.3406518,-1.047946 -2.3406517,-2.340652 -10e-8,-1.292707 1.0479454,-2.340652 2.3406517,-2.340652 1.2927065,-1e-6 2.3406522,1.047945 2.3406521,2.340652 z"); + #[test] + fn nesting_01() { + let a = path_from_path_data("M 47,24 A 23,23 0 0 1 24,47 23,23 0 0 1 1,24 23,23 0 0 1 24,1 23,23 0 0 1 47,24 Z"); + let b = path_from_path_data( + "M 37.909023,24 A 13.909023,13.909023 0 0 1 24,37.909023 13.909023,13.909023 0 0 1 10.090978,24 13.909023,13.909023 0 0 1 24,10.090978 13.909023,13.909023 0 0 1 37.909023,24 Z", + ); + let union = path_boolean(&a, path_boolean::FillRule::NonZero, &b, path_boolean::FillRule::NonZero, path_boolean::PathBooleanOperation::Union); + dbg!(path_to_path_data(&union[0], 0.001)); + } + #[test] + fn nesting_02() { + let a = path_from_path_data("M 0.99999994,31.334457 C 122.61195,71.81859 -79.025816,-5.5803326 47,32.253367 V 46.999996 H 0.99999994 Z"); + let b = path_from_path_data("m 25.797222,29.08718 c 0,1.292706 -1.047946,2.340652 -2.340652,2.340652 -1.292707,0 -2.340652,-1.047946 -2.340652,-2.340652 0,-1.292707 1.047945,-2.340652 2.340652,-2.340652 1.292706,0 2.340652,1.047945 2.340652,2.340652 z M 7.5851073,28.332212 c 1e-7,1.292706 -1.0479456,2.340652 -2.3406521,2.340652 -1.2927063,-1e-6 -2.3406518,-1.047946 -2.3406517,-2.340652 -10e-8,-1.292707 1.0479454,-2.340652 2.3406517,-2.340652 1.2927065,-1e-6 2.3406522,1.047945 2.3406521,2.340652 z"); - let result = path_boolean( - &a, - FillRule::NonZero, - &b, - FillRule::NonZero, - PathBooleanOperation::Union, - ); + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union); - // Add assertions here based on expected results - assert_eq!( - result.len(), - 1, - "Expected 1 resulting path for Union operation" - ); - // Add more specific assertions about the resulting path if needed - } - #[test] - fn simple_07() { - let a = path_from_path_data("M 37.671452,24 C 52.46888,31.142429 42.887716,37.358779 24,37.671452 16.4505,37.796429 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 6.871598,10.389295 13.671452,13.671452 z", + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + // Add more specific assertions about the resulting path if needed + } + #[test] + fn simple_07() { + let a = path_from_path_data("M 37.671452,24 C 52.46888,31.142429 42.887716,37.358779 24,37.671452 16.4505,37.796429 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 6.871598,10.389295 13.671452,13.671452 z", ); - let b = path_from_path_data("M 37.671452,24 C 33.698699,53.634887 29.50935,49.018306 24,37.671452 20.7021,30.879219 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 14.674677,6.187863 13.671452,13.671452 z"); + let b = path_from_path_data("M 37.671452,24 C 33.698699,53.634887 29.50935,49.018306 24,37.671452 20.7021,30.879219 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 14.674677,6.187863 13.671452,13.671452 z"); - let result = path_boolean( - &a, - FillRule::NonZero, - &b, - FillRule::NonZero, - PathBooleanOperation::Union, - ); + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union); - // Add assertions here based on expected results - assert_eq!( - result.len(), - 1, - "Expected 1 resulting path for Union operation" - ); - // Add more specific assertions about the resulting path if needed - } + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + // Add more specific assertions about the resulting path if needed + } } diff --git a/libraries/path-bool/src/line_segment_aabb.rs b/libraries/path-bool/src/line_segment_aabb.rs index 2238ef9a17c..ea188b04a10 100644 --- a/libraries/path-bool/src/line_segment_aabb.rs +++ b/libraries/path-bool/src/line_segment_aabb.rs @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: MIT -use crate::aabb::AABB; +use crate::aabb::AaBb; use crate::line_segment::LineSegment; const INSIDE: u8 = 0; @@ -11,87 +11,83 @@ const RIGHT: u8 = 1 << 1; const BOTTOM: u8 = 1 << 2; const TOP: u8 = 1 << 3; -fn out_code(x: f64, y: f64, bounding_box: &AABB) -> u8 { - let mut code = INSIDE; +fn out_code(x: f64, y: f64, bounding_box: &AaBb) -> u8 { + let mut code = INSIDE; - if x < bounding_box.left { - code |= LEFT; - } else if x > bounding_box.right { - code |= RIGHT; - } + if x < bounding_box.left { + code |= LEFT; + } else if x > bounding_box.right { + code |= RIGHT; + } - if y < bounding_box.top { - code |= BOTTOM; - } else if y > bounding_box.bottom { - code |= TOP; - } + if y < bounding_box.top { + code |= BOTTOM; + } else if y > bounding_box.bottom { + code |= TOP; + } - code + code } -pub fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AABB) -> bool { - let [mut p0, mut p1] = seg; +pub fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AaBb) -> bool { + let [mut p0, mut p1] = seg; - let mut outcode0 = out_code(p0.x, p0.y, bounding_box); - let mut outcode1 = out_code(p1.x, p1.y, bounding_box); + let mut outcode0 = out_code(p0.x, p0.y, bounding_box); + let mut outcode1 = out_code(p1.x, p1.y, bounding_box); - loop { - if (outcode0 | outcode1) == 0 { - // bitwise OR is 0: both points inside window; trivially accept and exit loop - return true; - } else if (outcode0 & outcode1) != 0 { - // bitwise AND is not 0: both points share an outside zone (LEFT, RIGHT, TOP, - // or BOTTOM), so both must be outside window; exit loop (accept is false) - return false; - } else { - // failed both tests, so calculate the line segment to clip - // from an outside point to an intersection with clip edge - let mut x = 0.0; - let mut y = 0.0; + loop { + if (outcode0 | outcode1) == 0 { + // bitwise OR is 0: both points inside window; trivially accept and exit loop + return true; + } else if (outcode0 & outcode1) != 0 { + // bitwise AND is not 0: both points share an outside zone (LEFT, RIGHT, TOP, + // or BOTTOM), so both must be outside window; exit loop (accept is false) + return false; + } else { + // failed both tests, so calculate the line segment to clip + // from an outside point to an intersection with clip edge + let mut x = 0.0; + let mut y = 0.0; - // At least one endpoint is outside the clip rectangle; pick it. - let outcode_out = if outcode1 > outcode0 { - outcode1 - } else { - outcode0 - }; + // At least one endpoint is outside the clip rectangle; pick it. + let outcode_out = if outcode1 > outcode0 { outcode1 } else { outcode0 }; - // Now find the intersection point; - // use formulas: - // slope = (y1 - y0) / (x1 - x0) - // x = x0 + (1 / slope) * (ym - y0), where ym is ymin or ymax - // y = y0 + slope * (xm - x0), where xm is xmin or xmax - // No need to worry about divide-by-zero because, in each case, the - // outcode bit being tested guarantees the denominator is non-zero - if (outcode_out & TOP) != 0 { - // point is above the clip window - x = p0.x + (p1.x - p0.x) * (bounding_box.bottom - p0.y) / (p1.y - p0.y); - y = bounding_box.bottom; - } else if (outcode_out & BOTTOM) != 0 { - // point is below the clip window - x = p0.x + (p1.x - p0.x) * (bounding_box.top - p0.y) / (p1.y - p0.y); - y = bounding_box.top; - } else if (outcode_out & RIGHT) != 0 { - // point is to the right of clip window - y = p0.y + (p1.y - p0.y) * (bounding_box.right - p0.x) / (p1.x - p0.x); - x = bounding_box.right; - } else if (outcode_out & LEFT) != 0 { - // point is to the left of clip window - y = p0.y + (p1.y - p0.y) * (bounding_box.left - p0.x) / (p1.x - p0.x); - x = bounding_box.left; - } + // Now find the intersection point; + // use formulas: + // slope = (y1 - y0) / (x1 - x0) + // x = x0 + (1 / slope) * (ym - y0), where ym is ymin or ymax + // y = y0 + slope * (xm - x0), where xm is xmin or xmax + // No need to worry about divide-by-zero because, in each case, the + // outcode bit being tested guarantees the denominator is non-zero + if (outcode_out & TOP) != 0 { + // point is above the clip window + x = p0.x + (p1.x - p0.x) * (bounding_box.bottom - p0.y) / (p1.y - p0.y); + y = bounding_box.bottom; + } else if (outcode_out & BOTTOM) != 0 { + // point is below the clip window + x = p0.x + (p1.x - p0.x) * (bounding_box.top - p0.y) / (p1.y - p0.y); + y = bounding_box.top; + } else if (outcode_out & RIGHT) != 0 { + // point is to the right of clip window + y = p0.y + (p1.y - p0.y) * (bounding_box.right - p0.x) / (p1.x - p0.x); + x = bounding_box.right; + } else if (outcode_out & LEFT) != 0 { + // point is to the left of clip window + y = p0.y + (p1.y - p0.y) * (bounding_box.left - p0.x) / (p1.x - p0.x); + x = bounding_box.left; + } - // Now we move outside point to intersection point to clip - // and get ready for next pass. - if outcode_out == outcode0 { - p0.x = x; - p0.y = y; - outcode0 = out_code(p0.x, p0.y, bounding_box); - } else { - p1.x = x; - p1.y = y; - outcode1 = out_code(p1.x, p1.y, bounding_box); - } - } - } + // Now we move outside point to intersection point to clip + // and get ready for next pass. + if outcode_out == outcode0 { + p0.x = x; + p0.y = y; + outcode0 = out_code(p0.x, p0.y, bounding_box); + } else { + p1.x = x; + p1.y = y; + outcode1 = out_code(p1.x, p1.y, bounding_box); + } + } + } } diff --git a/libraries/path-bool/src/math.rs b/libraries/path-bool/src/math.rs index 153ddadc14a..f8adf3a5c28 100644 --- a/libraries/path-bool/src/math.rs +++ b/libraries/path-bool/src/math.rs @@ -5,33 +5,29 @@ // TODO(@TrueDoctor) check math use crate::vector::Vector; -pub use std::f64::consts::{PI, TAU}; +pub use std::f64::consts::PI; pub fn lin_map(value: f64, in_min: f64, in_max: f64, out_min: f64, out_max: f64) -> f64 { - ((value - in_min) / (in_max - in_min)) * (out_max - out_min) + out_min + ((value - in_min) / (in_max - in_min)) * (out_max - out_min) + out_min } pub fn lerp(a: f64, b: f64, t: f64) -> f64 { - a + (b - a) * t -} - -pub fn rad2deg(rad: f64) -> f64 { - (rad / PI) * 180.0 + a + (b - a) * t } pub fn deg2rad(deg: f64) -> f64 { - (deg / 180.0) * PI + (deg / 180.0) * PI } pub fn vector_angle(u: Vector, v: Vector) -> f64 { - const EPS: f64 = 1e-12; + const EPS: f64 = 1e-12; - let sign = u.x * v.y - u.y * v.x; + let sign = u.x * v.y - u.y * v.x; - if sign.abs() < EPS && (u + v).length_squared() < EPS * EPS { - // TODO: u can be scaled - return PI; - } + if sign.abs() < EPS && (u + v).length_squared() < EPS * EPS { + // TODO: u can be scaled + return PI; + } - sign.signum() * (u.dot(v) / (u.length() * v.length())).acos() + sign.signum() * (u.dot(v) / (u.length() * v.length())).acos() } diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index c5ab2b4207e..bfaccd72615 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1,2395 +1,1391 @@ use slotmap::{new_key_type, SlotMap}; new_key_type! { - pub struct MajorVertexKey; - pub struct MajorEdgeKey; - pub struct MinorVertexKey; - pub struct MinorEdgeKey; - pub struct DualVertexKey; - pub struct DualEdgeKey; + pub struct MajorVertexKey; + pub struct MajorEdgeKey; + pub struct MinorVertexKey; + pub struct MinorEdgeKey; + pub struct DualVertexKey; + pub struct DualEdgeKey; } // Copyright 2024 Adam Platkevič // // SPDX-License-Identifier: MIT -use crate::aabb::{bounding_box_around_point, bounding_box_max_extent, merge_bounding_boxes, AABB}; +use crate::aabb::{bounding_box_around_point, bounding_box_max_extent, merge_bounding_boxes, AaBb}; use crate::epsilons::Epsilons; use crate::intersection_path_segment::{path_segment_intersection, segments_equal}; use crate::path::Path; use crate::path_cubic_segment_self_intersection::path_cubic_segment_self_intersection; -use crate::path_data::path_to_path_data; -use crate::path_segment::{ - get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, - sample_path_segment_at, split_segment_at, PathSegment, -}; +use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, sample_path_segment_at, split_segment_at, PathSegment}; use crate::quad_tree::QuadTree; use crate::vector::{vectors_equal, Vector}; -use std::collections::{HashMap, HashSet}; -use std::fmt::Write; +use std::collections::{HashMap, HashSet, VecDeque}; #[derive(Debug, Clone, Copy)] pub enum PathBooleanOperation { - Union, - Difference, - Intersection, - Exclusion, - Division, - Fracture, + Union, + Difference, + Intersection, + Exclusion, + Division, + Fracture, } #[derive(Debug, Clone, Copy)] pub enum FillRule { - NonZero, - EvenOdd, + NonZero, + EvenOdd, } const INTERSECTION_TREE_DEPTH: usize = 8; const POINT_TREE_DEPTH: usize = 8; const EPS: Epsilons = Epsilons { - point: 1e-6, - linear: 1e-4, - param: 1e-8, + point: 1e-6, + linear: 1e-4, + param: 1e-8, }; type MajorGraphEdgeStage1 = (PathSegment, u8); -type MajorGraphEdgeStage2 = (PathSegment, u8, AABB); +type MajorGraphEdgeStage2 = (PathSegment, u8, AaBb); #[derive(Debug, Clone)] -struct MajorGraphEdge { - seg: PathSegment, - parent: u8, - incident_vertices: [MajorVertexKey; 2], - direction_flag: Direction, - twin: Option, - bounding_box: AABB, +pub struct MajorGraphEdge { + seg: PathSegment, + parent: u8, + incident_vertices: [MajorVertexKey; 2], + direction_flag: Direction, + twin: Option, } #[derive(Debug, Clone, Default)] -struct MajorGraphVertex { - point: Vector, - outgoing_edges: Vec, +pub struct MajorGraphVertex { + pub point: Vector, + outgoing_edges: Vec, } #[derive(Debug, Clone)] struct MajorGraph { - edges: SlotMap, - vertices: SlotMap, + edges: SlotMap, + vertices: SlotMap, } #[derive(Debug, Clone, PartialEq)] struct MinorGraphEdge { - segments: Vec, - parent: u8, - incident_vertices: [MinorVertexKey; 2], - direction_flag: Direction, - twin: Option, + segments: Vec, + parent: u8, + incident_vertices: [MinorVertexKey; 2], + direction_flag: Direction, + twin: Option, } +#[cfg(feature = "logging")] impl MinorGraphEdge { - fn format_path(&self) -> String { - let mut output = String::new(); - let mut segments = self.segments.clone(); - if self.direction_flag.backwards() { - // segments.reverse(); - } - for segment in segments.into_iter() { - match segment { - PathSegment::Line(mut start, mut end) => { - if self.direction_flag.backwards() { - (end, start) = (start, end); - } - write!( - &mut output, - "{:.1},{:.1}-{:.1},{:.1} ", - start.x, start.y, end.x, end.y - ) - } - x => write!(&mut output, "{:?}", x), - }; - } - output - } + fn format_path(&self) -> String { + use std::fmt::Write; + let mut output = String::new(); + let segments = self.segments.clone(); + for segment in segments.into_iter() { + let _ = match segment { + PathSegment::Line(mut start, mut end) => { + if self.direction_flag.backwards() { + (end, start) = (start, end); + } + write!(&mut output, "{:.1},{:.1}-{:.1},{:.1} ", start.x, start.y, end.x, end.y) + } + x => write!(&mut output, "{:?}", x), + }; + } + output + } } #[derive(Debug, Clone, Default)] struct MinorGraphVertex { - outgoing_edges: Vec, + outgoing_edges: Vec, } #[derive(Debug, Clone)] struct MinorGraphCycle { - segments: Vec, - parent: u8, - direction_flag: Direction, + segments: Vec, + parent: u8, + direction_flag: Direction, } #[derive(Debug, Clone)] struct MinorGraph { - edges: SlotMap, - vertices: SlotMap, - cycles: Vec, + edges: SlotMap, + vertices: SlotMap, + cycles: Vec, } #[derive(Debug, Clone, PartialEq)] struct DualGraphHalfEdge { - segments: Vec, - parent: u8, - incident_vertex: DualVertexKey, - direction_flag: Direction, - twin: Option, + segments: Vec, + parent: u8, + incident_vertex: DualVertexKey, + direction_flag: Direction, + twin: Option, } #[derive(Debug, Clone, PartialEq, Eq, Hash)] struct DualGraphVertex { - incident_edges: Vec, + incident_edges: Vec, } #[derive(Debug, Clone)] struct DualGraphComponent { - edges: Vec, - vertices: Vec, - outer_face: Option, + edges: Vec, + vertices: Vec, + outer_face: Option, } #[derive(Debug, Clone)] struct DualGraph { - components: Vec, - edges: SlotMap, - vertices: SlotMap, + components: Vec, + edges: SlotMap, + vertices: SlotMap, } #[derive(Debug, Clone)] struct NestingTree { - component: DualGraphComponent, - outgoing_edges: HashMap>, + component: DualGraphComponent, + outgoing_edges: HashMap>, } +#[cfg(feature = "logging")] fn major_graph_to_dot(graph: &MajorGraph) -> String { - let mut dot = String::from("digraph {\n"); - for (vertex_key, vertex) in &graph.vertices { - dot.push_str(&format!( - " {:?} [label=\"{:.1},{:.1}\"]\n", - (vertex_key.0.as_ffi() & 0xFF) - 1, - vertex.point.x, - vertex.point.y - )); - } - for (edge_key, edge) in &graph.edges { - dot.push_str(&format!( - " {:?} -> {:?}: {:0b}\n", - (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, - (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, - edge.parent - )); - } - dot.push_str("}\n"); - dot + let mut dot = String::from("digraph {\n"); + for (vertex_key, vertex) in &graph.vertices { + dot.push_str(&format!(" {:?} [label=\"{:.1},{:.1}\"]\n", (vertex_key.0.as_ffi() & 0xFF) - 1, vertex.point.x, vertex.point.y)); + } + for (edge_key, edge) in &graph.edges { + dot.push_str(&format!( + " {:?} -> {:?}: {:0b}\n", + (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + edge.parent + )); + } + dot.push_str("}\n"); + dot } +#[cfg(feature = "logging")] fn minor_graph_to_dot(edges: &SlotMap) -> String { - let mut dot = String::from("digraph {\n"); - for (edge_key, edge) in edges { - dot.push_str(&format!( - " {:?} -> {:?}: {:0b}\n", - (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, - (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, - edge.parent - )); - } - dot.push_str("}\n"); - dot + let mut dot = String::from("digraph {\n"); + for edge in edges.values() { + dot.push_str(&format!( + " {:?} -> {:?}: {:0b}\n", + (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + edge.parent + )); + } + dot.push_str("}\n"); + dot } -fn dual_graph_to_dot( - components: &[DualGraphComponent], - edges: &SlotMap, -) -> String { - let mut dot = String::from("strict graph {\n"); - for component in components { - for &edge_key in &component.edges { - let edge = &edges[edge_key]; - dot.push_str(&format!( - " {:?} -- {:?}\n", - (edge.incident_vertex.0.as_ffi() & 0xFF) - 1, - (edge.twin.unwrap().0.as_ffi() & 0xFF) - 1 - )); - } - } - dot.push_str("}\n"); - dot +#[cfg(feature = "logging")] +fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap) -> String { + let mut dot = String::from("strict graph {\n"); + for component in components { + for &edge_key in &component.edges { + let edge = &edges[edge_key]; + dot.push_str(&format!(" {:?} -- {:?}\n", (edge.incident_vertex.0.as_ffi() & 0xFF) - 1, (edge.twin.unwrap().0.as_ffi() & 0xFF) - 1)); + } + } + dot.push_str("}\n"); + dot } fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> MajorGraphEdgeStage1 { - move |seg| (*seg, parent) + move |seg| (*seg, parent) } fn split_at_self_intersections(edges: &mut Vec) { - let mut new_edges = Vec::new(); - for (seg, parent) in edges.iter_mut() { - if let PathSegment::Cubic(..) = seg { - if let Some(intersection) = path_cubic_segment_self_intersection(seg) { - let mut intersection = intersection; - if intersection[0] > intersection[1] { - intersection.swap(0, 1); - } - let [t1, t2] = intersection; - if (t1 - t2).abs() < EPS.param { - let (seg1, seg2) = split_segment_at(seg, t1); - *seg = seg1; - new_edges.push((seg2, *parent)); - } else { - let (seg1, tmp_seg) = split_segment_at(seg, t1); - let (seg2, seg3) = split_segment_at(&tmp_seg, (t2 - t1) / (1.0 - t1)); - *seg = seg1; - new_edges.push((seg2, *parent)); - new_edges.push((seg3, *parent)); - } - } - } - } - edges.extend(new_edges); + let mut new_edges = Vec::new(); + for (seg, parent) in edges.iter_mut() { + if let PathSegment::Cubic(..) = seg { + if let Some(intersection) = path_cubic_segment_self_intersection(seg) { + let mut intersection = intersection; + if intersection[0] > intersection[1] { + intersection.swap(0, 1); + } + let [t1, t2] = intersection; + if (t1 - t2).abs() < EPS.param { + let (seg1, seg2) = split_segment_at(seg, t1); + *seg = seg1; + new_edges.push((seg2, *parent)); + } else { + let (seg1, tmp_seg) = split_segment_at(seg, t1); + let (seg2, seg3) = split_segment_at(&tmp_seg, (t2 - t1) / (1.0 - t1)); + *seg = seg1; + new_edges.push((seg2, *parent)); + new_edges.push((seg3, *parent)); + } + } + } + } + edges.extend(new_edges); } -fn split_at_intersections( - edges: &[MajorGraphEdgeStage1], -) -> (Vec, Option) { - // println!("Starting split_at_intersections with {} edges", edges.len()); - - // Step 1: Add bounding boxes to edges - let with_bounding_box: Vec = edges - .iter() - .map(|(seg, parent)| (*seg, *parent, path_segment_bounding_box(seg))) - .collect(); - // println!("Added bounding boxes to edges"); - - // Step 2: Calculate total bounding box - let total_bounding_box = with_bounding_box - .iter() - .fold(None, |acc, (_, _, bb)| Some(merge_bounding_boxes(acc, bb))); - - let total_bounding_box = match total_bounding_box { - Some(bb) => bb, - None => return (Vec::new(), None), - }; - // println!("Calculated total bounding box: {:?}", total_bounding_box); - - // Step 3: Create edge tree for efficient intersection checks - let mut edge_tree = QuadTree::new(total_bounding_box, INTERSECTION_TREE_DEPTH, 8); - - let mut splits_per_edge: HashMap> = HashMap::new(); - - // Helper function to add split - fn add_split(splits_per_edge: &mut HashMap>, i: usize, t: f64) { - splits_per_edge.entry(i).or_default().push(t); - // println!("Added split for edge {} at t={}", i, t); - } - - // Step 4: Find intersections and record split points - for i in 0..with_bounding_box.len() { - let edge = &with_bounding_box[i]; - let candidates = edge_tree.find(&edge.2); - // println!("Edge {}: Found {} candidates", i, candidates.len()); - for &j in &candidates { - let candidate: &(_, _) = &edges[j]; - let include_endpoints = edge.1 != candidate.1 - || !(vectors_equal( - get_end_point(&candidate.0), - get_start_point(&edge.0), - EPS.point, - ) || vectors_equal( - get_start_point(&candidate.0), - get_end_point(&edge.0), - EPS.point, - )); - let intersection = - path_segment_intersection(&edge.0, &candidate.0, include_endpoints, &EPS); - // println!( - // " Checking intersection between edge {} and {}: {:?}", - // i, j, intersection - // ); - for [t0, t1] in intersection { - add_split(&mut splits_per_edge, i, t0); - add_split(&mut splits_per_edge, j, t1); - } - } - edge_tree.insert(edge.2, i); - } - - // println!("Splits per edge: {:?}", splits_per_edge); - - // Step 5: Apply splits to create new edges - let mut new_edges = Vec::new(); - - for (i, (seg, parent, _)) in with_bounding_box.into_iter().enumerate() { - // println!("Processing edge {}", i); - if let Some(splits) = splits_per_edge.get(&i) { - let mut splits = splits.clone(); - splits.sort_by(|a, b| a.partial_cmp(b).unwrap()); - // println!(" Sorted splits: {:?}", splits); - let mut tmp_seg = seg; - let mut prev_t = 0.0; - for &t in splits.iter() { - if t > 1.0 - EPS.param { - // println!(" Breaking due to t > 1 - EPS.param"); - break; - } - let tt = (t - prev_t) / (1.0 - prev_t); - // println!(" t={}, prev_t={}, tt={}", t, prev_t, tt); - prev_t = t; - if tt < EPS.param { - // println!(" Skipping due to tt < EPS.param"); - continue; - } - if tt > 1.0 - EPS.param { - // println!(" Skipping due to tt > 1 - EPS.param"); - continue; - } - let (seg1, seg2) = split_segment_at(&tmp_seg, tt); - new_edges.push((seg1, parent, path_segment_bounding_box(&seg1))); - // println!(" Added new edge, total now: {}", new_edges.len()); - tmp_seg = seg2; - } - new_edges.push((tmp_seg, parent, path_segment_bounding_box(&tmp_seg))); - // println!(" Added final segment, total now: {}", new_edges.len()); - } else { - new_edges.push((seg, parent, path_segment_bounding_box(&seg))); - // println!(" Added unsplit edge, total now: {}", new_edges.len()); - } - } - - // println!("Final number of edges: {}", new_edges.len()); - (new_edges, Some(total_bounding_box)) +fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec, Option) { + // Step 1: Add bounding boxes to edges + let with_bounding_box: Vec = edges.iter().map(|(seg, parent)| (*seg, *parent, path_segment_bounding_box(seg))).collect(); + + // Step 2: Calculate total bounding box + let total_bounding_box = with_bounding_box.iter().fold(None, |acc, (_, _, bb)| Some(merge_bounding_boxes(acc, bb))); + + let total_bounding_box = match total_bounding_box { + Some(bb) => bb, + None => return (Vec::new(), None), + }; + + // Step 3: Create edge tree for efficient intersection checks + let mut edge_tree = QuadTree::new(total_bounding_box, INTERSECTION_TREE_DEPTH, 8); + + let mut splits_per_edge: HashMap> = HashMap::new(); + + fn add_split(splits_per_edge: &mut HashMap>, i: usize, t: f64) { + splits_per_edge.entry(i).or_default().push(t); + } + + // Step 4: Find intersections and record split points + for (i, edge) in with_bounding_box.iter().enumerate() { + let candidates = edge_tree.find(&edge.2); + for &j in &candidates { + let candidate: &(_, _) = &edges[j]; + let include_endpoints = edge.1 != candidate.1 + || !(vectors_equal(get_end_point(&candidate.0), get_start_point(&edge.0), EPS.point) || vectors_equal(get_start_point(&candidate.0), get_end_point(&edge.0), EPS.point)); + let intersection = path_segment_intersection(&edge.0, &candidate.0, include_endpoints, &EPS); + for [t0, t1] in intersection { + add_split(&mut splits_per_edge, i, t0); + add_split(&mut splits_per_edge, j, t1); + } + } + edge_tree.insert(edge.2, i); + } + + // Step 5: Apply splits to create new edges + let mut new_edges = Vec::new(); + + for (i, (seg, parent, _)) in with_bounding_box.into_iter().enumerate() { + if let Some(splits) = splits_per_edge.get(&i) { + let mut splits = splits.clone(); + splits.sort_by(|a, b| a.partial_cmp(b).unwrap()); + let mut tmp_seg = seg; + let mut prev_t = 0.0; + for &t in splits.iter() { + if t > 1.0 - EPS.param { + break; + } + let tt = (t - prev_t) / (1.0 - prev_t); + prev_t = t; + if tt < EPS.param { + continue; + } + if tt > 1.0 - EPS.param { + continue; + } + let (seg1, seg2) = split_segment_at(&tmp_seg, tt); + new_edges.push((seg1, parent, path_segment_bounding_box(&seg1))); + tmp_seg = seg2; + } + new_edges.push((tmp_seg, parent, path_segment_bounding_box(&tmp_seg))); + } else { + new_edges.push((seg, parent, path_segment_bounding_box(&seg))); + } + } + + (new_edges, Some(total_bounding_box)) } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -enum Direction { - Forward, - Backwards, +pub enum Direction { + Forward, + Backwards, } impl std::ops::Neg for Direction { - type Output = Self; - - fn neg(self) -> Self::Output { - match self { - Self::Forward => Self::Backwards, - Self::Backwards => Self::Forward, - } - } + type Output = Self; + + fn neg(self) -> Self::Output { + match self { + Self::Forward => Self::Backwards, + Self::Backwards => Self::Forward, + } + } } impl std::ops::Not for Direction { - type Output = Self; - - fn not(self) -> Self::Output { - match self { - Self::Forward => Self::Backwards, - Self::Backwards => Self::Forward, - } - } + type Output = Self; + + fn not(self) -> Self::Output { + match self { + Self::Forward => Self::Backwards, + Self::Backwards => Self::Forward, + } + } } impl Direction { - fn forward(self) -> bool { - self == Self::Forward - } - fn backwards(self) -> bool { - self == Self::Backwards - } + pub fn forward(self) -> bool { + self == Self::Forward + } + pub fn backwards(self) -> bool { + self == Self::Backwards + } } // TODO:(@TrueDoctor) Optimize this by rounding each vertex up and down and then inserting them in a hashmap. This should remove the need for bbox calculations and the quad tree -fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AABB) -> MajorGraph { - // println!("Starting find_vertices"); - // println!("Number of input edges: {}", edges.len()); - - let mut vertex_tree = QuadTree::new(bounding_box, POINT_TREE_DEPTH, 8); - let mut graph = MajorGraph { - edges: SlotMap::with_key(), - vertices: SlotMap::with_key(), - }; - - let mut parents: HashMap = HashMap::new(); - - let mut vertex_pair_id_to_edges: HashMap< - (MajorVertexKey, MajorVertexKey), - Vec<(MajorGraphEdgeStage2, MajorEdgeKey, MajorEdgeKey)>, - > = HashMap::new(); - - for (seg, parent, bounding_box) in edges { - let mut get_vertex = |point: Vector| -> MajorVertexKey { - let box_around_point = bounding_box_around_point(point, EPS.point); - if let Some(&existing_vertex) = vertex_tree.find(&box_around_point).iter().next() { - existing_vertex - } else { - let vertex_key = graph.vertices.insert(MajorGraphVertex { - point, - outgoing_edges: Vec::new(), - }); - vertex_tree.insert(box_around_point, vertex_key); - vertex_key - } - }; - // println!("Processing edge: {:?}, parent: {}", seg, parent); - - let start_point = get_start_point(seg); - let end_point = get_end_point(seg); - // println!(" Start point: {:?}", start_point); - // println!(" End point: {:?}", end_point); - - let start_vertex = get_vertex(start_point); - let end_vertex = get_vertex(end_point); - // println!(" Start vertex: {:?}", start_vertex); - // println!(" End vertex: {:?}", end_vertex); - let start_vertex = get_vertex(get_start_point(seg)); - let end_vertex = get_vertex(get_end_point(seg)); - - if start_vertex == end_vertex { - match seg { - PathSegment::Line(..) => continue, - PathSegment::Cubic(_, c1, c2, _) => { - if vectors_equal(*c1, *c2, EPS.point) { - continue; - } - } - PathSegment::Quadratic(_, c, _) => { - if vectors_equal(get_start_point(seg), *c, EPS.point) { - continue; - } - } - PathSegment::Arc(_, _, _, _, _, false, _) => continue, - _ => {} - } - } - - let vertex_pair_id = (start_vertex.min(end_vertex), start_vertex.max(end_vertex)); - if let Some(existing_edges) = vertex_pair_id_to_edges.get(&vertex_pair_id) { - if let Some(existing_edge) = existing_edges - .iter() - .find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point)) - { - println!("parent: {parent:0b}"); - *parents.entry(existing_edge.1).or_default() |= parent; - *parents.entry(existing_edge.2).or_default() |= parent; - continue; - } - } - - let fwd_edge_key = graph.edges.insert(MajorGraphEdge { - seg: *seg, - parent: *parent, - incident_vertices: [start_vertex, end_vertex], - direction_flag: Direction::Forward, - twin: None, - bounding_box: *bounding_box, - }); - - let bwd_edge_key = graph.edges.insert(MajorGraphEdge { - seg: *seg, - parent: *parent, - incident_vertices: [end_vertex, start_vertex], - direction_flag: Direction::Backwards, - twin: Some(fwd_edge_key), - bounding_box: *bounding_box, - }); - - graph.edges[fwd_edge_key].twin = Some(bwd_edge_key); - - graph.vertices[start_vertex] - .outgoing_edges - .push(fwd_edge_key); - graph.vertices[end_vertex].outgoing_edges.push(bwd_edge_key); - - vertex_pair_id_to_edges - .entry(vertex_pair_id) - .or_default() - .push(((*seg, *parent, *bounding_box), fwd_edge_key, bwd_edge_key)); - } - // println!("Finished find_vertices"); - // println!("Number of vertices: {}", graph.vertices.len()); - // println!("Number of edges: {}", graph.edges.len()); - for (edge_key, parent) in parents { - graph.edges[edge_key].parent |= parent; - } - - graph +fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGraph { + let mut vertex_tree = QuadTree::new(bounding_box, POINT_TREE_DEPTH, 8); + let mut graph = MajorGraph { + edges: SlotMap::with_key(), + vertices: SlotMap::with_key(), + }; + + let mut parents: HashMap = HashMap::new(); + + let mut vertex_pair_id_to_edges: HashMap<_, Vec<(MajorGraphEdgeStage2, MajorEdgeKey, MajorEdgeKey)>> = HashMap::new(); + + for (seg, parent, bounding_box) in edges { + let mut get_vertex = |point: Vector| -> MajorVertexKey { + let box_around_point = bounding_box_around_point(point, EPS.point); + if let Some(&existing_vertex) = vertex_tree.find(&box_around_point).iter().next() { + existing_vertex + } else { + let vertex_key = graph.vertices.insert(MajorGraphVertex { point, outgoing_edges: Vec::new() }); + vertex_tree.insert(box_around_point, vertex_key); + vertex_key + } + }; + + let start_vertex = get_vertex(get_start_point(seg)); + let end_vertex = get_vertex(get_end_point(seg)); + + if start_vertex == end_vertex { + match seg { + PathSegment::Line(..) => continue, + PathSegment::Cubic(_, c1, c2, _) => { + if vectors_equal(*c1, *c2, EPS.point) { + continue; + } + } + PathSegment::Quadratic(_, c, _) => { + if vectors_equal(get_start_point(seg), *c, EPS.point) { + continue; + } + } + PathSegment::Arc(_, _, _, _, _, false, _) => continue, + _ => {} + } + } + + let vertex_pair_id = (start_vertex.min(end_vertex), start_vertex.max(end_vertex)); + if let Some(existing_edges) = vertex_pair_id_to_edges.get(&vertex_pair_id) { + if let Some(existing_edge) = existing_edges.iter().find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point)) { + *parents.entry(existing_edge.1).or_default() |= parent; + *parents.entry(existing_edge.2).or_default() |= parent; + continue; + } + } + + let fwd_edge_key = graph.edges.insert(MajorGraphEdge { + seg: *seg, + parent: *parent, + incident_vertices: [start_vertex, end_vertex], + direction_flag: Direction::Forward, + twin: None, + }); + + let bwd_edge_key = graph.edges.insert(MajorGraphEdge { + seg: *seg, + parent: *parent, + incident_vertices: [end_vertex, start_vertex], + direction_flag: Direction::Backwards, + twin: Some(fwd_edge_key), + }); + + graph.edges[fwd_edge_key].twin = Some(bwd_edge_key); + + graph.vertices[start_vertex].outgoing_edges.push(fwd_edge_key); + graph.vertices[end_vertex].outgoing_edges.push(bwd_edge_key); + + vertex_pair_id_to_edges + .entry(vertex_pair_id) + .or_default() + .push(((*seg, *parent, *bounding_box), fwd_edge_key, bwd_edge_key)); + } + for (edge_key, parent) in parents { + graph.edges[edge_key].parent |= parent; + } + + graph } fn get_order(vertex: &MajorGraphVertex) -> usize { - vertex.outgoing_edges.len() + vertex.outgoing_edges.len() } fn compute_minor(major_graph: &MajorGraph) -> MinorGraph { - // println!("Starting compute_minor"); - // println!("Major graph edges: {}", major_graph.edges.len()); - // println!("Major graph vertices: {}", major_graph.vertices.len()); - - let mut new_edges = SlotMap::with_key(); - let mut new_vertices = SlotMap::with_key(); - let mut to_minor_vertex = HashMap::new(); - let mut id_to_edge = HashMap::new(); - let mut visited = HashSet::new(); - - // Handle components that are not cycles - for (major_vertex_key, vertex) in &major_graph.vertices { - // println!("Processing major vertex: {:?}", major_vertex_key); - // println!(" Outgoing edges: {:?}", vertex.outgoing_edges); - - // Edges are contracted - if get_order(vertex) == 2 { - continue; - } - let start_vertex = *to_minor_vertex.entry(major_vertex_key).or_insert_with(|| { - new_vertices.insert(MinorGraphVertex { - outgoing_edges: Vec::new(), - }) - }); - - for &start_edge_key in &vertex.outgoing_edges { - let mut segments = Vec::new(); - let mut edge_key = start_edge_key; - let mut edge = &major_graph.edges[edge_key]; - - while edge.parent == major_graph.edges[start_edge_key].parent - && edge.direction_flag == major_graph.edges[start_edge_key].direction_flag - && get_order(&major_graph.vertices[edge.incident_vertices[1]]) == 2 - { - segments.push(edge.seg); - visited.insert(edge.incident_vertices[1]); - let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; - // choose the edge which is not our twin so we can make progress - edge_key = *next_vertex - .outgoing_edges - .iter() - .find(|&&e| Some(e) != edge.twin) - .unwrap(); - edge = &major_graph.edges[edge_key]; - } - segments.push(edge.seg); - - let end_vertex = *to_minor_vertex - .entry(edge.incident_vertices[1]) - .or_insert_with(|| { - new_vertices.insert(MinorGraphVertex { - outgoing_edges: Vec::new(), - }) - }); - assert!(major_graph.edges[start_edge_key].twin.is_some()); - assert!(edge.twin.is_some()); - - let edge_id = (start_edge_key, edge_key); - let twin_id = ( - edge.twin.unwrap(), - major_graph.edges[start_edge_key].twin.unwrap(), - ); - - let twin_key = id_to_edge.get(&twin_id); - - let new_edge_key = new_edges.insert(MinorGraphEdge { - segments, - parent: major_graph.edges[start_edge_key].parent, - incident_vertices: [start_vertex, end_vertex], - direction_flag: major_graph.edges[start_edge_key].direction_flag, - twin: twin_key.copied(), - }); - if let Some(&twin_key) = twin_key { - new_edges[twin_key].twin = Some(new_edge_key); - } - id_to_edge.insert(edge_id, new_edge_key); - new_vertices[start_vertex].outgoing_edges.push(new_edge_key); - } - } - - // Ensure all edges have twins - // let mut insert_edges = Vec::new(); - // for (edge_key, edge) in new_edges.iter_mut() { - // if edge.twin.is_none() { - // panic!(); - // insert_edges.push((edge_key, edge.clone())); - // } - // } - // for (edge_key, edge) in insert_edges.iter_mut() { - // let twin_key = new_edges.insert(MinorGraphEdge { - // segments: edge - // .segments - // .iter() - // .rev() - // .map(reverse_path_segment) - // .collect(), - // parent: edge.parent, - // incident_vertices: [edge.incident_vertices[1], edge.incident_vertices[0]], - // direction_flag: !edge.direction_flag, - // twin: Some(*edge_key), - // }); - // edge.twin = Some(twin_key); - // new_vertices[edge.incident_vertices[1]] - // .outgoing_edges - // .push(twin_key); - // } - - // println!("Created {} minor edges", new_edges.len()); - for (edge_key, edge) in &new_edges { - // println!( - // " Minor edge {:?}: {:?} -> {:?}", - // edge_key, edge.incident_vertices[0], edge.incident_vertices[1] - // ); - } - - // Handle cyclic components (if any) - - let mut cycles = Vec::new(); - for (major_vertex_key, vertex) in &major_graph.vertices { - if vertex.outgoing_edges.len() != 2 || visited.contains(&major_vertex_key) { - continue; - } - let mut edge_key = vertex.outgoing_edges[0]; - let mut edge = &major_graph.edges[edge_key]; - let mut cycle = MinorGraphCycle { - segments: Vec::new(), - parent: edge.parent, - direction_flag: edge.direction_flag, - }; - loop { - cycle.segments.push(edge.seg); - visited.insert(edge.incident_vertices[0]); - assert_eq!( - major_graph.vertices[edge.incident_vertices[1]] - .outgoing_edges - .len(), - 2, - "Found an unvisited vertex of order != 2." - ); - let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; - edge_key = *next_vertex - .outgoing_edges - .iter() - .find(|&&e| Some(e) != edge.twin) - .unwrap(); - edge = &major_graph.edges[edge_key]; - if edge.incident_vertices[0] == major_vertex_key { - break; - } - } - cycles.push(cycle); - } - - // println!("Finished compute_minor"); - // println!("Minor graph edges: {}", new_edges.len()); - // println!("Minor graph vertices: {}", new_vertices.len()); - // println!("Minor graph cycles: {}", cycles.len()); - - MinorGraph { - edges: new_edges, - vertices: new_vertices, - cycles, - } + let mut new_edges = SlotMap::with_key(); + let mut new_vertices = SlotMap::with_key(); + let mut to_minor_vertex = HashMap::new(); + let mut id_to_edge = HashMap::new(); + let mut visited = HashSet::new(); + + // Handle components that are not cycles + for (major_vertex_key, vertex) in &major_graph.vertices { + // Edges are contracted + if get_order(vertex) == 2 { + continue; + } + let start_vertex = *to_minor_vertex + .entry(major_vertex_key) + .or_insert_with(|| new_vertices.insert(MinorGraphVertex { outgoing_edges: Vec::new() })); + + for &start_edge_key in &vertex.outgoing_edges { + let mut segments = Vec::new(); + let mut edge_key = start_edge_key; + let mut edge = &major_graph.edges[edge_key]; + + while edge.parent == major_graph.edges[start_edge_key].parent + && edge.direction_flag == major_graph.edges[start_edge_key].direction_flag + && get_order(&major_graph.vertices[edge.incident_vertices[1]]) == 2 + { + segments.push(edge.seg); + visited.insert(edge.incident_vertices[1]); + let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; + // choose the edge which is not our twin so we can make progress + edge_key = *next_vertex.outgoing_edges.iter().find(|&&e| Some(e) != edge.twin).unwrap(); + edge = &major_graph.edges[edge_key]; + } + segments.push(edge.seg); + + let end_vertex = *to_minor_vertex + .entry(edge.incident_vertices[1]) + .or_insert_with(|| new_vertices.insert(MinorGraphVertex { outgoing_edges: Vec::new() })); + assert!(major_graph.edges[start_edge_key].twin.is_some()); + assert!(edge.twin.is_some()); + + let edge_id = (start_edge_key, edge_key); + let twin_id = (edge.twin.unwrap(), major_graph.edges[start_edge_key].twin.unwrap()); + + let twin_key = id_to_edge.get(&twin_id); + + let new_edge_key = new_edges.insert(MinorGraphEdge { + segments, + parent: major_graph.edges[start_edge_key].parent, + incident_vertices: [start_vertex, end_vertex], + direction_flag: major_graph.edges[start_edge_key].direction_flag, + twin: twin_key.copied(), + }); + if let Some(&twin_key) = twin_key { + new_edges[twin_key].twin = Some(new_edge_key); + } + id_to_edge.insert(edge_id, new_edge_key); + new_vertices[start_vertex].outgoing_edges.push(new_edge_key); + } + } + + // Handle cyclic components (if any) + let mut cycles = Vec::new(); + for (major_vertex_key, vertex) in &major_graph.vertices { + if vertex.outgoing_edges.len() != 2 || visited.contains(&major_vertex_key) { + continue; + } + let mut edge_key = vertex.outgoing_edges[0]; + let mut edge = &major_graph.edges[edge_key]; + let mut cycle = MinorGraphCycle { + segments: Vec::new(), + parent: edge.parent, + direction_flag: edge.direction_flag, + }; + loop { + cycle.segments.push(edge.seg); + visited.insert(edge.incident_vertices[0]); + assert_eq!(major_graph.vertices[edge.incident_vertices[1]].outgoing_edges.len(), 2, "Found an unvisited vertex of order != 2."); + let next_vertex = &major_graph.vertices[edge.incident_vertices[1]]; + edge_key = *next_vertex.outgoing_edges.iter().find(|&&e| Some(e) != edge.twin).unwrap(); + edge = &major_graph.edges[edge_key]; + if edge.incident_vertices[0] == major_vertex_key { + break; + } + } + cycles.push(cycle); + } + + MinorGraph { + edges: new_edges, + vertices: new_vertices, + cycles, + } } fn remove_dangling_edges(graph: &mut MinorGraph) { - // Basically DFS for each parent with bfs number - fn walk(parent: u8, graph: &MinorGraph) -> HashSet { - let mut kept_vertices = HashSet::new(); - let mut vertex_to_level = HashMap::new(); - - fn visit( - vertex: MinorVertexKey, - incoming_edge: Option, - level: usize, - graph: &MinorGraph, - vertex_to_level: &mut HashMap, - kept_vertices: &mut HashSet, - parent: u8, - ) -> usize { - if let Some(&existing_level) = vertex_to_level.get(&vertex) { - return existing_level; - } - vertex_to_level.insert(vertex, level); - // println!( - // "inserting {}, with level {}", - // (vertex.0.as_ffi() & 0xFF) - 1, - // level - // ); - - let mut min_level = usize::MAX; - for &edge_key in &graph.vertices[vertex].outgoing_edges { - let edge = &graph.edges[edge_key]; - if edge.parent & parent != 0 && Some(edge_key) != incoming_edge { - min_level = min_level.min(visit( - edge.incident_vertices[1], - edge.twin, - level + 1, - graph, - vertex_to_level, - kept_vertices, - parent, - )); - } - } - - // println!("min_level: {min_level}, level: {level}"); - if min_level <= level { - // println!( - // "keeping {:?}, {}, {}", - // (vertex.0.as_ffi() & 0xFF) - 1, - // min_level, - // level - // ); - kept_vertices.insert(vertex); - } - - min_level - } - - for edge in graph.edges.values() { - // println!("parent: {parent}"); - if edge.parent & parent != 0 { - visit( - edge.incident_vertices[0], - None, - 0, - graph, - &mut vertex_to_level, - &mut kept_vertices, - parent, - ); - } - } - - kept_vertices - } - - let kept_vertices_a = walk(1, graph); - let kept_vertices_b = walk(2, graph); - // println!("keep a: {kept_vertices_a:?}"); - // println!("keep b: {kept_vertices_b:?}"); - - graph - .vertices - .retain(|k, _| kept_vertices_a.contains(&k) || kept_vertices_b.contains(&k)); - - for vertex in graph.vertices.values_mut() { - vertex.outgoing_edges.retain(|&edge_key| { - let edge = &graph.edges[edge_key]; - (edge.parent & 1 == 1 - && kept_vertices_a.contains(&edge.incident_vertices[0]) - && kept_vertices_a.contains(&edge.incident_vertices[1])) - || (edge.parent & 2 == 2 - && kept_vertices_b.contains(&edge.incident_vertices[0]) - && kept_vertices_b.contains(&edge.incident_vertices[1])) - }); - } - // TODO(@TrueDoctor): merge - graph.edges.retain(|_, edge| { - (edge.parent & 1 == 1 - && kept_vertices_a.contains(&edge.incident_vertices[0]) - && kept_vertices_a.contains(&edge.incident_vertices[1])) - || (edge.parent & 2 == 2 - && kept_vertices_b.contains(&edge.incident_vertices[0]) - && kept_vertices_b.contains(&edge.incident_vertices[1])) - }); + // Basically DFS for each parent with bfs number + fn walk(parent: u8, graph: &MinorGraph) -> HashSet { + let mut kept_vertices = HashSet::new(); + let mut vertex_to_level = HashMap::new(); + + fn visit( + vertex: MinorVertexKey, + incoming_edge: Option, + level: usize, + graph: &MinorGraph, + vertex_to_level: &mut HashMap, + kept_vertices: &mut HashSet, + parent: u8, + ) -> usize { + if let Some(&existing_level) = vertex_to_level.get(&vertex) { + return existing_level; + } + vertex_to_level.insert(vertex, level); + + let mut min_level = usize::MAX; + for &edge_key in &graph.vertices[vertex].outgoing_edges { + let edge = &graph.edges[edge_key]; + if edge.parent & parent != 0 && Some(edge_key) != incoming_edge { + min_level = min_level.min(visit(edge.incident_vertices[1], edge.twin, level + 1, graph, vertex_to_level, kept_vertices, parent)); + } + } + + if min_level <= level { + kept_vertices.insert(vertex); + } + + min_level + } + + for edge in graph.edges.values() { + if edge.parent & parent != 0 { + visit(edge.incident_vertices[0], None, 0, graph, &mut vertex_to_level, &mut kept_vertices, parent); + } + } + + kept_vertices + } + + let kept_vertices_a = walk(1, graph); + let kept_vertices_b = walk(2, graph); + + graph.vertices.retain(|k, _| kept_vertices_a.contains(&k) || kept_vertices_b.contains(&k)); + + for vertex in graph.vertices.values_mut() { + vertex.outgoing_edges.retain(|&edge_key| { + let edge = &graph.edges[edge_key]; + (edge.parent & 1 == 1 && kept_vertices_a.contains(&edge.incident_vertices[0]) && kept_vertices_a.contains(&edge.incident_vertices[1])) + || (edge.parent & 2 == 2 && kept_vertices_b.contains(&edge.incident_vertices[0]) && kept_vertices_b.contains(&edge.incident_vertices[1])) + }); + } + // TODO(@TrueDoctor): merge + graph.edges.retain(|_, edge| { + (edge.parent & 1 == 1 && kept_vertices_a.contains(&edge.incident_vertices[0]) && kept_vertices_a.contains(&edge.incident_vertices[1])) + || (edge.parent & 2 == 2 && kept_vertices_b.contains(&edge.incident_vertices[0]) && kept_vertices_b.contains(&edge.incident_vertices[1])) + }); } fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { - let seg = &edge.segments[0]; // TODO: explain in comment why this is always the incident one in both fwd and bwd - let (p0, p1) = if edge.direction_flag.forward() { - ( - sample_path_segment_at(seg, 0.0), - sample_path_segment_at(seg, EPS.param), - ) - } else { - ( - sample_path_segment_at(seg, 1.0), - sample_path_segment_at(seg, 1.0 - EPS.param), - ) - }; - (p1.y - p0.y).atan2(p1.x - p0.x) + let seg = &edge.segments[0]; // TODO: explain in comment why this is always the incident one in both fwd and bwd + let (p0, p1) = if edge.direction_flag.forward() { + (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) + } else { + (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) + }; + (p1.y - p0.y).atan2(p1.x - p0.x) } fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { - for vertex in graph.vertices.values_mut() { - if vertex.outgoing_edges.len() > 2 { - vertex.outgoing_edges.sort_by(|&a, &b| { - get_incidence_angle(&graph.edges[a]) - .partial_cmp(&get_incidence_angle(&graph.edges[b])) - .unwrap() - }); - } - } + for vertex in graph.vertices.values_mut() { + if vertex.outgoing_edges.len() > 2 { + vertex + .outgoing_edges + .sort_by(|&a, &b| get_incidence_angle(&graph.edges[a]).partial_cmp(&get_incidence_angle(&graph.edges[b])).unwrap()); + } + } } -fn face_to_polygon( - face: &DualGraphVertex, - edges: &SlotMap, -) -> Vec { - const CNT: usize = 3; - - face.incident_edges - .iter() - .flat_map(|&edge_key| { - let edge = &edges[edge_key]; - edge.segments.iter().flat_map(move |seg| { - (0..CNT).map(move |i| { - let t0 = i as f64 / CNT as f64; - let t = if edge.direction_flag.forward() { - t0 - } else { - 1.0 - t0 - }; - sample_path_segment_at(seg, t) - }) - }) - }) - .collect() +fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap) -> Vec { + const CNT: usize = 3; + + face.incident_edges + .iter() + .flat_map(|&edge_key| { + let edge = &edges[edge_key]; + edge.segments.iter().flat_map(move |seg| { + (0..CNT).map(move |i| { + let t0 = i as f64 / CNT as f64; + let t = if edge.direction_flag.forward() { t0 } else { 1.0 - t0 }; + sample_path_segment_at(seg, t) + }) + }) + }) + .collect() } fn interval_crosses_point(a: f64, b: f64, p: f64) -> bool { - let dy1 = a >= p; - let dy2 = b < p; - dy1 == dy2 + let dy1 = a >= p; + let dy2 = b < p; + dy1 == dy2 } fn line_segment_intersects_horizontal_ray(a: Vector, b: Vector, point: Vector) -> bool { - if !interval_crosses_point(a.y, b.y, point.y) { - return false; - } - let x = crate::math::lin_map(point.y, a.y, b.y, a.x, b.x); - x >= point.x + if !interval_crosses_point(a.y, b.y, point.y) { + return false; + } + let x = crate::math::lin_map(point.y, a.y, b.y, a.x, b.x); + x >= point.x } fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { - if polygon.len() <= 2 { - return 0; - } - let mut prev_point = polygon[polygon.len() - 1]; - let mut winding = 0; - for &point in polygon { - if line_segment_intersects_horizontal_ray(prev_point, point, tested_point) { - winding += if point.y > prev_point.y { -1 } else { 1 }; - } - prev_point = point; - } - winding + if polygon.len() <= 2 { + return 0; + } + let mut prev_point = polygon[polygon.len() - 1]; + let mut winding = 0; + for &point in polygon { + if line_segment_intersects_horizontal_ray(prev_point, point, tested_point) { + winding += if point.y > prev_point.y { -1 } else { 1 }; + } + prev_point = point; + } + winding } -fn compute_winding( - face: &DualGraphVertex, - edges: &SlotMap, -) -> (i32, Vector) { - let polygon = face_to_polygon(face, edges); - // println!( - // "Computing winding for polygon with {} points:", - // polygon.len() - // ); - for (i, point) in polygon.iter().enumerate() { - // println!(" Point {}: ({}, {})", i, point.x, point.y); - } - - for i in 0..polygon.len() { - let a = polygon[i]; - let b = polygon[(i + 1) % polygon.len()]; - let c = polygon[(i + 2) % polygon.len()]; - let center = (a + b + c) / 3.; - let winding = compute_point_winding(&polygon, center); - if winding != 0 { - return (winding, center); - } - } - - panic!("No ear in polygon found."); +fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> (i32, Vector) { + let polygon = face_to_polygon(face, edges); + + for i in 0..polygon.len() { + let a = polygon[i]; + let b = polygon[(i + 1) % polygon.len()]; + let c = polygon[(i + 2) % polygon.len()]; + let center = (a + b + c) / 3.; + let winding = compute_point_winding(&polygon, center); + if winding != 0 { + return (winding, center); + } + } + + panic!("No ear in polygon found."); } fn compute_dual(minor_graph: &MinorGraph) -> DualGraph { - // println!("Starting compute_dual function"); - // println!("Minor graph edges: {:?}", minor_graph.edges.len()); - // println!("Minor graph vertices: {:?}", minor_graph.vertices.len()); - - let mut new_vertices: Vec = Vec::new(); - let mut minor_to_dual_edge: HashMap = HashMap::new(); - let mut dual_edges = SlotMap::with_key(); - let mut dual_vertices = SlotMap::with_key(); - - for (start_edge_key, start_edge) in &minor_graph.edges { - // println!("Processing start edge: {:?}", start_edge_key,); - - if minor_to_dual_edge.contains_key(&start_edge_key) { - // println!("Edge {:?} already processed, skipping", start_edge_key); - continue; - } - - let face_key = dual_vertices.insert(DualGraphVertex { - incident_edges: Vec::new(), - }); - // println!("Created new face vertex: {:?}", face_key); - - let mut edge_key = start_edge_key; - let mut edge = start_edge; - - loop { - // println!("Processing edge: {:?}: {}", edge_key, edge.format_path()); - - let twin = edge.twin.expect("Edge doesn't have a twin"); - // println!("Twin edge: {:?}", twin); - - let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); - // println!("Twin dual key: {:?}", twin_dual_key); - - let new_edge_key = dual_edges.insert(DualGraphHalfEdge { - segments: edge.segments.clone(), - parent: edge.parent, - incident_vertex: face_key, - direction_flag: edge.direction_flag, - twin: twin_dual_key, - }); - // println!("Inserted new dual edge: {:?}", new_edge_key); - - if let Some(twin_key) = twin_dual_key { - dual_edges[twin_key].twin = Some(new_edge_key); - // println!("Updated twin of {:?} to {:?}", twin_key, new_edge_key); - } - - minor_to_dual_edge.insert(edge_key, new_edge_key); - // println!( - // "Mapped minor edge {:?} to dual edge {:?}", - // edge_key, new_edge_key - // ); - - dual_vertices[face_key].incident_edges.push(new_edge_key); - - edge_key = get_next_edge(edge_key, minor_graph); - edge = &minor_graph.edges[edge_key]; - // println!("Next edge: {:?}", edge_key); - - if edge.incident_vertices[0] == start_edge.incident_vertices[0] { - // println!("Completed face, breaking loop"); - break; - } - } - - new_vertices.push(face_key); - // println!("Added face vertex {:?} to new_vertices", face_key); - } - - // println!("Finished processing edges"); - // println!("New vertices: {:?}", new_vertices); - - for cycle in &minor_graph.cycles { - let inner_face_key = dual_vertices.insert(DualGraphVertex { - incident_edges: Vec::new(), - }); - let outer_face_key = dual_vertices.insert(DualGraphVertex { - incident_edges: Vec::new(), - }); - - let inner_half_edge_key = dual_edges.insert(DualGraphHalfEdge { - segments: cycle.segments.clone(), - parent: cycle.parent, - incident_vertex: inner_face_key, - direction_flag: cycle.direction_flag, - twin: None, - }); - - let outer_half_edge_key = dual_edges.insert(DualGraphHalfEdge { - segments: cycle.segments.iter().cloned().rev().collect(), - parent: cycle.parent, - incident_vertex: outer_face_key, - direction_flag: !cycle.direction_flag, - twin: Some(inner_half_edge_key), - }); - - dual_edges[inner_half_edge_key].twin = Some(outer_half_edge_key); - dual_vertices[inner_face_key] - .incident_edges - .push(inner_half_edge_key); - dual_vertices[outer_face_key] - .incident_edges - .push(outer_half_edge_key); - new_vertices.push(inner_face_key); - new_vertices.push(outer_face_key); - } - - let mut components = Vec::new(); - let mut visited_vertices = HashSet::new(); - let mut visited_edges = HashSet::new(); - - for &start_vertex_key in &new_vertices { - if visited_vertices.contains(&start_vertex_key) { - continue; - } - - let mut component_vertices = Vec::new(); - let mut component_edges = Vec::new(); - - let mut stack = vec![start_vertex_key]; - while let Some(vertex_key) = stack.pop() { - if visited_vertices.insert(vertex_key) { - component_vertices.push(vertex_key); - } - - for &edge_key in &dual_vertices[vertex_key].incident_edges { - if !visited_edges.insert(edge_key) { - continue; - } - - let edge = &dual_edges[edge_key]; - let twin_key = edge.twin.expect("Edge doesn't have a twin."); - component_edges.push(edge_key); - component_edges.push(twin_key); - visited_edges.insert(twin_key); - stack.push(dual_edges[twin_key].incident_vertex); - } - } - - let outer_face_key = *component_vertices - .iter() - .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) - .expect("No outer face of a component found."); - - assert_eq!( - component_vertices - .iter() - .filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) - .count(), - 1, - "Multiple outer faces found." - ); - - components.push(DualGraphComponent { - vertices: component_vertices, - edges: component_edges, - outer_face: Some(outer_face_key), - }); - } - - // println!("Dual graph components: {}", components.len()); - // for (i, component) in components.iter().enumerate() { - // println!( - // "Component {}: {} vertices, {} edges", - // i, - // component.vertices.len(), - // component.edges.len() - // ); - // } - - DualGraph { - vertices: dual_vertices, - edges: dual_edges, - components, - } + let mut new_vertices: Vec = Vec::new(); + let mut minor_to_dual_edge: HashMap = HashMap::new(); + let mut dual_edges = SlotMap::with_key(); + let mut dual_vertices = SlotMap::with_key(); + + for (start_edge_key, start_edge) in &minor_graph.edges { + if minor_to_dual_edge.contains_key(&start_edge_key) { + continue; + } + + let face_key = dual_vertices.insert(DualGraphVertex { incident_edges: Vec::new() }); + + let mut edge_key = start_edge_key; + let mut edge = start_edge; + + loop { + let twin = edge.twin.expect("Edge doesn't have a twin"); + let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); + + let new_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: edge.segments.clone(), + parent: edge.parent, + incident_vertex: face_key, + direction_flag: edge.direction_flag, + twin: twin_dual_key, + }); + + if let Some(twin_key) = twin_dual_key { + dual_edges[twin_key].twin = Some(new_edge_key); + } + + minor_to_dual_edge.insert(edge_key, new_edge_key); + + dual_vertices[face_key].incident_edges.push(new_edge_key); + + edge_key = get_next_edge(edge_key, minor_graph); + edge = &minor_graph.edges[edge_key]; + + if edge.incident_vertices[0] == start_edge.incident_vertices[0] { + break; + } + } + + new_vertices.push(face_key); + } + + for cycle in &minor_graph.cycles { + let inner_face_key = dual_vertices.insert(DualGraphVertex { incident_edges: Vec::new() }); + let outer_face_key = dual_vertices.insert(DualGraphVertex { incident_edges: Vec::new() }); + + let inner_half_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: cycle.segments.clone(), + parent: cycle.parent, + incident_vertex: inner_face_key, + direction_flag: cycle.direction_flag, + twin: None, + }); + + let outer_half_edge_key = dual_edges.insert(DualGraphHalfEdge { + segments: cycle.segments.iter().cloned().rev().collect(), + parent: cycle.parent, + incident_vertex: outer_face_key, + direction_flag: !cycle.direction_flag, + twin: Some(inner_half_edge_key), + }); + + dual_edges[inner_half_edge_key].twin = Some(outer_half_edge_key); + dual_vertices[inner_face_key].incident_edges.push(inner_half_edge_key); + dual_vertices[outer_face_key].incident_edges.push(outer_half_edge_key); + new_vertices.push(inner_face_key); + new_vertices.push(outer_face_key); + } + + let mut components = Vec::new(); + let mut visited_vertices = HashSet::new(); + let mut visited_edges = HashSet::new(); + + for &start_vertex_key in &new_vertices { + if visited_vertices.contains(&start_vertex_key) { + continue; + } + + let mut component_vertices = Vec::new(); + let mut component_edges = Vec::new(); + + let mut stack = vec![start_vertex_key]; + while let Some(vertex_key) = stack.pop() { + if visited_vertices.insert(vertex_key) { + component_vertices.push(vertex_key); + } + + for &edge_key in &dual_vertices[vertex_key].incident_edges { + if !visited_edges.insert(edge_key) { + continue; + } + + let edge = &dual_edges[edge_key]; + let twin_key = edge.twin.expect("Edge doesn't have a twin."); + component_edges.push(edge_key); + component_edges.push(twin_key); + visited_edges.insert(twin_key); + stack.push(dual_edges[twin_key].incident_vertex); + } + } + + let outer_face_key = *component_vertices + .iter() + .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) + .expect("No outer face of a component found."); + + assert_eq!( + component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count(), + 1, + "Multiple outer faces found." + ); + + components.push(DualGraphComponent { + vertices: component_vertices, + edges: component_edges, + outer_face: Some(outer_face_key), + }); + } + + DualGraph { + vertices: dual_vertices, + edges: dual_edges, + components, + } } fn get_next_edge(edge_key: MinorEdgeKey, graph: &MinorGraph) -> MinorEdgeKey { - let edge = &graph.edges[edge_key]; - let vertex = &graph.vertices[edge.incident_vertices[1]]; - let index = vertex - .outgoing_edges - .iter() - .position(|&e| Some(edge_key) == graph.edges[e].twin) - .unwrap(); - vertex.outgoing_edges[(index + 1) % vertex.outgoing_edges.len()] + let edge = &graph.edges[edge_key]; + let vertex = &graph.vertices[edge.incident_vertices[1]]; + let index = vertex.outgoing_edges.iter().position(|&e| Some(edge_key) == graph.edges[e].twin).unwrap(); + vertex.outgoing_edges[(index + 1) % vertex.outgoing_edges.len()] } -fn test_inclusion( - a: &DualGraphComponent, - b: &DualGraphComponent, - edges: &SlotMap, - vertices: &SlotMap, -) -> Option { - let tested_point = get_start_point(&edges[a.edges[0]].segments[0]); - for (face_key, face) in b.vertices.iter().map(|&key| (key, &vertices[key])) { - if Some(face_key) == b.outer_face { - continue; - } - let mut count = 0; - for &edge_key in &face.incident_edges { - let edge = &edges[edge_key]; - for seg in &edge.segments { - count += path_segment_horizontal_ray_intersection_count(seg, tested_point); - } - } - if count % 2 == 1 { - return Some(face_key); - } - } - None +fn test_inclusion(a: &DualGraphComponent, b: &DualGraphComponent, edges: &SlotMap, vertices: &SlotMap) -> Option { + let tested_point = get_start_point(&edges[a.edges[0]].segments[0]); + for (face_key, face) in b.vertices.iter().map(|&key| (key, &vertices[key])) { + if Some(face_key) == b.outer_face { + continue; + } + let mut count = 0; + for &edge_key in &face.incident_edges { + let edge = &edges[edge_key]; + for seg in &edge.segments { + count += path_segment_horizontal_ray_intersection_count(seg, tested_point); + } + } + if count % 2 == 1 { + return Some(face_key); + } + } + None } -fn bounding_box_intersects_horizontal_ray(bounding_box: &AABB, point: Vector) -> bool { - interval_crosses_point(bounding_box.top, bounding_box.bottom, point[1]) - && bounding_box.right >= point[0] +fn bounding_box_intersects_horizontal_ray(bounding_box: &AaBb, point: Vector) -> bool { + interval_crosses_point(bounding_box.top, bounding_box.bottom, point[1]) && bounding_box.right >= point[0] } struct IntersectionSegment { - bounding_box: AABB, - seg: PathSegment, + bounding_box: AaBb, + seg: PathSegment, } -pub fn path_segment_horizontal_ray_intersection_count( - orig_seg: &PathSegment, - point: Vector, -) -> usize { - // println!("Checking segment: {:?}", orig_seg); - // println!("Against point: {:?}", point); - - let total_bounding_box = path_segment_bounding_box(orig_seg); - // println!("Total bounding box: {:?}", total_bounding_box); - - if !bounding_box_intersects_horizontal_ray(&total_bounding_box, point) { - // println!("Ray doesn't intersect bounding box. Returning 0."); - return 0; - } - - let mut segments = vec![IntersectionSegment { - bounding_box: total_bounding_box, - seg: *orig_seg, - }]; - let mut count = 0; - let mut iterations = 0; - - while !segments.is_empty() { - iterations += 1; - // println!( - // "Iteration {}, segments to check: {}", - // iterations, - // segments.len() - // ); - - let mut next_segments = Vec::new(); - for segment in segments { - // println!("Checking sub-segment: {:?}", segment.seg); - // println!( - // "Segment endpoints: start={:?}, end={:?}", - // get_start_point(&segment.seg), - // get_end_point(&segment.seg) - // ); - if bounding_box_max_extent(&segment.bounding_box) < EPS.linear { - // println!("Segment is small enough. Checking for intersection."); - if line_segment_intersects_horizontal_ray( - get_start_point(&segment.seg), - get_end_point(&segment.seg), - point, - ) { - count += 1; - // println!("Intersection found. Current count: {}", count); - } - } else { - // println!("Subdividing segment."); - let split = split_segment_at(&segment.seg, 0.5); - let bounding_box0 = path_segment_bounding_box(&split.0); - let bounding_box1 = path_segment_bounding_box(&split.1); - - if bounding_box_intersects_horizontal_ray(&bounding_box0, point) { - next_segments.push(IntersectionSegment { - bounding_box: bounding_box0, - seg: split.0, - }); - // println!("First half intersects. Added to next iteration."); - } - if bounding_box_intersects_horizontal_ray(&bounding_box1, point) { - next_segments.push(IntersectionSegment { - bounding_box: bounding_box1, - seg: split.1, - }); - // println!("Second half intersects. Added to next iteration."); - } - } - } - segments = next_segments; - } - - // println!("Final count: {}, after {} iterations", count, iterations); - count +pub fn path_segment_horizontal_ray_intersection_count(orig_seg: &PathSegment, point: Vector) -> usize { + let total_bounding_box = path_segment_bounding_box(orig_seg); + + if !bounding_box_intersects_horizontal_ray(&total_bounding_box, point) { + return 0; + } + + let mut segments = vec![IntersectionSegment { + bounding_box: total_bounding_box, + seg: *orig_seg, + }]; + let mut count = 0; + + while !segments.is_empty() { + let mut next_segments = Vec::new(); + for segment in segments { + if bounding_box_max_extent(&segment.bounding_box) < EPS.linear { + if line_segment_intersects_horizontal_ray(get_start_point(&segment.seg), get_end_point(&segment.seg), point) { + count += 1; + } + } else { + let split = split_segment_at(&segment.seg, 0.5); + let bounding_box0 = path_segment_bounding_box(&split.0); + let bounding_box1 = path_segment_bounding_box(&split.1); + + if bounding_box_intersects_horizontal_ray(&bounding_box0, point) { + next_segments.push(IntersectionSegment { + bounding_box: bounding_box0, + seg: split.0, + }); + } + if bounding_box_intersects_horizontal_ray(&bounding_box1, point) { + next_segments.push(IntersectionSegment { + bounding_box: bounding_box1, + seg: split.1, + }); + } + } + } + segments = next_segments; + } + + count } -fn compute_nesting_tree( - DualGraph { - components, - vertices, - edges, - }: &DualGraph, -) -> Vec { - let mut nesting_trees = Vec::new(); +fn compute_nesting_tree(DualGraph { components, vertices, edges }: &DualGraph) -> Vec { + let mut nesting_trees = Vec::new(); - for component in components { - insert_component(&mut nesting_trees, component, edges, vertices); - } + for component in components { + insert_component(&mut nesting_trees, component, edges, vertices); + } - nesting_trees + nesting_trees } -fn insert_component( - trees: &mut Vec, - component: &DualGraphComponent, - edges: &SlotMap, - vertices: &SlotMap, -) { - for tree in trees.iter_mut() { - if let Some(face_key) = test_inclusion(component, &tree.component, edges, vertices) { - if let Some(children) = tree.outgoing_edges.get_mut(&face_key) { - insert_component(children, component, edges, vertices); - } else { - tree.outgoing_edges.insert( - face_key, - vec![NestingTree { - component: component.clone(), - outgoing_edges: HashMap::new(), - }], - ); - } - return; - } - } - - let mut new_tree = NestingTree { - component: component.clone(), - outgoing_edges: HashMap::new(), - }; - - let mut i = 0; - while i < trees.len() { - if let Some(face_key) = - test_inclusion(&trees[i].component, &new_tree.component, edges, vertices) - { - // TODO: (@TrueDoctor) use swap remove - let tree = trees.remove(i); - new_tree - .outgoing_edges - .entry(face_key) - .or_default() - .push(tree); - } else { - i += 1; - } - } - - trees.push(new_tree); +fn insert_component(trees: &mut Vec, component: &DualGraphComponent, edges: &SlotMap, vertices: &SlotMap) { + for tree in trees.iter_mut() { + if let Some(face_key) = test_inclusion(component, &tree.component, edges, vertices) { + if let Some(children) = tree.outgoing_edges.get_mut(&face_key) { + insert_component(children, component, edges, vertices); + } else { + tree.outgoing_edges.insert( + face_key, + vec![NestingTree { + component: component.clone(), + outgoing_edges: HashMap::new(), + }], + ); + } + return; + } + } + + let mut new_tree = NestingTree { + component: component.clone(), + outgoing_edges: HashMap::new(), + }; + + let mut i = 0; + while i < trees.len() { + if let Some(face_key) = test_inclusion(&trees[i].component, &new_tree.component, edges, vertices) { + // TODO: (@TrueDoctor) use swap remove + let tree = trees.remove(i); + new_tree.outgoing_edges.entry(face_key).or_default().push(tree); + } else { + i += 1; + } + } + + trees.push(new_tree); } fn get_flag(count: i32, fill_rule: FillRule) -> u8 { - match fill_rule { - FillRule::NonZero => { - if count == 0 { - 0 - } else { - 1 - } - } - FillRule::EvenOdd => (count % 2).unsigned_abs() as u8, - } + match fill_rule { + FillRule::NonZero => { + if count == 0 { + 0 + } else { + 1 + } + } + FillRule::EvenOdd => (count % 2).unsigned_abs() as u8, + } } fn flag_faces( - nesting_trees: &mut [NestingTree], - a_fill_rule: FillRule, - b_fill_rule: FillRule, - edges: &SlotMap, - vertices: &SlotMap, - flags: &mut HashMap, + nesting_trees: &[NestingTree], + a_fill_rule: FillRule, + b_fill_rule: FillRule, + edges: &SlotMap, + vertices: &SlotMap, + flags: &mut HashMap, ) { - fn visit_tree( - tree: &mut NestingTree, - a_running_count: i32, - b_running_count: i32, - a_fill_rule: FillRule, - b_fill_rule: FillRule, - edges: &SlotMap, - vertices: &SlotMap, - flags: &mut HashMap, - ) { - let mut visited_faces = HashSet::new(); - - fn visit_face( - face_key: DualVertexKey, - a_running_count: i32, - b_running_count: i32, - tree: &mut NestingTree, - visited_faces: &mut HashSet, - a_fill_rule: FillRule, - b_fill_rule: FillRule, - edges: &SlotMap, - vertices: &SlotMap, - flags: &mut HashMap, - ) { - if visited_faces.contains(&face_key) { - return; - } - visited_faces.insert(face_key); - - let a_flag = get_flag(a_running_count, a_fill_rule); - let b_flag = get_flag(b_running_count, b_fill_rule); - *flags.entry(face_key).or_default() = a_flag | (b_flag << 1); - - for edge_key in vertices[face_key].incident_edges.clone() { - let edge = &edges[edge_key]; - let twin_key = edge.twin.expect("Edge doesn't have a twin"); - let mut next_a_count = a_running_count; - if edge.parent & 1 != 0 { - next_a_count += if edge.direction_flag.forward() { 1 } else { -1 }; - } - let mut next_b_count = b_running_count; - if edge.parent & 2 != 0 { - next_b_count += if edge.direction_flag.forward() { 1 } else { -1 }; - } - visit_face( - edges[twin_key].incident_vertex, - next_a_count, - next_b_count, - tree, - visited_faces, - a_fill_rule, - b_fill_rule, - edges, - vertices, - flags, - ); - } - - if let Some(subtrees) = tree.outgoing_edges.get_mut(&face_key) { - for subtree in subtrees.iter_mut() { - visit_tree( - subtree, - a_running_count, - b_running_count, - a_fill_rule, - b_fill_rule, - edges, - vertices, - flags, - ); - } - } - } - - let outer_face_key = tree - .component - .outer_face - .expect("Component doesn't have an outer face."); - visit_face( - outer_face_key, - a_running_count, - b_running_count, - tree, - &mut visited_faces, - a_fill_rule, - b_fill_rule, - edges, - vertices, - flags, - ); - } - - for tree in nesting_trees.iter_mut() { - visit_tree(tree, 0, 0, a_fill_rule, b_fill_rule, edges, vertices, flags); - } + for tree in nesting_trees.iter() { + let mut tree_stack = vec![(tree, 0, 0)]; + + while let Some((current_tree, a_running_count, b_running_count)) = tree_stack.pop() { + let mut visited_faces = HashSet::new(); + let mut face_stack = VecDeque::new(); + + let outer_face_key = current_tree.component.outer_face.expect("Component doesn't have an outer face."); + face_stack.push_back((outer_face_key, a_running_count, b_running_count)); + + while let Some((face_key, a_count, b_count)) = face_stack.pop_back() { + if visited_faces.contains(&face_key) { + continue; + } + visited_faces.insert(face_key); + + let a_flag = get_flag(a_count, a_fill_rule); + let b_flag = get_flag(b_count, b_fill_rule); + *flags.entry(face_key).or_default() = a_flag | (b_flag << 1); + + for edge_key in &vertices[face_key].incident_edges { + let edge = &edges[*edge_key]; + let twin_key = edge.twin.expect("Edge doesn't have a twin"); + let mut next_a_count = a_count; + if edge.parent & 1 != 0 { + next_a_count += if edge.direction_flag.forward() { 1 } else { -1 }; + } + let mut next_b_count = b_count; + if edge.parent & 2 != 0 { + next_b_count += if edge.direction_flag.forward() { 1 } else { -1 }; + } + face_stack.push_back((edges[twin_key].incident_vertex, next_a_count, next_b_count)); + } + + // Collect subtrees to be processed later + if let Some(subtrees) = current_tree.outgoing_edges.get(&face_key) { + for subtree in subtrees { + tree_stack.push((subtree, a_count, b_count)); + } + } + } + } + } } // TODO(@Truedoctor): Check if we can just iterate over the flags -fn get_selected_faces<'a>( - nesting_trees: &[NestingTree], - predicate: &'a impl Fn(u8) -> bool, - flags: &'a HashMap, -) -> impl Iterator + 'a { - // flags - // .iter() - // .filter_map(|(key, &flag)| predicate(flag).then_some(*key)) - let mut selected_faces = Vec::new(); - for tree in nesting_trees { - for face_key in tree.component.vertices.iter() { - if predicate(*flags.get(face_key).unwrap()) { - selected_faces.push(*face_key); - } - } - for subtree in tree.outgoing_edges.values().flatten() { - selected_faces.extend(get_selected_faces( - std::slice::from_ref(subtree), - predicate, - flags, - )); - } - } - selected_faces.into_iter() +fn get_selected_faces<'a>(predicate: &'a impl Fn(u8) -> bool, flags: &'a HashMap) -> impl Iterator + 'a { + flags.iter().filter_map(|(key, &flag)| predicate(flag).then_some(*key)) } -fn walk_faces<'a>( - faces: &'a HashSet, - edges: &SlotMap, - vertices: &SlotMap, -) -> impl Iterator + 'a { - let is_removed_edge = |edge: &DualGraphHalfEdge| { - faces.contains(&edge.incident_vertex) - == faces.contains(&edges[edge.twin.unwrap()].incident_vertex) - }; - - let mut edge_to_next = HashMap::new(); - for face_key in faces { - let face = &vertices[*face_key]; - let mut prev_edge = *face.incident_edges.last().unwrap(); - for &edge in &face.incident_edges { - edge_to_next.insert(prev_edge, edge); - prev_edge = edge; - } - } - - let mut visited_edges = HashSet::new(); - let mut result = Vec::new(); - - for &face_key in faces { - let face = &vertices[face_key]; - for &start_edge in &face.incident_edges { - if is_removed_edge(&edges[start_edge]) || visited_edges.contains(&start_edge) { - continue; - } - let mut edge = start_edge; - loop { - let current_edge = &edges[edge]; - if current_edge.direction_flag.forward() { - result.extend(current_edge.segments.iter().cloned()); - } else { - result.extend(current_edge.segments.iter().map(reverse_path_segment)); - } - visited_edges.insert(edge); - edge = *edge_to_next.get(&edge).unwrap(); - while is_removed_edge(&edges[edge]) { - edge = *edge_to_next.get(&edges[edge].twin.unwrap()).unwrap(); - } - if edge == start_edge { - break; - } - } - } - } - - result.into_iter() +fn walk_faces<'a>(faces: &'a HashSet, edges: &SlotMap, vertices: &SlotMap) -> impl Iterator + 'a { + let is_removed_edge = |edge: &DualGraphHalfEdge| faces.contains(&edge.incident_vertex) == faces.contains(&edges[edge.twin.unwrap()].incident_vertex); + + let mut edge_to_next = HashMap::new(); + for face_key in faces { + let face = &vertices[*face_key]; + let mut prev_edge = *face.incident_edges.last().unwrap(); + for &edge in &face.incident_edges { + edge_to_next.insert(prev_edge, edge); + prev_edge = edge; + } + } + + let mut visited_edges = HashSet::new(); + let mut result = Vec::new(); + + for &face_key in faces { + let face = &vertices[face_key]; + for &start_edge in &face.incident_edges { + if is_removed_edge(&edges[start_edge]) || visited_edges.contains(&start_edge) { + continue; + } + let mut edge = start_edge; + loop { + let current_edge = &edges[edge]; + if current_edge.direction_flag.forward() { + result.extend(current_edge.segments.iter().cloned()); + } else { + result.extend(current_edge.segments.iter().map(reverse_path_segment)); + } + visited_edges.insert(edge); + edge = *edge_to_next.get(&edge).unwrap(); + while is_removed_edge(&edges[edge]) { + edge = *edge_to_next.get(&edges[edge].twin.unwrap()).unwrap(); + } + if edge == start_edge { + break; + } + } + } + } + + result.into_iter() } fn dump_faces( - nesting_trees: &[NestingTree], - predicate: impl Fn(u8) -> bool + Copy, - edges: &SlotMap, - vertices: &SlotMap, - flags: &HashMap, + nesting_trees: &[NestingTree], + predicate: impl Fn(u8) -> bool + Copy, + edges: &SlotMap, + vertices: &SlotMap, + flags: &HashMap, ) -> Vec { - let mut paths = Vec::new(); - - fn visit( - tree: &NestingTree, - predicate: impl Fn(u8) -> bool + Copy, - paths: &mut Vec, - edges: &SlotMap, - vertices: &SlotMap, - flags: &HashMap, - ) { - for &face_key in tree.component.vertices.iter() { - let face = &vertices[face_key]; - let flag = flags[&face_key]; - if !predicate(flag) || Some(face_key) == tree.component.outer_face { - continue; - } - - let mut path = Vec::new(); - - for &edge_key in &face.incident_edges { - let edge = &edges[edge_key]; - if edge.direction_flag.forward() { - path.extend(edge.segments.iter().cloned()); - } else { - path.extend(edge.segments.iter().map(reverse_path_segment)); - } - } - - // poke holes in the face - if let Some(subtrees) = tree.outgoing_edges.get(&face_key) { - for subtree in subtrees { - let outer_face_key = subtree.component.outer_face.unwrap(); - for &edge_key in &vertices[outer_face_key].incident_edges { - let edge = &edges[edge_key]; - if edge.direction_flag.forward() { - path.extend(edge.segments.iter().cloned()); - } else { - path.extend(edge.segments.iter().map(reverse_path_segment)); - } - } - } - } - - paths.push(path); - } - - for subtrees in tree.outgoing_edges.values() { - for subtree in subtrees { - visit(subtree, predicate, paths, edges, vertices, flags); - } - } - } - - for tree in nesting_trees { - visit(tree, predicate, &mut paths, edges, vertices, flags); - } - - paths + let mut paths = Vec::new(); + + fn visit( + tree: &NestingTree, + predicate: impl Fn(u8) -> bool + Copy, + paths: &mut Vec, + edges: &SlotMap, + vertices: &SlotMap, + flags: &HashMap, + ) { + for &face_key in tree.component.vertices.iter() { + let face = &vertices[face_key]; + let flag = flags[&face_key]; + if !predicate(flag) || Some(face_key) == tree.component.outer_face { + continue; + } + + let mut path = Vec::new(); + + for &edge_key in &face.incident_edges { + let edge = &edges[edge_key]; + if edge.direction_flag.forward() { + path.extend(edge.segments.iter().cloned()); + } else { + path.extend(edge.segments.iter().map(reverse_path_segment)); + } + } + + // poke holes in the face + if let Some(subtrees) = tree.outgoing_edges.get(&face_key) { + for subtree in subtrees { + let outer_face_key = subtree.component.outer_face.unwrap(); + for &edge_key in &vertices[outer_face_key].incident_edges { + let edge = &edges[edge_key]; + if edge.direction_flag.forward() { + path.extend(edge.segments.iter().cloned()); + } else { + path.extend(edge.segments.iter().map(reverse_path_segment)); + } + } + } + } + + paths.push(path); + } + + for subtrees in tree.outgoing_edges.values() { + for subtree in subtrees { + visit(subtree, predicate, paths, edges, vertices, flags); + } + } + } + + for tree in nesting_trees { + visit(tree, predicate, &mut paths, edges, vertices, flags); + } + + paths } const OPERATION_PREDICATES: [fn(u8) -> bool; 6] = [ - |flag: u8| flag > 0, // Union - |flag: u8| flag == 1, // Difference - |flag: u8| flag == 0b11, // Intersection - |flag: u8| flag == 1 || flag == 2, // Exclusion - |flag: u8| (flag & 1) == 1, // Division - |flag: u8| flag > 0, // Fracture + |flag: u8| flag > 0, // Union + |flag: u8| flag == 1, // Difference + |flag: u8| flag == 0b11, // Intersection + |flag: u8| flag == 1 || flag == 2, // Exclusion + |flag: u8| (flag & 1) == 1, // Division + |flag: u8| flag > 0, // Fracture ]; -pub fn path_boolean( - a: &Path, - a_fill_rule: FillRule, - b: &Path, - b_fill_rule: FillRule, - op: PathBooleanOperation, -) -> Vec { - let mut unsplit_edges: Vec = a - .iter() - .map(segment_to_edge(1)) - .chain(b.iter().map(segment_to_edge(2))) - .collect(); - - for edge in &unsplit_edges { - // println!(" {:?}", &path_to_path_data(&vec![edge.0], 0.001)); - } - split_at_self_intersections(&mut unsplit_edges); - // println!("after self intersection"); - // for edge in &unsplit_edges { - // // println!(" {:?}", &edge); - // println!(" {:?}", &path_to_path_data(&vec![edge.0], 0.001)); - // } - - let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - // println!( - // "split_edges: {:?}\n\n total_bounding_box {:?}", - // split_edges, total_bounding_box - // ); - - let total_bounding_box = match total_bounding_box { - Some(bb) => bb, - None => return Vec::new(), // input geometry is empty - }; - - let major_graph = find_vertices(&split_edges, total_bounding_box); - - // println!("Major graph:"); - // println!("{}", major_graph_to_dot(&major_graph)); - - let mut minor_graph = compute_minor(&major_graph); - // println!("Minor graph:"); - // println!("{}", minor_graph_to_dot(&minor_graph.edges)); - - remove_dangling_edges(&mut minor_graph); - // println!("After removing dangling edges:"); - // println!("{}", minor_graph_to_dot(&minor_graph.edges)); - - sort_outgoing_edges_by_angle(&mut minor_graph); - - for (edge_key, edge) in &minor_graph.edges { - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[0]), - "Edge {:?} has invalid start vertex", - edge_key - ); - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[1]), - "Edge {:?} has invalid end vertex", - edge_key - ); - assert!( - edge.twin.is_some(), - "Edge {:?} should have a twin", - edge_key - ); - let twin = &minor_graph.edges[edge.twin.unwrap()]; - assert_eq!( - twin.twin.unwrap(), - edge_key, - "Twin relationship should be symmetrical for edge {:?}", - edge_key - ); - } - - // println!("Minor graph structure before compute_dual:"); - for (vertex_key, vertex) in &minor_graph.vertices { - // println!("Vertex {:?}:", vertex_key); - // println!(" Outgoing edges: {:?}", vertex.outgoing_edges); - for &edge_key in &vertex.outgoing_edges { - let edge = &minor_graph.edges[edge_key]; - // println!(" Edge {:?}:", edge_key); - // println!(" Parent: {}", edge.parent); - // println!(" Direction flag: {:?}", edge.direction_flag); - // println!(" Incident vertices: {:?}", edge.incident_vertices); - // println!(" Twin: {:?}", edge.twin); - // println!(" Segments: {}", edge.format_path()); - } - } - - let dual_graph = compute_dual(&minor_graph); - // println!("Dual graph:"); - // println!( - // "{}", - // dual_graph_to_dot(&dual_graph.components, &dual_graph.edges) - // ); - - // println!( - // "Dual Graph computed. Components: {}", - // dual_graph.components.len() - // ); - - let mut nesting_trees = compute_nesting_tree(&dual_graph); - // println!( - // "Nesting trees computed. Number of trees: {}", - // nesting_trees.len() - // ); - - let DualGraph { - edges, vertices, .. - } = &dual_graph; - - let mut flags = HashMap::new(); - flag_faces( - &mut nesting_trees, - a_fill_rule, - b_fill_rule, - edges, - vertices, - &mut flags, - ); - // println!("Faces flagged. Number of flagged faces:",); - // for (id, flag) in flags.iter() { - // println!("{:?}: {:02b}", id, flag); - // } - - let predicate = OPERATION_PREDICATES[op as usize]; - - match op { - PathBooleanOperation::Division | PathBooleanOperation::Fracture => { - let result = dump_faces(&nesting_trees, predicate, edges, vertices, &flags); - // println!( - // "Operation result (Division/Fracture). Number of paths: {}", - // result.len() - // ); - result - } - _ => { - let selected_faces: HashSet = - get_selected_faces(&nesting_trees, &predicate, &flags).collect(); - // println!("Selected faces: {}", selected_faces.len()); - let result = vec![walk_faces(&selected_faces, edges, vertices).collect()]; - // println!("Operation result. Number of paths: {}", result.len()); - result - } - } +pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Vec { + let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).collect(); + + split_at_self_intersections(&mut unsplit_edges); + + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + + let total_bounding_box = match total_bounding_box { + Some(bb) => bb, + None => return Vec::new(), // input geometry is empty + }; + + let major_graph = find_vertices(&split_edges, total_bounding_box); + + #[cfg(feature = "logging")] + println!("Major graph:"); + #[cfg(feature = "logging")] + println!("{}", major_graph_to_dot(&major_graph)); + + let mut minor_graph = compute_minor(&major_graph); + + #[cfg(feature = "logging")] + for edge in minor_graph.edges.values() { + println!("{}", edge.format_path()); + } + + #[cfg(feature = "logging")] + println!("Minor graph:"); + #[cfg(feature = "logging")] + println!("{}", minor_graph_to_dot(&minor_graph.edges)); + + remove_dangling_edges(&mut minor_graph); + #[cfg(feature = "logging")] + println!("After removing dangling edges:"); + #[cfg(feature = "logging")] + println!("{}", minor_graph_to_dot(&minor_graph.edges)); + + sort_outgoing_edges_by_angle(&mut minor_graph); + + for (edge_key, edge) in &minor_graph.edges { + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[0]), "Edge {:?} has invalid start vertex", edge_key); + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[1]), "Edge {:?} has invalid end vertex", edge_key); + assert!(edge.twin.is_some(), "Edge {:?} should have a twin", edge_key); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!(twin.twin.unwrap(), edge_key, "Twin relationship should be symmetrical for edge {:?}", edge_key); + } + + let dual_graph = compute_dual(&minor_graph); + + let nesting_trees = compute_nesting_tree(&dual_graph); + + let DualGraph { edges, vertices, .. } = &dual_graph; + + #[cfg(feature = "logging")] + println!("Dual Graph:"); + #[cfg(feature = "logging")] + println!("{}", dual_graph_to_dot(&dual_graph.components, edges)); + + let mut flags = HashMap::new(); + flag_faces(&nesting_trees, a_fill_rule, b_fill_rule, edges, vertices, &mut flags); + + let predicate = OPERATION_PREDICATES[op as usize]; + + match op { + PathBooleanOperation::Division | PathBooleanOperation::Fracture => dump_faces(&nesting_trees, predicate, edges, vertices, &flags), + _ => { + let selected_faces: HashSet = get_selected_faces(&predicate, &flags).collect(); + vec![walk_faces(&selected_faces, edges, vertices).collect()] + } + } } #[cfg(test)] mod tests { - use super::*; - use glam::DVec2; // Assuming DVec2 is defined in your crate - - #[test] - fn test_segment_to_edge() { - let segment = PathSegment::Arc( - DVec2::new(39.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 39.0), - ); - let parent = 1; - let edge = segment_to_edge(parent)(&segment); - assert_eq!(edge.0, segment); - assert_eq!(edge.1, parent); - } - - #[test] - fn test_split_at_self_intersections() { - let mut edges = vec![ - ( - PathSegment::Arc( - DVec2::new(39.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 39.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 39.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(1.0, 20.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(1.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 1.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 1.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(39.0, 20.0), - ), - 1, - ), - ( - PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), - 1, - ), - ]; - - let original_length = edges.len(); - split_at_self_intersections(&mut edges); - - // We don't expect any splits to occur - assert_eq!(edges.len(), original_length); - - // Add a cubic curve (even if it doesn't self-intersect) - edges.push(( - PathSegment::Cubic( - DVec2::new(0.0, 0.0), - DVec2::new(10.0, 10.0), - DVec2::new(-10.0, 10.0), - DVec2::new(0.0, 0.0), - ), - 1, - )); - - split_at_self_intersections(&mut edges); - - // We expect the cubic curve to remain unchanged - assert_eq!(edges.len(), original_length + 1); - } - - #[test] - fn test_split_at_intersections() { - let unsplit_edges = vec![ - ( - PathSegment::Arc( - DVec2::new(39.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 39.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 39.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(1.0, 20.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(1.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 1.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 1.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(39.0, 20.0), - ), - 1, - ), - ( - PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(47.0, 28.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(28.0, 47.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(28.0, 47.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(9.0, 28.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(9.0, 28.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(28.0, 9.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(28.0, 9.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(47.0, 28.0), - ), - 2, - ), - ( - PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), - 2, - ), - ]; - - let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - - // Check that we have a valid bounding box - assert!(total_bounding_box.is_some()); - - // Check that we have more edges after splitting (due to intersections) - assert!(split_edges.len() >= unsplit_edges.len()); - - // Check that all edges have a valid bounding box - for (_, _, bb) in &split_edges { - assert!(bb.left <= bb.right); - assert!(bb.top <= bb.bottom); - } - - // You might want to add more specific checks based on the expected behavior - // of your split_at_intersections function - } - - fn unsplit_edges() -> Vec<(PathSegment, u8)> { - let unsplit_edges = vec![ - ( - PathSegment::Arc( - DVec2::new(39.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 39.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 39.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(1.0, 20.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(1.0, 20.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(20.0, 1.0), - ), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(20.0, 1.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(39.0, 20.0), - ), - 1, - ), - ( - PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), - 1, - ), - ( - PathSegment::Arc( - DVec2::new(47.0, 28.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(28.0, 47.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(28.0, 47.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(9.0, 28.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(9.0, 28.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(28.0, 9.0), - ), - 2, - ), - ( - PathSegment::Arc( - DVec2::new(28.0, 9.0), - 19.0, - 19.0, - 0.0, - false, - true, - DVec2::new(47.0, 28.0), - ), - 2, - ), - ( - PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), - 2, - ), - ]; - unsplit_edges - } - - #[test] - fn test_compute_minor() { - // Set up the initial graph - let unsplit_edges = unsplit_edges(); - let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); - - // Compute minor graph - let minor_graph = compute_minor(&major_graph); - - // Print minor graph state - // println!("Minor Graph:"); - print_minor_graph_state(&minor_graph); - - // Assertions - assert_eq!( - minor_graph.edges.len(), - 8, - "Expected 8 edges in minor graph" - ); - assert_eq!( - minor_graph.vertices.len(), - 2, - "Expected 2 vertices in minor graph" - ); - assert!( - minor_graph.cycles.is_empty(), - "Expected no cycles in minor graph" - ); - - // Check that each vertex has 4 outgoing edges - for (vertex_key, vertex) in &minor_graph.vertices { - assert_eq!( - vertex.outgoing_edges.len(), - 4, - "Vertex {:?} should have 4 outgoing edges", - vertex_key - ); - } - - // Check that all edges have valid incident vertices and twins - for (edge_key, edge) in &minor_graph.edges { - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[0]), - "Edge {:?} has invalid start vertex", - edge_key - ); - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[1]), - "Edge {:?} has invalid end vertex", - edge_key - ); - assert!( - edge.twin.is_some(), - "Edge {:?} should have a twin", - edge_key - ); - let twin = &minor_graph.edges[edge.twin.unwrap()]; - assert_eq!( - twin.twin.unwrap(), - edge_key, - "Twin relationship should be symmetrical for edge {:?}", - edge_key - ); - } - - // Check that parents are correctly assigned - assert_eq!( - minor_graph.edges.values().filter(|e| e.parent == 1).count(), - 4, - "Expected 4 edges with parent 1" - ); - assert_eq!( - minor_graph.edges.values().filter(|e| e.parent == 2).count(), - 4, - "Expected 4 edges with parent 2" - ); - } - - #[test] - fn test_remove_dangling_edges() { - // Set up the initial graph - let unsplit_edges = unsplit_edges(); - let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); - let mut minor_graph = compute_minor(&major_graph); - - // Print initial state - // println!("Initial Minor Graph:"); - print_minor_graph_state(&minor_graph); - - // Store initial counts - let initial_edge_count = minor_graph.edges.len(); - let initial_vertex_count = minor_graph.vertices.len(); - - // Apply remove_dangling_edges - remove_dangling_edges(&mut minor_graph); - - // Print final state - // println!("\nAfter remove_dangling_edges:"); - print_minor_graph_state(&minor_graph); - - // Assertions - assert_eq!( - minor_graph.edges.len(), - initial_edge_count, - "Number of edges should not change if there are no dangling edges" - ); - assert_eq!( - minor_graph.vertices.len(), - initial_vertex_count, - "Number of vertices should not change if there are no dangling edges" - ); - assert!( - minor_graph.cycles.is_empty(), - "Expected no cycles after removing dangling edges" - ); - - // Check that each vertex has the same number of outgoing edges as before - for (vertex_key, vertex) in &minor_graph.vertices { - assert_eq!( - vertex.outgoing_edges.len(), - 4, - "Vertex {:?} should have 8 outgoing edges", - vertex_key - ); - } - - // Check that all edges have valid incident vertices and twins - for (edge_key, edge) in &minor_graph.edges { - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[0]), - "Edge {:?} has invalid start vertex", - edge_key - ); - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[1]), - "Edge {:?} has invalid end vertex", - edge_key - ); - assert!( - edge.twin.is_some(), - "Edge {:?} should have a twin", - edge_key - ); - let twin = &minor_graph.edges[edge.twin.unwrap()]; - assert_eq!( - twin.twin.unwrap(), - edge_key, - "Twin relationship should be symmetrical for edge {:?}", - edge_key - ); - } - - // Check that all edges are referenced by vertices - let all_outgoing_edges: HashSet<_> = minor_graph - .vertices - .values() - .flat_map(|v| v.outgoing_edges.iter().cloned()) - .collect(); - assert_eq!( - all_outgoing_edges.len(), - minor_graph.edges.len(), - "All edges should be referenced by vertices" - ); - - // Check that the graph structure remains unchanged - assert_eq!( - minor_graph.edges.len(), - 8, - "Expected 16 edges after removing dangling edges" - ); - assert_eq!( - minor_graph.vertices.len(), - 2, - "Expected 2 vertices after removing dangling edges" - ); - } - - fn print_minor_graph_state(graph: &MinorGraph) { - // println!(" Vertices: {}", graph.vertices.len()); - // println!(" Edges: {}", graph.edges.len()); - // println!(" Cycles: {}", graph.cycles.len()); - - for (vertex_key, vertex) in &graph.vertices { - // println!( - // " Vertex {:?}: {} outgoing edges", - // vertex_key, - // vertex.outgoing_edges.len() - // ); - } - - for (edge_key, edge) in &graph.edges { - // println!(" Edge {:?}:", edge_key); - // println!(" Parent: {}", edge.parent); - // println!(" Twin: {:?}", edge.twin); - // println!(" Incident vertices: {:?}", edge.incident_vertices); - } - } - - #[test] - fn test_sort_outgoing_edges_by_angle() { - // Set up the initial graph - let unsplit_edges = unsplit_edges(); - let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); - let mut minor_graph = compute_minor(&major_graph); - - // Print initial state - // println!("Initial Minor Graph:"); - print_minor_graph_state(&minor_graph); - - // Store initial edge order - let initial_edge_order: HashMap> = minor_graph - .vertices - .iter() - .map(|(k, v)| (k, v.outgoing_edges.clone())) - .collect(); - - // Apply sort_outgoing_edges_by_angle - sort_outgoing_edges_by_angle(&mut minor_graph); - - // Print final state - // println!("\nAfter sort_outgoing_edges_by_angle:"); - print_minor_graph_state(&minor_graph); - - // Assertions - assert_eq!( - minor_graph.edges.len(), - 8, - "Number of edges should remain unchanged" - ); - assert_eq!( - minor_graph.vertices.len(), - 2, - "Number of vertices should remain unchanged" - ); - assert!(minor_graph.cycles.is_empty(), "Expected no cycles"); - - // Check that each vertex still has 4 outgoing edges - for (vertex_key, vertex) in &minor_graph.vertices { - assert_eq!( - vertex.outgoing_edges.len(), - 4, - "Vertex {:?} should have 4 outgoing edges", - vertex_key - ); - } - - // Check that the edges are sorted by angle - for (vertex_key, vertex) in &minor_graph.vertices { - let angles: Vec = vertex - .outgoing_edges - .iter() - .map(|&edge_key| get_incidence_angle(&minor_graph.edges[edge_key])) - .collect(); - - // Check if angles are in ascending order - for i in 1..angles.len() { - assert!( - angles[i] >= angles[i - 1], - "Edges for vertex {:?} are not sorted by angle", - vertex_key - ); - } - - // Check that the set of edges is the same as before, just in different order - let initial_edges: HashSet<_> = initial_edge_order[&vertex_key].iter().collect(); - let sorted_edges: HashSet<_> = vertex.outgoing_edges.iter().collect(); - assert_eq!( - initial_edges, sorted_edges, - "Set of edges for vertex {:?} changed after sorting", - vertex_key - ); - } - - // Check that all edges still have valid incident vertices and twins - for (edge_key, edge) in &minor_graph.edges { - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[0]), - "Edge {:?} has invalid start vertex", - edge_key - ); - assert!( - minor_graph.vertices.contains_key(edge.incident_vertices[1]), - "Edge {:?} has invalid end vertex", - edge_key - ); - assert!( - edge.twin.is_some(), - "Edge {:?} should have a twin", - edge_key - ); - let twin = &minor_graph.edges[edge.twin.unwrap()]; - assert_eq!( - twin.twin.unwrap(), - edge_key, - "Twin relationship should be symmetrical for edge {:?}", - edge_key - ); - } - } - - fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { - let seg = &edge.segments[0]; // First segment is always the incident one in both fwd and bwd - let (p0, p1) = if edge.direction_flag.forward() { - ( - sample_path_segment_at(seg, 0.0), - sample_path_segment_at(seg, EPS.param), - ) - } else { - ( - sample_path_segment_at(seg, 1.0), - sample_path_segment_at(seg, 1.0 - EPS.param), - ) - }; - (p1.y - p0.y).atan2(p1.x - p0.x) - } - - #[test] - fn test_path_segment_horizontal_ray_intersection_count() { - let orig_seg = PathSegment::Arc( - DVec2::new(24.0, 10.090978), - 13.909023, - 13.909023, - 0.0, - false, - true, - DVec2::new(47., 24.0), - ); - - let point = DVec2::new(37.99, 24.0); - - println!("Starting test with segment: {:?}", orig_seg); - println!("Test point: {:?}", point); - - let count = path_segment_horizontal_ray_intersection_count(&orig_seg, point); - - println!("Final intersection count: {}", count); - - let expected_count = 1; - assert_eq!(count, expected_count, "Intersection count mismatch"); - } - - #[test] - fn test_bounding_box_intersects_horizontal_ray() { - let bbox = AABB { - top: 10.0, - right: 40.0, - bottom: 30.0, - left: 20.0, - }; - - assert!(bounding_box_intersects_horizontal_ray( - &bbox, - DVec2::new(0.0, 30.0) - )); - assert!(bounding_box_intersects_horizontal_ray( - &bbox, - DVec2::new(20.0, 30.0) - )); - assert!(bounding_box_intersects_horizontal_ray( - &bbox, - DVec2::new(10.0, 20.0) - )); - assert!(!bounding_box_intersects_horizontal_ray( - &bbox, - DVec2::new(30.0, 40.0) - )); - } + use super::*; + use glam::DVec2; // Assuming DVec2 is defined in your crate + + #[test] + fn test_split_at_intersections() { + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + + // Check that we have a valid bounding box + assert!(total_bounding_box.is_some()); + + // Check that we have more edges after splitting (due to intersections) + assert!(split_edges.len() >= unsplit_edges.len()); + + // Check that all edges have a valid bounding box + for (_, _, bb) in &split_edges { + assert!(bb.left <= bb.right); + assert!(bb.top <= bb.bottom); + } + + // You might want to add more specific checks based on the expected behavior + // of your split_at_intersections function + } + + fn unsplit_edges() -> Vec<(PathSegment, u8)> { + let unsplit_edges = vec![ + (PathSegment::Arc(DVec2::new(39.0, 20.0), 19.0, 19.0, 0.0, false, true, DVec2::new(20.0, 39.0)), 1), + (PathSegment::Arc(DVec2::new(20.0, 39.0), 19.0, 19.0, 0.0, false, true, DVec2::new(1.0, 20.0)), 1), + (PathSegment::Arc(DVec2::new(1.0, 20.0), 19.0, 19.0, 0.0, false, true, DVec2::new(20.0, 1.0)), 1), + (PathSegment::Arc(DVec2::new(20.0, 1.0), 19.0, 19.0, 0.0, false, true, DVec2::new(39.0, 20.0)), 1), + (PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), 1), + (PathSegment::Arc(DVec2::new(47.0, 28.0), 19.0, 19.0, 0.0, false, true, DVec2::new(28.0, 47.0)), 2), + (PathSegment::Arc(DVec2::new(28.0, 47.0), 19.0, 19.0, 0.0, false, true, DVec2::new(9.0, 28.0)), 2), + (PathSegment::Arc(DVec2::new(9.0, 28.0), 19.0, 19.0, 0.0, false, true, DVec2::new(28.0, 9.0)), 2), + (PathSegment::Arc(DVec2::new(28.0, 9.0), 19.0, 19.0, 0.0, false, true, DVec2::new(47.0, 28.0)), 2), + (PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), 2), + ]; + unsplit_edges + } + + #[test] + fn test_compute_minor() { + // Set up the initial graph + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); + + // Compute minor graph + let minor_graph = compute_minor(&major_graph); + + // Print minor graph state + // println!("Minor Graph:"); + print_minor_graph_state(&minor_graph); + + // Assertions + assert_eq!(minor_graph.edges.len(), 8, "Expected 8 edges in minor graph"); + assert_eq!(minor_graph.vertices.len(), 2, "Expected 2 vertices in minor graph"); + assert!(minor_graph.cycles.is_empty(), "Expected no cycles in minor graph"); + + // Check that each vertex has 4 outgoing edges + for (vertex_key, vertex) in &minor_graph.vertices { + assert_eq!(vertex.outgoing_edges.len(), 4, "Vertex {:?} should have 4 outgoing edges", vertex_key); + } + + // Check that all edges have valid incident vertices and twins + for (edge_key, edge) in &minor_graph.edges { + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[0]), "Edge {:?} has invalid start vertex", edge_key); + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[1]), "Edge {:?} has invalid end vertex", edge_key); + assert!(edge.twin.is_some(), "Edge {:?} should have a twin", edge_key); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!(twin.twin.unwrap(), edge_key, "Twin relationship should be symmetrical for edge {:?}", edge_key); + } + + // Check that parents are correctly assigned + assert_eq!(minor_graph.edges.values().filter(|e| e.parent == 1).count(), 4, "Expected 4 edges with parent 1"); + assert_eq!(minor_graph.edges.values().filter(|e| e.parent == 2).count(), 4, "Expected 4 edges with parent 2"); + } + + fn print_minor_graph_state(graph: &MinorGraph) { + println!(" Vertices: {}", graph.vertices.len()); + println!(" Edges: {}", graph.edges.len()); + println!(" Cycles: {}", graph.cycles.len()); + + for (vertex_key, vertex) in &graph.vertices { + println!(" Vertex {:?}: {} outgoing edges", vertex_key, vertex.outgoing_edges.len()); + } + + for (edge_key, edge) in &graph.edges { + println!(" Edge {:?}:", edge_key); + println!(" Parent: {}", edge.parent); + println!(" Twin: {:?}", edge.twin); + println!(" Incident vertices: {:?}", edge.incident_vertices); + } + } + + #[test] + fn test_sort_outgoing_edges_by_angle() { + // Set up the initial graph + let unsplit_edges = unsplit_edges(); + let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + let major_graph = find_vertices(&split_edges, total_bounding_box.unwrap()); + let mut minor_graph = compute_minor(&major_graph); + + // Print initial state + println!("Initial Minor Graph:"); + print_minor_graph_state(&minor_graph); + + // Store initial edge order + let initial_edge_order: HashMap> = minor_graph.vertices.iter().map(|(k, v)| (k, v.outgoing_edges.clone())).collect(); + + // Apply sort_outgoing_edges_by_angle + sort_outgoing_edges_by_angle(&mut minor_graph); + + // Print final state + println!("\nAfter sort_outgoing_edges_by_angle:"); + print_minor_graph_state(&minor_graph); + + // Assertions + assert_eq!(minor_graph.edges.len(), 8, "Number of edges should remain unchanged"); + assert_eq!(minor_graph.vertices.len(), 2, "Number of vertices should remain unchanged"); + assert!(minor_graph.cycles.is_empty(), "Expected no cycles"); + + // Check that each vertex still has 4 outgoing edges + for (vertex_key, vertex) in &minor_graph.vertices { + assert_eq!(vertex.outgoing_edges.len(), 4, "Vertex {:?} should have 4 outgoing edges", vertex_key); + } + + // Check that the edges are sorted by angle + for (vertex_key, vertex) in &minor_graph.vertices { + let angles: Vec = vertex.outgoing_edges.iter().map(|&edge_key| get_incidence_angle(&minor_graph.edges[edge_key])).collect(); + + // Check if angles are in ascending order + for i in 1..angles.len() { + assert!(angles[i] >= angles[i - 1], "Edges for vertex {:?} are not sorted by angle", vertex_key); + } + + // Check that the set of edges is the same as before, just in different order + let initial_edges: HashSet<_> = initial_edge_order[&vertex_key].iter().collect(); + let sorted_edges: HashSet<_> = vertex.outgoing_edges.iter().collect(); + assert_eq!(initial_edges, sorted_edges, "Set of edges for vertex {:?} changed after sorting", vertex_key); + } + + // Check that all edges still have valid incident vertices and twins + for (edge_key, edge) in &minor_graph.edges { + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[0]), "Edge {:?} has invalid start vertex", edge_key); + assert!(minor_graph.vertices.contains_key(edge.incident_vertices[1]), "Edge {:?} has invalid end vertex", edge_key); + assert!(edge.twin.is_some(), "Edge {:?} should have a twin", edge_key); + let twin = &minor_graph.edges[edge.twin.unwrap()]; + assert_eq!(twin.twin.unwrap(), edge_key, "Twin relationship should be symmetrical for edge {:?}", edge_key); + } + } + + fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { + let seg = &edge.segments[0]; // First segment is always the incident one in both fwd and bwd + let (p0, p1) = if edge.direction_flag.forward() { + (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) + } else { + (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) + }; + (p1.y - p0.y).atan2(p1.x - p0.x) + } + + #[test] + fn test_path_segment_horizontal_ray_intersection_count() { + let orig_seg = PathSegment::Arc(DVec2::new(24.0, 10.090978), 13.909023, 13.909023, 0.0, false, true, DVec2::new(47., 24.0)); + + let point = DVec2::new(37.99, 24.0); + + println!("Starting test with segment: {:?}", orig_seg); + println!("Test point: {:?}", point); + + let count = path_segment_horizontal_ray_intersection_count(&orig_seg, point); + + println!("Final intersection count: {}", count); + + let expected_count = 1; + assert_eq!(count, expected_count, "Intersection count mismatch"); + } + + #[test] + fn test_bounding_box_intersects_horizontal_ray() { + let bbox = AaBb { + top: 10.0, + right: 40.0, + bottom: 30.0, + left: 20.0, + }; + + assert!(bounding_box_intersects_horizontal_ray(&bbox, DVec2::new(0.0, 30.0))); + assert!(bounding_box_intersects_horizontal_ray(&bbox, DVec2::new(20.0, 30.0))); + assert!(bounding_box_intersects_horizontal_ray(&bbox, DVec2::new(10.0, 20.0))); + assert!(!bounding_box_intersects_horizontal_ray(&bbox, DVec2::new(30.0, 40.0))); + } } diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index d97fdd85c09..acd71095aeb 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -5,445 +5,366 @@ use glam::{DMat2, DMat3, DVec2}; use std::f64::consts::{PI, TAU}; -use crate::aabb::{ - bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AABB, -}; +use crate::aabb::{bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AaBb}; use crate::math::{deg2rad, lerp, vector_angle}; use crate::vector::Vector; #[derive(Clone, Copy, Debug, PartialEq)] pub enum PathSegment { - Line(Vector, Vector), - Cubic(Vector, Vector, Vector, Vector), - Quadratic(Vector, Vector, Vector), - Arc(Vector, f64, f64, f64, bool, bool, Vector), + Line(Vector, Vector), + Cubic(Vector, Vector, Vector, Vector), + Quadratic(Vector, Vector, Vector), + Arc(Vector, f64, f64, f64, bool, bool, Vector), } pub struct PathArcSegmentCenterParametrization { - center: Vector, - theta1: f64, - delta_theta: f64, - rx: f64, - ry: f64, - phi: f64, + center: Vector, + theta1: f64, + delta_theta: f64, + rx: f64, + ry: f64, + phi: f64, } pub fn get_start_point(seg: &PathSegment) -> Vector { - match seg { - PathSegment::Line(start, _) => *start, - PathSegment::Cubic(start, _, _, _) => *start, - PathSegment::Quadratic(start, _, _) => *start, - PathSegment::Arc(start, _, _, _, _, _, _) => *start, - } + match seg { + PathSegment::Line(start, _) => *start, + PathSegment::Cubic(start, _, _, _) => *start, + PathSegment::Quadratic(start, _, _) => *start, + PathSegment::Arc(start, _, _, _, _, _, _) => *start, + } } pub fn get_end_point(seg: &PathSegment) -> Vector { - match seg { - PathSegment::Line(_, end) => *end, - PathSegment::Cubic(_, _, _, end) => *end, - PathSegment::Quadratic(_, _, end) => *end, - PathSegment::Arc(_, _, _, _, _, _, end) => *end, - } + match seg { + PathSegment::Line(_, end) => *end, + PathSegment::Cubic(_, _, _, end) => *end, + PathSegment::Quadratic(_, _, end) => *end, + PathSegment::Arc(_, _, _, _, _, _, end) => *end, + } } pub fn reverse_path_segment(seg: &PathSegment) -> PathSegment { - match *seg { - PathSegment::Line(start, end) => PathSegment::Line(end, start), - PathSegment::Cubic(p1, p2, p3, p4) => PathSegment::Cubic(p4, p3, p2, p1), - PathSegment::Quadratic(p1, p2, p3) => PathSegment::Quadratic(p3, p2, p1), - PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { - PathSegment::Arc(end, rx, ry, phi, fa, !fs, start) - } - } + match *seg { + PathSegment::Line(start, end) => PathSegment::Line(end, start), + PathSegment::Cubic(p1, p2, p3, p4) => PathSegment::Cubic(p4, p3, p2, p1), + PathSegment::Quadratic(p1, p2, p3) => PathSegment::Quadratic(p3, p2, p1), + PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => PathSegment::Arc(end, rx, ry, phi, fa, !fs, start), + } } pub fn arc_segment_to_center(seg: &PathSegment) -> Option { - if let PathSegment::Arc(xy1, rx, ry, phi, fa, fs, xy2) = *seg { - if rx == 0.0 || ry == 0.0 { - return None; - } - - let rotation_matrix = DMat2::from_angle(-deg2rad(phi)); - let mut xy1_prime = rotation_matrix * (xy1 - xy2) * 0.5; - - let mut rx2 = rx * rx; - let mut ry2 = ry * ry; - let x1_prime2 = xy1_prime.x * xy1_prime.x; - let y1_prime2 = xy1_prime.y * xy1_prime.y; - - let mut rx = rx.abs(); - let mut ry = ry.abs(); - let lambda = x1_prime2 / rx2 + y1_prime2 / ry2 + 1e-12; - if lambda > 1.0 { - let lambda_sqrt = lambda.sqrt(); - rx *= lambda_sqrt; - ry *= lambda_sqrt; - let lambda_abs = lambda.abs(); - rx2 *= lambda_abs; - ry2 *= lambda_abs; - } - - let sign = if fa == fs { -1.0 } else { 1.0 }; - let multiplier = ((rx2 * ry2 - rx2 * y1_prime2 - ry2 * x1_prime2) - / (rx2 * y1_prime2 + ry2 * x1_prime2)) - .sqrt(); - let cx_prime = sign * multiplier * ((rx * xy1_prime.y) / ry); - let cy_prime = sign * multiplier * ((-ry * xy1_prime.x) / rx); - - let cxy = rotation_matrix.transpose() * DVec2::new(cx_prime, cy_prime) + (xy1 + xy2) * 0.5; - - let vec1 = DVec2::new((xy1_prime.x - cx_prime) / rx, (xy1_prime.y - cy_prime) / ry); - let theta1 = vector_angle(DVec2::new(1.0, 0.0), vec1); - let mut delta_theta = vector_angle( - vec1, - DVec2::new( - (-xy1_prime.x - cx_prime) / rx, - (-xy1_prime.y - cy_prime) / ry, - ), - ); - - if !fs && delta_theta > 0.0 { - delta_theta -= TAU; - } else if fs && delta_theta < 0.0 { - delta_theta += TAU; - } - - Some(PathArcSegmentCenterParametrization { - center: cxy, - theta1, - delta_theta, - rx, - ry, - phi, - }) - } else { - None - } + if let PathSegment::Arc(xy1, rx, ry, phi, fa, fs, xy2) = *seg { + if rx == 0.0 || ry == 0.0 { + return None; + } + + let rotation_matrix = DMat2::from_angle(-deg2rad(phi)); + let xy1_prime = rotation_matrix * (xy1 - xy2) * 0.5; + + let mut rx2 = rx * rx; + let mut ry2 = ry * ry; + let x1_prime2 = xy1_prime.x * xy1_prime.x; + let y1_prime2 = xy1_prime.y * xy1_prime.y; + + let mut rx = rx.abs(); + let mut ry = ry.abs(); + let lambda = x1_prime2 / rx2 + y1_prime2 / ry2 + 1e-12; + if lambda > 1.0 { + let lambda_sqrt = lambda.sqrt(); + rx *= lambda_sqrt; + ry *= lambda_sqrt; + let lambda_abs = lambda.abs(); + rx2 *= lambda_abs; + ry2 *= lambda_abs; + } + + let sign = if fa == fs { -1.0 } else { 1.0 }; + let multiplier = ((rx2 * ry2 - rx2 * y1_prime2 - ry2 * x1_prime2) / (rx2 * y1_prime2 + ry2 * x1_prime2)).sqrt(); + let cx_prime = sign * multiplier * ((rx * xy1_prime.y) / ry); + let cy_prime = sign * multiplier * ((-ry * xy1_prime.x) / rx); + + let cxy = rotation_matrix.transpose() * DVec2::new(cx_prime, cy_prime) + (xy1 + xy2) * 0.5; + + let vec1 = DVec2::new((xy1_prime.x - cx_prime) / rx, (xy1_prime.y - cy_prime) / ry); + let theta1 = vector_angle(DVec2::new(1.0, 0.0), vec1); + let mut delta_theta = vector_angle(vec1, DVec2::new((-xy1_prime.x - cx_prime) / rx, (-xy1_prime.y - cy_prime) / ry)); + + if !fs && delta_theta > 0.0 { + delta_theta -= TAU; + } else if fs && delta_theta < 0.0 { + delta_theta += TAU; + } + + Some(PathArcSegmentCenterParametrization { + center: cxy, + theta1, + delta_theta, + rx, + ry, + phi, + }) + } else { + None + } } -pub fn arc_segment_from_center(params: &PathArcSegmentCenterParametrization) -> PathSegment { - let rotation_matrix = DMat2::from_angle(params.phi); +pub fn arc_segment_from_center(params: &PathArcSegmentCenterParametrization, start: Option, end: Option) -> PathSegment { + let rotation_matrix = DMat2::from_angle(params.phi); - let xy1 = rotation_matrix - * DVec2::new( - params.rx * params.theta1.cos(), - params.ry * params.theta1.sin(), - ) - + params.center; + let mut xy1 = rotation_matrix * DVec2::new(params.rx * params.theta1.cos(), params.ry * params.theta1.sin()) + params.center; - let xy2 = rotation_matrix - * DVec2::new( - params.rx * (params.theta1 + params.delta_theta).cos(), - params.ry * (params.theta1 + params.delta_theta).sin(), - ) - + params.center; + let mut xy2 = rotation_matrix * DVec2::new(params.rx * (params.theta1 + params.delta_theta).cos(), params.ry * (params.theta1 + params.delta_theta).sin()) + params.center; - let fa = (params.delta_theta.abs() > PI) as bool; - let fs = params.delta_theta > 0.0; + let fa = params.delta_theta.abs() > PI; + let fs = params.delta_theta > 0.0; + xy1 = start.unwrap_or(xy1); + xy2 = end.unwrap_or(xy2); - PathSegment::Arc(xy1, params.rx, params.ry, params.phi, fa, fs, xy2) + PathSegment::Arc(xy1, params.rx, params.ry, params.phi, fa, fs, xy2) } pub fn sample_path_segment_at(seg: &PathSegment, t: f64) -> Vector { - match *seg { - PathSegment::Line(start, end) => start.lerp(end, t), - PathSegment::Cubic(p1, p2, p3, p4) => { - let p01 = p1.lerp(p2, t); - let p12 = p2.lerp(p3, t); - let p23 = p3.lerp(p4, t); - let p012 = p01.lerp(p12, t); - let p123 = p12.lerp(p23, t); - p012.lerp(p123, t) - } - PathSegment::Quadratic(p1, p2, p3) => { - let p01 = p1.lerp(p2, t); - let p12 = p2.lerp(p3, t); - p01.lerp(p12, t) - } - PathSegment::Arc(start, rx, ry, phi, _, _, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let theta = center_param.theta1 + t * center_param.delta_theta; - let p = DVec2::new(rx * theta.cos(), ry * theta.sin()); - let rotation_matrix = DMat2::from_angle(phi); - rotation_matrix * p + center_param.center - } else { - start.lerp(end, t) - } - } - } + match *seg { + PathSegment::Line(start, end) => start.lerp(end, t), + PathSegment::Cubic(p1, p2, p3, p4) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + let p23 = p3.lerp(p4, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + p012.lerp(p123, t) + } + PathSegment::Quadratic(p1, p2, p3) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + p01.lerp(p12, t) + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let theta = center_param.theta1 + t * center_param.delta_theta; + let p = DVec2::new(rx * theta.cos(), ry * theta.sin()); + let rotation_matrix = DMat2::from_angle(phi); + rotation_matrix * p + center_param.center + } else { + start.lerp(end, t) + } + } + } } pub fn arc_segment_to_cubics(seg: &PathSegment, max_delta_theta: f64) -> Vec { - if let PathSegment::Arc(start, rx, ry, phi, _, _, end) = *seg { - if let Some(center_param) = arc_segment_to_center(seg) { - let count = ((center_param.delta_theta.abs() / max_delta_theta).ceil() as usize).max(1); - - let from_unit = DMat3::from_translation(center_param.center) - * DMat3::from_angle(deg2rad(phi)) - * DMat3::from_scale(DVec2::new(rx, ry)); - - let theta = center_param.delta_theta / count as f64; - let k = (4.0 / 3.0) * (theta / 4.0).tan(); - let sin_theta = theta.sin(); - let cos_theta = theta.cos(); - - (0..count) - .map(|i| { - let start = DVec2::new(1.0, 0.0); - let control1 = DVec2::new(1.0, k); - let control2 = DVec2::new(cos_theta + k * sin_theta, sin_theta - k * cos_theta); - let end = DVec2::new(cos_theta, sin_theta); - - let matrix = - DMat3::from_angle(center_param.theta1 + i as f64 * theta) * from_unit; - let start = (matrix * start.extend(1.0)).truncate(); - let control1 = (matrix * control1.extend(1.0)).truncate(); - let control2 = (matrix * control2.extend(1.0)).truncate(); - let end = (matrix * end.extend(1.0)).truncate(); - - PathSegment::Cubic(start, control1, control2, end) - }) - .collect() - } else { - vec![PathSegment::Line(start, end)] - } - } else { - vec![seg.clone()] - } + if let PathSegment::Arc(start, rx, ry, phi, _, _, end) = *seg { + if let Some(center_param) = arc_segment_to_center(seg) { + let count = ((center_param.delta_theta.abs() / max_delta_theta).ceil() as usize).max(1); + + let from_unit = DMat3::from_translation(center_param.center) * DMat3::from_angle(deg2rad(phi)) * DMat3::from_scale(DVec2::new(rx, ry)); + + let theta = center_param.delta_theta / count as f64; + let k = (4.0 / 3.0) * (theta / 4.0).tan(); + let sin_theta = theta.sin(); + let cos_theta = theta.cos(); + + (0..count) + .map(|i| { + let start = DVec2::new(1.0, 0.0); + let control1 = DVec2::new(1.0, k); + let control2 = DVec2::new(cos_theta + k * sin_theta, sin_theta - k * cos_theta); + let end = DVec2::new(cos_theta, sin_theta); + + let matrix = DMat3::from_angle(center_param.theta1 + i as f64 * theta) * from_unit; + let start = (matrix * start.extend(1.0)).truncate(); + let control1 = (matrix * control1.extend(1.0)).truncate(); + let control2 = (matrix * control2.extend(1.0)).truncate(); + let end = (matrix * end.extend(1.0)).truncate(); + + PathSegment::Cubic(start, control1, control2, end) + }) + .collect() + } else { + vec![PathSegment::Line(start, end)] + } + } else { + vec![*seg] + } } fn eval_cubic_1d(p0: f64, p1: f64, p2: f64, p3: f64, t: f64) -> f64 { - let p01 = lerp(p0, p1, t); - let p12 = lerp(p1, p2, t); - let p23 = lerp(p2, p3, t); - let p012 = lerp(p01, p12, t); - let p123 = lerp(p12, p23, t); - lerp(p012, p123, t) + let p01 = lerp(p0, p1, t); + let p12 = lerp(p1, p2, t); + let p23 = lerp(p2, p3, t); + let p012 = lerp(p01, p12, t); + let p123 = lerp(p12, p23, t); + lerp(p012, p123, t) } fn cubic_bounding_interval(p0: f64, p1: f64, p2: f64, p3: f64) -> (f64, f64) { - let mut min = p0.min(p3); - let mut max = p0.max(p3); - - let a = 3.0 * (-p0 + 3.0 * p1 - 3.0 * p2 + p3); - let b = 6.0 * (p0 - 2.0 * p1 + p2); - let c = 3.0 * (p1 - p0); - let d = b * b - 4.0 * a * c; - - if d < 0.0 || a == 0.0 { - // TODO: if a=0, solve linear - return (min, max); - } - - let sqrt_d = d.sqrt(); - - let t0 = (-b - sqrt_d) / (2.0 * a); - if 0.0 < t0 && t0 < 1.0 { - let x0 = eval_cubic_1d(p0, p1, p2, p3, t0); - min = min.min(x0); - max = max.max(x0); - } - - let t1 = (-b + sqrt_d) / (2.0 * a); - if 0.0 < t1 && t1 < 1.0 { - let x1 = eval_cubic_1d(p0, p1, p2, p3, t1); - min = min.min(x1); - max = max.max(x1); - } - - (min, max) + let mut min = p0.min(p3); + let mut max = p0.max(p3); + + let a = 3.0 * (-p0 + 3.0 * p1 - 3.0 * p2 + p3); + let b = 6.0 * (p0 - 2.0 * p1 + p2); + let c = 3.0 * (p1 - p0); + let d = b * b - 4.0 * a * c; + + if d < 0.0 || a == 0.0 { + // TODO: if a=0, solve linear + return (min, max); + } + + let sqrt_d = d.sqrt(); + + let t0 = (-b - sqrt_d) / (2.0 * a); + if 0.0 < t0 && t0 < 1.0 { + let x0 = eval_cubic_1d(p0, p1, p2, p3, t0); + min = min.min(x0); + max = max.max(x0); + } + + let t1 = (-b + sqrt_d) / (2.0 * a); + if 0.0 < t1 && t1 < 1.0 { + let x1 = eval_cubic_1d(p0, p1, p2, p3, t1); + min = min.min(x1); + max = max.max(x1); + } + + (min, max) } fn eval_quadratic_1d(p0: f64, p1: f64, p2: f64, t: f64) -> f64 { - let p01 = lerp(p0, p1, t); - let p12 = lerp(p1, p2, t); - lerp(p01, p12, t) + let p01 = lerp(p0, p1, t); + let p12 = lerp(p1, p2, t); + lerp(p01, p12, t) } fn quadratic_bounding_interval(p0: f64, p1: f64, p2: f64) -> (f64, f64) { - let mut min = p0.min(p2); - let mut max = p0.max(p2); + let mut min = p0.min(p2); + let mut max = p0.max(p2); - let denominator = p0 - 2.0 * p1 + p2; + let denominator = p0 - 2.0 * p1 + p2; - if denominator == 0.0 { - return (min, max); - } + if denominator == 0.0 { + return (min, max); + } - let t = (p0 - p1) / denominator; - if 0.0 <= t && t <= 1.0 { - let x = eval_quadratic_1d(p0, p1, p2, t); - min = min.min(x); - max = max.max(x); - } + let t = (p0 - p1) / denominator; + if (0.0..=1.0).contains(&t) { + let x = eval_quadratic_1d(p0, p1, p2, t); + min = min.min(x); + max = max.max(x); + } - (min, max) + (min, max) } fn in_interval(x: f64, x0: f64, x1: f64) -> bool { - let mapped = (x - x0) / (x1 - x0); - 0.0 <= mapped && mapped <= 1.0 + let mapped = (x - x0) / (x1 - x0); + (0.0..=1.0).contains(&mapped) } -pub fn path_segment_bounding_box(seg: &PathSegment) -> AABB { - match *seg { - PathSegment::Line(start, end) => AABB { - top: start.y.min(end.y), - right: start.x.max(end.x), - bottom: start.y.max(end.y), - left: start.x.min(end.x), - }, - PathSegment::Cubic(p1, p2, p3, p4) => { - let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); - let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); - AABB { - top, - right, - bottom, - left, - } - } - PathSegment::Quadratic(p1, p2, p3) => { - let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); - let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); - AABB { - top, - right, - bottom, - left, - } - } - PathSegment::Arc(start, rx, ry, phi, _, _, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let theta2 = center_param.theta1 + center_param.delta_theta; - let mut bounding_box = - extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end); - - if phi == 0.0 || rx == ry { - // FIXME: the following gives false positives, resulting in larger boxes - if in_interval(-PI, center_param.theta1, theta2) - || in_interval(PI, center_param.theta1, theta2) - { - bounding_box = extend_bounding_box( - Some(bounding_box), - DVec2::new(center_param.center.x - rx, center_param.center.y), - ); - } - if in_interval(-PI / 2.0, center_param.theta1, theta2) - || in_interval(3.0 * PI / 2.0, center_param.theta1, theta2) - { - bounding_box = extend_bounding_box( - Some(bounding_box), - DVec2::new(center_param.center.x, center_param.center.y - ry), - ); - } - if in_interval(0.0, center_param.theta1, theta2) - || in_interval(2.0 * PI, center_param.theta1, theta2) - { - bounding_box = extend_bounding_box( - Some(bounding_box), - DVec2::new(center_param.center.x + rx, center_param.center.y), - ); - } - if in_interval(PI / 2.0, center_param.theta1, theta2) - || in_interval(5.0 * PI / 2.0, center_param.theta1, theta2) - { - bounding_box = extend_bounding_box( - Some(bounding_box), - DVec2::new(center_param.center.x, center_param.center.y + ry), - ); - } - expand_bounding_box(&bounding_box, 1e-11) // TODO: get rid of expansion - } else { - // TODO: don't convert to cubics - let cubics = arc_segment_to_cubics(seg, PI / 16.0); - let mut bounding_box = None; - for cubic_seg in cubics { - bounding_box = Some(merge_bounding_boxes( - bounding_box, - &path_segment_bounding_box(&cubic_seg), - )); - } - bounding_box.unwrap_or_else(|| bounding_box_around_point(start, 0.0)) - } - } else { - extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end) - } - } - } +pub fn path_segment_bounding_box(seg: &PathSegment) -> AaBb { + match *seg { + PathSegment::Line(start, end) => AaBb { + top: start.y.min(end.y), + right: start.x.max(end.x), + bottom: start.y.max(end.y), + left: start.x.min(end.x), + }, + PathSegment::Cubic(p1, p2, p3, p4) => { + let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); + let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); + AaBb { top, right, bottom, left } + } + PathSegment::Quadratic(p1, p2, p3) => { + let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); + let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); + AaBb { top, right, bottom, left } + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let theta2 = center_param.theta1 + center_param.delta_theta; + let mut bounding_box = extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end); + + if phi == 0.0 || rx == ry { + // FIXME: the following gives false positives, resulting in larger boxes + if in_interval(-PI, center_param.theta1, theta2) || in_interval(PI, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x - rx, center_param.center.y)); + } + if in_interval(-PI / 2.0, center_param.theta1, theta2) || in_interval(3.0 * PI / 2.0, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y - ry)); + } + if in_interval(0.0, center_param.theta1, theta2) || in_interval(2.0 * PI, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x + rx, center_param.center.y)); + } + if in_interval(PI / 2.0, center_param.theta1, theta2) || in_interval(5.0 * PI / 2.0, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y + ry)); + } + expand_bounding_box(&bounding_box, 1e-11) // TODO: get rid of expansion + } else { + // TODO: don't convert to cubics + let cubics = arc_segment_to_cubics(seg, PI / 16.0); + let mut bounding_box = None; + for cubic_seg in cubics { + bounding_box = Some(merge_bounding_boxes(bounding_box, &path_segment_bounding_box(&cubic_seg))); + } + bounding_box.unwrap_or_else(|| bounding_box_around_point(start, 0.0)) + } + } else { + extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end) + } + } + } } pub fn split_segment_at(seg: &PathSegment, t: f64) -> (PathSegment, PathSegment) { - match *seg { - PathSegment::Line(start, end) => { - let p = start.lerp(end, t); - (PathSegment::Line(start, p), PathSegment::Line(p, end)) - } - PathSegment::Cubic(p0, p1, p2, p3) => { - let p01 = p0.lerp(p1, t); - let p12 = p1.lerp(p2, t); - let p23 = p2.lerp(p3, t); - let p012 = p01.lerp(p12, t); - let p123 = p12.lerp(p23, t); - let p = p012.lerp(p123, t); - - ( - PathSegment::Cubic(p0, p01, p012, p), - PathSegment::Cubic(p, p123, p23, p3), - ) - } - PathSegment::Quadratic(p0, p1, p2) => { - let p01 = p0.lerp(p1, t); - let p12 = p1.lerp(p2, t); - let p = p01.lerp(p12, t); - - ( - PathSegment::Quadratic(p0, p01, p), - PathSegment::Quadratic(p, p12, p2), - ) - } - PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let mid_theta = center_param.theta1 + center_param.delta_theta * t; - let mid_point = sample_path_segment_at(seg, t); - - let seg1 = PathSegment::Arc( - start, rx, ry, phi, false, // large arc flag for first half - fs, // sweep flag remains the same - mid_point, - ); - - let seg2 = PathSegment::Arc( - mid_point, rx, ry, phi, false, // large arc flag for second half - fs, // sweep flag remains the same - end, - ); - - (seg1, seg2) - } else { - let p = start.lerp(end, t); - (PathSegment::Line(start, p), PathSegment::Line(p, end)) - } - } - } - // PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => { - // if let Some(center_param) = arc_segment_to_center(seg) { - // let mid_delta_theta = center_param.delta_theta * t; - // let seg1 = arc_segment_from_center(&PathArcSegmentCenterParametrization { - // delta_theta: mid_delta_theta, - // ..center_param - // }); - // let seg2 = arc_segment_from_center(&PathArcSegmentCenterParametrization { - // theta1: center_param.theta1 + mid_delta_theta, - // delta_theta: center_param.delta_theta - mid_delta_theta, - // ..center_param - // }); - // (seg1, seg2) - // } else { - // // https://svgwg.org/svg2-draft/implnote.html#ArcCorrectionOutOfRangeRadii - // let p = start.lerp(end, t); - // (PathSegment::Line(start, p), PathSegment::Line(p, end)) - // } - // } - // } + match *seg { + PathSegment::Line(start, end) => { + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + PathSegment::Cubic(p0, p1, p2, p3) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p23 = p2.lerp(p3, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + let p = p012.lerp(p123, t); + + (PathSegment::Cubic(p0, p01, p012, p), PathSegment::Cubic(p, p123, p23, p3)) + } + PathSegment::Quadratic(p0, p1, p2) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p = p01.lerp(p12, t); + + (PathSegment::Quadratic(p0, p01, p), PathSegment::Quadratic(p, p12, p2)) + } + PathSegment::Arc(start, _, _, _, _, _, end) => { + if let Some(center_param) = arc_segment_to_center(seg) { + let mid_delta_theta = center_param.delta_theta * t; + let seg1 = arc_segment_from_center( + &PathArcSegmentCenterParametrization { + delta_theta: mid_delta_theta, + ..center_param + }, + Some(start), + None, + ); + let seg2 = arc_segment_from_center( + &PathArcSegmentCenterParametrization { + theta1: center_param.theta1 + mid_delta_theta, + delta_theta: center_param.delta_theta - mid_delta_theta, + ..center_param + }, + None, + Some(end), + ); + (seg1, seg2) + } else { + // https://svgwg.org/svg2-draft/implnote.html#ArcCorrectionOutOfRangeRadii + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + } + } } diff --git a/libraries/path-bool/src/quad_tree.rs b/libraries/path-bool/src/quad_tree.rs index d83adca5aea..81ecb9eddac 100644 --- a/libraries/path-bool/src/quad_tree.rs +++ b/libraries/path-bool/src/quad_tree.rs @@ -2,175 +2,124 @@ // // SPDX-License-Identifier: MIT -use crate::aabb::AABB; -use crate::line_segment_aabb::line_segment_aabb_intersect; -use crate::vector::Vector; +use crate::aabb::AaBb; use std::collections::HashSet; pub struct QuadTree { - bounding_box: AABB, - depth: usize, - inner_node_capacity: usize, - subtrees: Option; 4]>>, - pairs: Vec<(AABB, T)>, + bounding_box: AaBb, + depth: usize, + inner_node_capacity: usize, + subtrees: Option; 4]>>, + pairs: Vec<(AaBb, T)>, } impl QuadTree { - pub fn from_pairs(pairs: &[(AABB, T)], depth: usize, inner_node_capacity: usize) -> Self { - if pairs.is_empty() { - panic!("QuadTree::from_pairs: at least one pair needed."); - } - - let mut bounding_box = pairs[0].0; - for (key, _) in pairs.iter().skip(1) { - bounding_box = crate::aabb::merge_bounding_boxes(Some(bounding_box), key); - } - - let mut tree = QuadTree::new(bounding_box, depth, inner_node_capacity); - - for (key, value) in pairs { - tree.insert(*key, value.clone()); - } - - tree - } - - pub fn new(bounding_box: AABB, depth: usize, inner_node_capacity: usize) -> Self { - QuadTree { - bounding_box, - depth, - inner_node_capacity, - subtrees: None, - pairs: Vec::new(), - } - } - - pub fn insert(&mut self, bounding_box: AABB, value: T) -> bool { - if !crate::aabb::bounding_boxes_overlap(&bounding_box, &self.bounding_box) { - return false; - } - - if self.depth > 0 && self.pairs.len() >= self.inner_node_capacity { - self.ensure_subtrees(); - for tree in self.subtrees.as_mut().unwrap().iter_mut() { - tree.insert(bounding_box, value.clone()); - } - } else { - self.pairs.push((bounding_box, value)); - } - - true - } - - pub fn find(&self, bounding_box: &AABB) -> HashSet - where - T: Eq + std::hash::Hash + Clone, - { - let mut set = HashSet::new(); - self.find_internal(bounding_box, &mut set); - set - } - - fn find_internal(&self, bounding_box: &AABB, set: &mut HashSet) - where - T: Eq + std::hash::Hash + Clone, - { - if !crate::aabb::bounding_boxes_overlap(bounding_box, &self.bounding_box) { - return; - } - - for (key, value) in &self.pairs { - if crate::aabb::bounding_boxes_overlap(bounding_box, key) { - set.insert(value.clone()); - } - } - - if let Some(subtrees) = &self.subtrees { - for tree in subtrees.iter() { - tree.find_internal(bounding_box, set); - } - } - } - - pub fn find_on_line_segment(&self, seg: [Vector; 2]) -> HashSet - where - T: Eq + std::hash::Hash + Clone, - { - let mut set = HashSet::new(); - self.find_on_line_segment_internal(seg, &mut set); - set - } - - fn find_on_line_segment_internal(&self, seg: [Vector; 2], set: &mut HashSet) - where - T: Eq + std::hash::Hash + Clone, - { - if !line_segment_aabb_intersect(seg, &self.bounding_box) { - return; - } - - for (key, value) in &self.pairs { - if line_segment_aabb_intersect(seg, key) { - set.insert(value.clone()); - } - } - - if let Some(subtrees) = &self.subtrees { - for tree in subtrees.iter() { - tree.find_on_line_segment_internal(seg, set); - } - } - } - - fn ensure_subtrees(&mut self) { - if self.subtrees.is_some() { - return; - } - - let midx = (self.bounding_box.left + self.bounding_box.right) / 2.0; - let midy = (self.bounding_box.top + self.bounding_box.bottom) / 2.0; - - self.subtrees = Some(Box::new([ - QuadTree::new( - AABB { - top: self.bounding_box.top, - right: midx, - bottom: midy, - left: self.bounding_box.left, - }, - self.depth - 1, - self.inner_node_capacity, - ), - QuadTree::new( - AABB { - top: self.bounding_box.top, - right: self.bounding_box.right, - bottom: midy, - left: midx, - }, - self.depth - 1, - self.inner_node_capacity, - ), - QuadTree::new( - AABB { - top: midy, - right: midx, - bottom: self.bounding_box.bottom, - left: self.bounding_box.left, - }, - self.depth - 1, - self.inner_node_capacity, - ), - QuadTree::new( - AABB { - top: midy, - right: self.bounding_box.right, - bottom: self.bounding_box.bottom, - left: midx, - }, - self.depth - 1, - self.inner_node_capacity, - ), - ])); - } + pub fn new(bounding_box: AaBb, depth: usize, inner_node_capacity: usize) -> Self { + QuadTree { + bounding_box, + depth, + inner_node_capacity, + subtrees: None, + pairs: Vec::new(), + } + } + + pub fn insert(&mut self, bounding_box: AaBb, value: T) -> bool { + if !crate::aabb::bounding_boxes_overlap(&bounding_box, &self.bounding_box) { + return false; + } + + if self.depth > 0 && self.pairs.len() >= self.inner_node_capacity { + self.ensure_subtrees(); + for tree in self.subtrees.as_mut().unwrap().iter_mut() { + tree.insert(bounding_box, value.clone()); + } + } else { + self.pairs.push((bounding_box, value)); + } + + true + } + + pub fn find(&self, bounding_box: &AaBb) -> HashSet + where + T: Eq + std::hash::Hash + Clone, + { + let mut set = HashSet::new(); + self.find_internal(bounding_box, &mut set); + set + } + + fn find_internal(&self, bounding_box: &AaBb, set: &mut HashSet) + where + T: Eq + std::hash::Hash + Clone, + { + if !crate::aabb::bounding_boxes_overlap(bounding_box, &self.bounding_box) { + return; + } + + for (key, value) in &self.pairs { + if crate::aabb::bounding_boxes_overlap(bounding_box, key) { + set.insert(value.clone()); + } + } + + if let Some(subtrees) = &self.subtrees { + for tree in subtrees.iter() { + tree.find_internal(bounding_box, set); + } + } + } + + fn ensure_subtrees(&mut self) { + if self.subtrees.is_some() { + return; + } + + let midx = (self.bounding_box.left + self.bounding_box.right) / 2.0; + let midy = (self.bounding_box.top + self.bounding_box.bottom) / 2.0; + + self.subtrees = Some(Box::new([ + QuadTree::new( + AaBb { + top: self.bounding_box.top, + right: midx, + bottom: midy, + left: self.bounding_box.left, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AaBb { + top: self.bounding_box.top, + right: self.bounding_box.right, + bottom: midy, + left: midx, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AaBb { + top: midy, + right: midx, + bottom: self.bounding_box.bottom, + left: self.bounding_box.left, + }, + self.depth - 1, + self.inner_node_capacity, + ), + QuadTree::new( + AaBb { + top: midy, + right: self.bounding_box.right, + bottom: self.bounding_box.bottom, + left: midx, + }, + self.depth - 1, + self.inner_node_capacity, + ), + ])); + } } diff --git a/libraries/path-bool/src/vector.rs b/libraries/path-bool/src/vector.rs index 8005905b478..f5351055ecc 100644 --- a/libraries/path-bool/src/vector.rs +++ b/libraries/path-bool/src/vector.rs @@ -6,10 +6,6 @@ use glam::DVec2; pub type Vector = DVec2; -pub fn create_vector() -> Vector { - Vector::ZERO -} - pub fn vectors_equal(a: Vector, b: Vector, eps: f64) -> bool { - a.abs_diff_eq(b, eps) + a.abs_diff_eq(b, eps) } diff --git a/libraries/path-bool/src/visual_tests.rs b/libraries/path-bool/src/visual_tests.rs index 26e515a88a5..579877aca44 100644 --- a/libraries/path-bool/src/visual_tests.rs +++ b/libraries/path-bool/src/visual_tests.rs @@ -5,9 +5,8 @@ use resvg::render; use resvg::tiny_skia::Transform; use resvg::usvg::{Options, Tree}; use std::fs; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; use svg::parser::Event; -use svg::parser::Parser; use crate::path_boolean::{self, FillRule, PathBooleanOperation}; use crate::path_data::{path_from_path_data, path_to_path_data}; @@ -15,226 +14,166 @@ use crate::path_data::{path_from_path_data, path_to_path_data}; const TOLERANCE: u8 = 84; fn get_fill_rule(fill_rule: &str) -> FillRule { - match fill_rule { - "evenodd" => FillRule::EvenOdd, - _ => FillRule::NonZero, - } + match fill_rule { + "evenodd" => FillRule::EvenOdd, + _ => FillRule::NonZero, + } } #[test] fn visual_tests() { - let ops = [ - ("union", PathBooleanOperation::Union), - ("difference", PathBooleanOperation::Difference), - ("intersection", PathBooleanOperation::Intersection), - ("exclusion", PathBooleanOperation::Exclusion), - ("division", PathBooleanOperation::Division), - ("fracture", PathBooleanOperation::Fracture), - ]; - - let folders: Vec<(String, PathBuf, &str, PathBooleanOperation)> = - glob("__fixtures__/visual-tests/*/") - .expect("Failed to read glob pattern") - .flat_map(|entry| { - let dir = entry.expect("Failed to get directory entry"); - ops.iter().map(move |(op_name, op)| { - ( - dir.file_name().unwrap().to_string_lossy().into_owned(), - dir.clone(), - *op_name, - *op, - ) - }) - }) - .collect(); - - let mut failure = false; - - for (name, dir, op_name, op) in folders { - let test_name = format!("{} {}", name, op_name); - println!("Running test: {}", test_name); - - fs::create_dir_all(dir.join("test-results")) - .expect("Failed to create test-results directory"); - - let original_path = dir.join("original.svg"); - - let mut content = String::new(); - let svg_tree = svg::open(&original_path, &mut content).expect("Failed to parse SVG"); - - let mut paths = Vec::new(); - let mut first_path_attributes = String::new(); - let mut width = String::new(); - let mut height = String::new(); - let mut view_box = String::new(); - for event in svg_tree { - match event { - Event::Tag("svg", svg::node::element::tag::Type::Start, attributes) => { - width = attributes - .get("width") - .map(|s| s.to_string()) - .unwrap_or_default(); - height = attributes - .get("height") - .map(|s| s.to_string()) - .unwrap_or_default(); - view_box = attributes - .get("viewBox") - .map(|s| s.to_string()) - .unwrap_or_default(); - } - Event::Tag("path", svg::node::element::tag::Type::Empty, attributes) => { - let data = attributes - .get("d") - .map(|s| s.to_string()) - .expect("Path data not found"); - let fill_rule = attributes - .get("fill-rule") - .map(|v| v.to_string()) - .unwrap_or_else(|| "nonzero".to_string()); - paths.push((data, fill_rule)); - - // Store attributes of the first path - if first_path_attributes.is_empty() { - for (key, value) in attributes.iter() { - if key != "d" && key != "id" { - first_path_attributes.push_str(&format!("{}=\"{}\" ", key, value)); - } - } - } - } - _ => {} - } - } - - if (width.is_empty() || height.is_empty()) && !view_box.is_empty() { - let vb: Vec<&str> = view_box.split_whitespace().collect(); - if vb.len() == 4 { - width = vb[2].to_string(); - height = vb[3].to_string(); - } - } - - if width.is_empty() || height.is_empty() { - panic!("Failed to extract width and height from SVG"); - } - - let a_node = paths[0].clone(); - let b_node = paths[1].clone(); - - let a = path_from_path_data(&a_node.0); - let b = path_from_path_data(&b_node.0); - - let a_fill_rule = get_fill_rule(&a_node.1); - let b_fill_rule = get_fill_rule(&b_node.1); - - let result = path_boolean::path_boolean(&a, a_fill_rule, &b, b_fill_rule, op); - - // Create the result SVG with correct dimensions - let mut result_svg = format!( - "", - width, height, view_box - ); - for path in &result { - result_svg.push_str(&format!( - "", - path_to_path_data(path, 1e-4), - first_path_attributes - )); - } - result_svg.push_str(""); - - // Save the result SVG - let destination_path = dir - .join("test-results") - .join(format!("{}-ours.svg", op_name)); - fs::write(&destination_path, &result_svg).expect("Failed to write result SVG"); - - // Render and compare images - let ground_truth_path = dir.join(format!("{}.svg", op_name)); - let ground_truth_svg = - fs::read_to_string(&ground_truth_path).expect("Failed to read ground truth SVG"); - - let ours_image = render_svg(&result_svg); - let ground_truth_image = render_svg(&ground_truth_svg); - - let ours_png_path = dir - .join("test-results") - .join(format!("{}-ours.png", op_name)); - ours_image - .save(&ours_png_path) - .expect("Failed to save our PNG"); - - let ground_truth_png_path = dir.join("test-results").join(format!("{}.png", op_name)); - ground_truth_image - .save(&ground_truth_png_path) - .expect("Failed to save ground truth PNG"); - - failure |= compare_images( - &ours_image, - &ground_truth_image, - ours_image.width(), - TOLERANCE, - ); - - // Check the number of paths - let result_path_count = result.len(); - let ground_truth_path_count = ground_truth_svg.matches(" = glob("__fixtures__/visual-tests/*/") + .expect("Failed to read glob pattern") + .flat_map(|entry| { + let dir = entry.expect("Failed to get directory entry"); + ops.iter() + .map(move |(op_name, op)| (dir.file_name().unwrap().to_string_lossy().into_owned(), dir.clone(), *op_name, *op)) + }) + .collect(); + + let mut failure = false; + + for (name, dir, op_name, op) in folders { + let test_name = format!("{} {}", name, op_name); + println!("Running test: {}", test_name); + + fs::create_dir_all(dir.join("test-results")).expect("Failed to create test-results directory"); + + let original_path = dir.join("original.svg"); + + let mut content = String::new(); + let svg_tree = svg::open(&original_path, &mut content).expect("Failed to parse SVG"); + + let mut paths = Vec::new(); + let mut first_path_attributes = String::new(); + let mut width = String::new(); + let mut height = String::new(); + let mut view_box = String::new(); + for event in svg_tree { + match event { + Event::Tag("svg", svg::node::element::tag::Type::Start, attributes) => { + width = attributes.get("width").map(|s| s.to_string()).unwrap_or_default(); + height = attributes.get("height").map(|s| s.to_string()).unwrap_or_default(); + view_box = attributes.get("viewBox").map(|s| s.to_string()).unwrap_or_default(); + } + Event::Tag("path", svg::node::element::tag::Type::Empty, attributes) => { + let data = attributes.get("d").map(|s| s.to_string()).expect("Path data not found"); + let fill_rule = attributes.get("fill-rule").map(|v| v.to_string()).unwrap_or_else(|| "nonzero".to_string()); + paths.push((data, fill_rule)); + + // Store attributes of the first path + if first_path_attributes.is_empty() { + for (key, value) in attributes.iter() { + if key != "d" && key != "id" { + first_path_attributes.push_str(&format!("{}=\"{}\" ", key, value)); + } + } + } + } + _ => {} + } + } + + if (width.is_empty() || height.is_empty()) && !view_box.is_empty() { + let vb: Vec<&str> = view_box.split_whitespace().collect(); + if vb.len() == 4 { + width = vb[2].to_string(); + height = vb[3].to_string(); + } + } + + if width.is_empty() || height.is_empty() { + panic!("Failed to extract width and height from SVG"); + } + + let a_node = paths[0].clone(); + let b_node = paths[1].clone(); + + let a = path_from_path_data(&a_node.0); + let b = path_from_path_data(&b_node.0); + + let a_fill_rule = get_fill_rule(&a_node.1); + let b_fill_rule = get_fill_rule(&b_node.1); + + let result = path_boolean::path_boolean(&a, a_fill_rule, &b, b_fill_rule, op); + + // Create the result SVG with correct dimensions + let mut result_svg = format!("", width, height, view_box); + for path in &result { + result_svg.push_str(&format!("", path_to_path_data(path, 1e-4), first_path_attributes)); + } + result_svg.push_str(""); + + // Save the result SVG + let destination_path = dir.join("test-results").join(format!("{}-ours.svg", op_name)); + fs::write(&destination_path, &result_svg).expect("Failed to write result SVG"); + + // Render and compare images + let ground_truth_path = dir.join(format!("{}.svg", op_name)); + let ground_truth_svg = fs::read_to_string(&ground_truth_path).expect("Failed to read ground truth SVG"); + + let ours_image = render_svg(&result_svg); + let ground_truth_image = render_svg(&ground_truth_svg); + + let ours_png_path = dir.join("test-results").join(format!("{}-ours.png", op_name)); + ours_image.save(&ours_png_path).expect("Failed to save our PNG"); + + let ground_truth_png_path = dir.join("test-results").join(format!("{}.png", op_name)); + ground_truth_image.save(&ground_truth_png_path).expect("Failed to save ground truth PNG"); + + failure |= compare_images(&ours_image, &ground_truth_image, TOLERANCE); + + // Check the number of paths + let result_path_count = result.len(); + let ground_truth_path_count = ground_truth_svg.matches(" DynamicImage { - let opts = Options::default(); - let tree = Tree::from_str(svg_code, &opts).unwrap(); - let pixmap_size = tree.size.to_screen_size(); - let (width, height) = (pixmap_size.width(), pixmap_size.height()); - let mut pixmap = resvg::tiny_skia::Pixmap::new(width, height).unwrap(); - render( - &tree, - resvg::usvg::FitTo::Original, - Transform::default(), - pixmap.as_mut(), - ); - DynamicImage::ImageRgba8(RgbaImage::from_raw(width, height, pixmap.data().to_vec()).unwrap()) + let opts = Options::default(); + let tree = Tree::from_str(svg_code, &opts).unwrap(); + let pixmap_size = tree.size.to_screen_size(); + let (width, height) = (pixmap_size.width(), pixmap_size.height()); + let mut pixmap = resvg::tiny_skia::Pixmap::new(width, height).unwrap(); + render(&tree, resvg::usvg::FitTo::Original, Transform::default(), pixmap.as_mut()); + DynamicImage::ImageRgba8(RgbaImage::from_raw(width, height, pixmap.data().to_vec()).unwrap()) } -fn compare_images(img1: &DynamicImage, img2: &DynamicImage, width: u32, tolerance: u8) -> bool { - assert_eq!( - img1.dimensions(), - img2.dimensions(), - "Image dimensions do not match" - ); - - for (x, y, pixel1) in img1.pixels() { - let pixel2 = img2.get_pixel(x, y); - for i in 0..4 { - let difference = (pixel1[i] as i32 - pixel2[i] as i32).abs() as u8; - if difference > tolerance { - println!( - "Difference {} larger than tolerance {} at [{}, {}], channel {}.", - difference, tolerance, x, y, i - ); - return true; - } - - assert!( - difference <= tolerance, - "Difference {} larger than tolerance {} at [{}, {}], channel {}.", - difference, - tolerance, - x, - y, - i - ); - } - } - false +fn compare_images(img1: &DynamicImage, img2: &DynamicImage, tolerance: u8) -> bool { + assert_eq!(img1.dimensions(), img2.dimensions(), "Image dimensions do not match"); + + for (x, y, pixel1) in img1.pixels() { + let pixel2 = img2.get_pixel(x, y); + for i in 0..4 { + let difference = (pixel1[i] as i32 - pixel2[i] as i32).unsigned_abs() as u8; + if difference > tolerance { + println!("Difference {} larger than tolerance {} at [{}, {}], channel {}.", difference, tolerance, x, y, i); + return true; + } + + assert!( + difference <= tolerance, + "Difference {} larger than tolerance {} at [{}, {}], channel {}.", + difference, + tolerance, + x, + y, + i + ); + } + } + false } From b38c323500a96c340918918ef5b15c2e42053dd5 Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Mon, 2 Sep 2024 14:59:28 +0200 Subject: [PATCH 03/39] Cargo format --- libraries/path-bool/src/epsilons.rs | 6 +- libraries/path-bool/src/line_segment.rs | 54 ++- libraries/path-bool/src/path.rs | 217 ++++++----- libraries/path-bool/src/path_command.rs | 217 ++++++----- .../path_cubic_segment_self_intersection.rs | 70 ++-- libraries/path-bool/src/path_data.rs | 336 ++++++++---------- 6 files changed, 412 insertions(+), 488 deletions(-) diff --git a/libraries/path-bool/src/epsilons.rs b/libraries/path-bool/src/epsilons.rs index 840daded205..ae1f2c12690 100644 --- a/libraries/path-bool/src/epsilons.rs +++ b/libraries/path-bool/src/epsilons.rs @@ -4,7 +4,7 @@ #[derive(Clone, Copy, Debug)] pub struct Epsilons { - pub point: f64, - pub linear: f64, - pub param: f64, + pub point: f64, + pub linear: f64, + pub param: f64, } diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/line_segment.rs index 6a511f9a2b5..d3c7603ec5d 100644 --- a/libraries/path-bool/src/line_segment.rs +++ b/libraries/path-bool/src/line_segment.rs @@ -8,36 +8,32 @@ pub type LineSegment = [Vector; 2]; const COLLINEAR_EPS: f64 = f64::EPSILON * 64.0; -pub fn line_segment_intersection( - [p1, p2]: LineSegment, - [p3, p4]: LineSegment, - eps: f64, -) -> Option<(f64, f64)> { - // https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments - - let a1 = p2.x - p1.x; - let b1 = p3.x - p4.x; - let c1 = p3.x - p1.x; - let a2 = p2.y - p1.y; - let b2 = p3.y - p4.y; - let c2 = p3.y - p1.y; - - let denom = a1 * b2 - a2 * b1; - - if denom.abs() < COLLINEAR_EPS { - return None; - } - - let s = (c1 * b2 - c2 * b1) / denom; - let t = (a1 * c2 - a2 * c1) / denom; - - if (-eps..=1.0 + eps).contains(&s) && (-eps..=1.0 + eps).contains(&t) { - Some((s, t)) - } else { - None - } +pub fn line_segment_intersection([p1, p2]: LineSegment, [p3, p4]: LineSegment, eps: f64) -> Option<(f64, f64)> { + // https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments + + let a1 = p2.x - p1.x; + let b1 = p3.x - p4.x; + let c1 = p3.x - p1.x; + let a2 = p2.y - p1.y; + let b2 = p3.y - p4.y; + let c2 = p3.y - p1.y; + + let denom = a1 * b2 - a2 * b1; + + if denom.abs() < COLLINEAR_EPS { + return None; + } + + let s = (c1 * b2 - c2 * b1) / denom; + let t = (a1 * c2 - a2 * c1) / denom; + + if (-eps..=1.0 + eps).contains(&s) && (-eps..=1.0 + eps).contains(&t) { + Some((s, t)) + } else { + None + } } pub fn line_segments_intersect(seg1: LineSegment, seg2: LineSegment, eps: f64) -> bool { - line_segment_intersection(seg1, seg2, eps).is_some() + line_segment_intersection(seg1, seg2, eps).is_some() } diff --git a/libraries/path-bool/src/path.rs b/libraries/path-bool/src/path.rs index 8cd5d6824dc..d5edd54449f 100644 --- a/libraries/path-bool/src/path.rs +++ b/libraries/path-bool/src/path.rs @@ -11,136 +11,119 @@ use crate::vector::{vectors_equal, Vector}; pub type Path = Vec; fn reflect_control_point(point: Vector, control_point: Vector) -> Vector { - point * 2.0 - control_point + point * 2.0 - control_point } pub fn path_from_commands(commands: I) -> impl Iterator where - I: IntoIterator, + I: IntoIterator, { - let mut first_point: Option = None; - let mut last_point: Option = None; - let mut last_control_point: Option = None; + let mut first_point: Option = None; + let mut last_point: Option = None; + let mut last_control_point: Option = None; - to_absolute_commands(commands).filter_map(move |cmd| match cmd { - AbsolutePathCommand::M(point) => { - last_point = Some(point); - first_point = Some(point); - last_control_point = None; - None - } - AbsolutePathCommand::L(point) => { - let start = last_point.unwrap(); - last_point = Some(point); - last_control_point = None; - Some(PathSegment::Line(start, point)) - } - AbsolutePathCommand::H(x) => { - let start = last_point.unwrap(); - let point = DVec2::new(x, start.y); - last_point = Some(point); - last_control_point = None; - Some(PathSegment::Line(start, point)) - } - AbsolutePathCommand::V(y) => { - let start = last_point.unwrap(); - let point = DVec2::new(start.x, y); - last_point = Some(point); - last_control_point = None; - Some(PathSegment::Line(start, point)) - } - AbsolutePathCommand::C(c1, c2, end) => { - let start = last_point.unwrap(); - last_point = Some(end); - last_control_point = Some(c2); - Some(PathSegment::Cubic(start, c1, c2, end)) - } - AbsolutePathCommand::S(c2, end) => { - let start = last_point.unwrap(); - let c1 = reflect_control_point(start, last_control_point.unwrap_or(start)); - last_point = Some(end); - last_control_point = Some(c2); - Some(PathSegment::Cubic(start, c1, c2, end)) - } - AbsolutePathCommand::Q(c, end) => { - let start = last_point.unwrap(); - last_point = Some(end); - last_control_point = Some(c); - Some(PathSegment::Quadratic(start, c, end)) - } - AbsolutePathCommand::T(end) => { - let start = last_point.unwrap(); - let c = reflect_control_point(start, last_control_point.unwrap_or(start)); - last_point = Some(end); - last_control_point = Some(c); - Some(PathSegment::Quadratic(start, c, end)) - } - AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { - let start = last_point.unwrap(); - last_point = Some(end); - last_control_point = None; - Some(PathSegment::Arc( - start, - rx, - ry, - x_axis_rotation, - large_arc_flag, - sweep_flag, - end, - )) - } - AbsolutePathCommand::Z => { - let start = last_point.unwrap(); - let end = first_point.unwrap(); - last_point = Some(end); - last_control_point = None; - Some(PathSegment::Line(start, end)) - } - }) + to_absolute_commands(commands).filter_map(move |cmd| match cmd { + AbsolutePathCommand::M(point) => { + last_point = Some(point); + first_point = Some(point); + last_control_point = None; + None + } + AbsolutePathCommand::L(point) => { + let start = last_point.unwrap(); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::H(x) => { + let start = last_point.unwrap(); + let point = DVec2::new(x, start.y); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::V(y) => { + let start = last_point.unwrap(); + let point = DVec2::new(start.x, y); + last_point = Some(point); + last_control_point = None; + Some(PathSegment::Line(start, point)) + } + AbsolutePathCommand::C(c1, c2, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = Some(c2); + Some(PathSegment::Cubic(start, c1, c2, end)) + } + AbsolutePathCommand::S(c2, end) => { + let start = last_point.unwrap(); + let c1 = reflect_control_point(start, last_control_point.unwrap_or(start)); + last_point = Some(end); + last_control_point = Some(c2); + Some(PathSegment::Cubic(start, c1, c2, end)) + } + AbsolutePathCommand::Q(c, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = Some(c); + Some(PathSegment::Quadratic(start, c, end)) + } + AbsolutePathCommand::T(end) => { + let start = last_point.unwrap(); + let c = reflect_control_point(start, last_control_point.unwrap_or(start)); + last_point = Some(end); + last_control_point = Some(c); + Some(PathSegment::Quadratic(start, c, end)) + } + AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { + let start = last_point.unwrap(); + last_point = Some(end); + last_control_point = None; + Some(PathSegment::Arc(start, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end)) + } + AbsolutePathCommand::Z => { + let start = last_point.unwrap(); + let end = first_point.unwrap(); + last_point = Some(end); + last_control_point = None; + Some(PathSegment::Line(start, end)) + } + }) } pub fn path_to_commands<'a, I>(segments: I, eps: f64) -> impl Iterator + 'a where - I: IntoIterator + 'a, + I: IntoIterator + 'a, { - let mut last_point: Option = None; + let mut last_point: Option = None; - segments.into_iter().flat_map(move |seg| { - let start = crate::path_segment::get_start_point(seg); - let mut commands = Vec::new(); + segments.into_iter().flat_map(move |seg| { + let start = crate::path_segment::get_start_point(seg); + let mut commands = Vec::new(); - if last_point.map_or(true, |lp| !vectors_equal(start, lp, eps)) { - commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); - } + if last_point.map_or(true, |lp| !vectors_equal(start, lp, eps)) { + commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); + } - match seg { - PathSegment::Line(_, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::L(*end))); - last_point = Some(*end); - } - PathSegment::Cubic(_, c1, c2, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::C( - *c1, *c2, *end, - ))); - last_point = Some(*end); - } - PathSegment::Quadratic(_, c, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::Q(*c, *end))); - last_point = Some(*end); - } - PathSegment::Arc(_, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::A( - *rx, - *ry, - *x_axis_rotation, - *large_arc_flag, - *sweep_flag, - *end, - ))); - last_point = Some(*end); - } - } + match seg { + PathSegment::Line(_, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::L(*end))); + last_point = Some(*end); + } + PathSegment::Cubic(_, c1, c2, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::C(*c1, *c2, *end))); + last_point = Some(*end); + } + PathSegment::Quadratic(_, c, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::Q(*c, *end))); + last_point = Some(*end); + } + PathSegment::Arc(_, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::A(*rx, *ry, *x_axis_rotation, *large_arc_flag, *sweep_flag, *end))); + last_point = Some(*end); + } + } - commands - }) + commands + }) } diff --git a/libraries/path-bool/src/path_command.rs b/libraries/path-bool/src/path_command.rs index e1c698afa2a..b9567ea943e 100644 --- a/libraries/path-bool/src/path_command.rs +++ b/libraries/path-bool/src/path_command.rs @@ -6,130 +6,123 @@ use crate::vector::Vector; #[derive(Clone, Debug)] pub enum AbsolutePathCommand { - H(f64), - V(f64), - M(Vector), - L(Vector), - C(Vector, Vector, Vector), - S(Vector, Vector), - Q(Vector, Vector), - T(Vector), - A(f64, f64, f64, bool, bool, Vector), - Z, + H(f64), + V(f64), + M(Vector), + L(Vector), + C(Vector, Vector, Vector), + S(Vector, Vector), + Q(Vector, Vector), + T(Vector), + A(f64, f64, f64, bool, bool, Vector), + Z, } #[derive(Clone, Debug)] pub enum RelativePathCommand { - H(f64), - V(f64), - M(f64, f64), - L(f64, f64), - C(f64, f64, f64, f64, f64, f64), - S(f64, f64, f64, f64), - Q(f64, f64, f64, f64), - T(f64, f64), - A(f64, f64, f64, bool, bool, f64, f64), + H(f64), + V(f64), + M(f64, f64), + L(f64, f64), + C(f64, f64, f64, f64, f64, f64), + S(f64, f64, f64, f64), + Q(f64, f64, f64, f64), + T(f64, f64), + A(f64, f64, f64, bool, bool, f64, f64), } #[derive(Clone, Debug)] pub enum PathCommand { - Absolute(AbsolutePathCommand), - Relative(RelativePathCommand), + Absolute(AbsolutePathCommand), + Relative(RelativePathCommand), } pub fn to_absolute_commands(commands: I) -> impl Iterator where - I: IntoIterator, + I: IntoIterator, { - let mut last_point = Vector::ZERO; - let mut first_point = last_point; + let mut last_point = Vector::ZERO; + let mut first_point = last_point; - commands.into_iter().flat_map(move |cmd| match cmd { - PathCommand::Absolute(abs_cmd) => { - match abs_cmd { - AbsolutePathCommand::H(x) => { - last_point.x = x; - } - AbsolutePathCommand::V(y) => { - last_point.y = y; - } - AbsolutePathCommand::M(point) => { - last_point = point; - first_point = point; - } - AbsolutePathCommand::L(point) => { - last_point = point; - } - AbsolutePathCommand::C(_, _, end) => { - last_point = end; - } - AbsolutePathCommand::S(_, end) => { - last_point = end; - } - AbsolutePathCommand::Q(_, end) => { - last_point = end; - } - AbsolutePathCommand::T(end) => { - last_point = end; - } - AbsolutePathCommand::A(_, _, _, _, _, end) => { - last_point = end; - } - AbsolutePathCommand::Z => { - last_point = first_point; - } - } - vec![abs_cmd] - } - PathCommand::Relative(rel_cmd) => match rel_cmd { - RelativePathCommand::H(dx) => { - last_point.x += dx; - vec![AbsolutePathCommand::L(last_point)] - } - RelativePathCommand::V(dy) => { - last_point.y += dy; - vec![AbsolutePathCommand::L(last_point)] - } - RelativePathCommand::M(dx, dy) => { - last_point += Vector::new(dx, dy); - first_point = last_point; - vec![AbsolutePathCommand::M(last_point)] - } - RelativePathCommand::L(dx, dy) => { - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::L(last_point)] - } - RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => { - let c1 = last_point + Vector::new(dx1, dy1); - let c2 = last_point + Vector::new(dx2, dy2); - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::C(c1, c2, last_point)] - } - RelativePathCommand::S(dx2, dy2, dx, dy) => { - let c2 = last_point + Vector::new(dx2, dy2); - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::S(c2, last_point)] - } - RelativePathCommand::Q(dx1, dy1, dx, dy) => { - let control = last_point + Vector::new(dx1, dy1); - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::Q(control, last_point)] - } - RelativePathCommand::T(dx, dy) => { - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::T(last_point)] - } - RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { - last_point += Vector::new(dx, dy); - vec![AbsolutePathCommand::A( - rx, - ry, - x_axis_rotation, - large_arc_flag, - sweep_flag, - last_point, - )] - } - }, - }) + commands.into_iter().flat_map(move |cmd| match cmd { + PathCommand::Absolute(abs_cmd) => { + match abs_cmd { + AbsolutePathCommand::H(x) => { + last_point.x = x; + } + AbsolutePathCommand::V(y) => { + last_point.y = y; + } + AbsolutePathCommand::M(point) => { + last_point = point; + first_point = point; + } + AbsolutePathCommand::L(point) => { + last_point = point; + } + AbsolutePathCommand::C(_, _, end) => { + last_point = end; + } + AbsolutePathCommand::S(_, end) => { + last_point = end; + } + AbsolutePathCommand::Q(_, end) => { + last_point = end; + } + AbsolutePathCommand::T(end) => { + last_point = end; + } + AbsolutePathCommand::A(_, _, _, _, _, end) => { + last_point = end; + } + AbsolutePathCommand::Z => { + last_point = first_point; + } + } + vec![abs_cmd] + } + PathCommand::Relative(rel_cmd) => match rel_cmd { + RelativePathCommand::H(dx) => { + last_point.x += dx; + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::V(dy) => { + last_point.y += dy; + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::M(dx, dy) => { + last_point += Vector::new(dx, dy); + first_point = last_point; + vec![AbsolutePathCommand::M(last_point)] + } + RelativePathCommand::L(dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::L(last_point)] + } + RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => { + let c1 = last_point + Vector::new(dx1, dy1); + let c2 = last_point + Vector::new(dx2, dy2); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::C(c1, c2, last_point)] + } + RelativePathCommand::S(dx2, dy2, dx, dy) => { + let c2 = last_point + Vector::new(dx2, dy2); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::S(c2, last_point)] + } + RelativePathCommand::Q(dx1, dy1, dx, dy) => { + let control = last_point + Vector::new(dx1, dy1); + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::Q(control, last_point)] + } + RelativePathCommand::T(dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::T(last_point)] + } + RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { + last_point += Vector::new(dx, dy); + vec![AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, last_point)] + } + }, + }) } diff --git a/libraries/path-bool/src/path_cubic_segment_self_intersection.rs b/libraries/path-bool/src/path_cubic_segment_self_intersection.rs index 04c5c062629..3ed9e9e6de5 100644 --- a/libraries/path-bool/src/path_cubic_segment_self_intersection.rs +++ b/libraries/path-bool/src/path_cubic_segment_self_intersection.rs @@ -7,41 +7,37 @@ use crate::path_segment::PathSegment; const EPS: f64 = 1e-12; pub fn path_cubic_segment_self_intersection(seg: &PathSegment) -> Option<[f64; 2]> { - // https://math.stackexchange.com/questions/3931865/self-intersection-of-a-cubic-bezier-interpretation-of-the-solution - - if let PathSegment::Cubic(p1, p2, p3, p4) = seg { - let ax = -p1.x + 3.0 * p2.x - 3.0 * p3.x + p4.x; - let ay = -p1.y + 3.0 * p2.y - 3.0 * p3.y + p4.y; - let bx = 3.0 * p1.x - 6.0 * p2.x + 3.0 * p3.x; - let by = 3.0 * p1.y - 6.0 * p2.y + 3.0 * p3.y; - let cx = -3.0 * p1.x + 3.0 * p2.x; - let cy = -3.0 * p1.y + 3.0 * p2.y; - - let m = ay * bx - ax * by; - let n = ax * cy - ay * cx; - - let k = (-3.0 * ax * ax * cy * cy + 6.0 * ax * ay * cx * cy + 4.0 * ax * bx * by * cy - - 4.0 * ax * by * by * cx - - 3.0 * ay * ay * cx * cx - - 4.0 * ay * bx * bx * cy - + 4.0 * ay * bx * by * cx) - / (ax * ax * by * by - 2.0 * ax * ay * bx * by + ay * ay * bx * bx); - - if k < 0.0 { - return None; - } - - let t1 = (n / m + k.sqrt()) / 2.0; - let t2 = (n / m - k.sqrt()) / 2.0; - - if (EPS..=1.0 - EPS).contains(&t1) && (EPS..=1.0 - EPS).contains(&t2) { - let mut result = [t1, t2]; - result.sort_by(|a, b| a.partial_cmp(b).unwrap()); - Some(result) - } else { - None - } - } else { - None - } + // https://math.stackexchange.com/questions/3931865/self-intersection-of-a-cubic-bezier-interpretation-of-the-solution + + if let PathSegment::Cubic(p1, p2, p3, p4) = seg { + let ax = -p1.x + 3.0 * p2.x - 3.0 * p3.x + p4.x; + let ay = -p1.y + 3.0 * p2.y - 3.0 * p3.y + p4.y; + let bx = 3.0 * p1.x - 6.0 * p2.x + 3.0 * p3.x; + let by = 3.0 * p1.y - 6.0 * p2.y + 3.0 * p3.y; + let cx = -3.0 * p1.x + 3.0 * p2.x; + let cy = -3.0 * p1.y + 3.0 * p2.y; + + let m = ay * bx - ax * by; + let n = ax * cy - ay * cx; + + let k = (-3.0 * ax * ax * cy * cy + 6.0 * ax * ay * cx * cy + 4.0 * ax * bx * by * cy - 4.0 * ax * by * by * cx - 3.0 * ay * ay * cx * cx - 4.0 * ay * bx * bx * cy + 4.0 * ay * bx * by * cx) + / (ax * ax * by * by - 2.0 * ax * ay * bx * by + ay * ay * bx * bx); + + if k < 0.0 { + return None; + } + + let t1 = (n / m + k.sqrt()) / 2.0; + let t2 = (n / m - k.sqrt()) / 2.0; + + if (EPS..=1.0 - EPS).contains(&t1) && (EPS..=1.0 - EPS).contains(&t2) { + let mut result = [t1, t2]; + result.sort_by(|a, b| a.partial_cmp(b).unwrap()); + Some(result) + } else { + None + } + } else { + None + } } diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/path_data.rs index 20276d2ab7c..1c21411fa9d 100644 --- a/libraries/path-bool/src/path_data.rs +++ b/libraries/path-bool/src/path_data.rs @@ -8,207 +8,163 @@ use crate::vector::Vector; use regex::Regex; pub fn commands_from_path_data(d: &str) -> Vec { - let re_float = Regex::new(r"^\s*,?\s*(-?\d*(?:\d\.|\.\d|\d)\d*(?:[eE][+\-]?\d+)?)").unwrap(); - let re_cmd = Regex::new(r"^\s*([MLCSQTAZHVmlhvcsqtaz])").unwrap(); - let re_bool = Regex::new(r"^\s*,?\s*([01])").unwrap(); + let re_float = Regex::new(r"^\s*,?\s*(-?\d*(?:\d\.|\.\d|\d)\d*(?:[eE][+\-]?\d+)?)").unwrap(); + let re_cmd = Regex::new(r"^\s*([MLCSQTAZHVmlhvcsqtaz])").unwrap(); + let re_bool = Regex::new(r"^\s*,?\s*([01])").unwrap(); - let mut i = 0; - let mut last_cmd = 'M'; - let mut commands = Vec::new(); + let mut i = 0; + let mut last_cmd = 'M'; + let mut commands = Vec::new(); - let get_cmd = |i: &mut usize, last_cmd: char| -> Option { - if *i >= d.len() - 1 { - return None; - } + let get_cmd = |i: &mut usize, last_cmd: char| -> Option { + if *i >= d.len() - 1 { + return None; + } - if let Some(cap) = re_cmd.captures(&d[*i..]) { - *i += cap[0].len(); - Some(cap[1].chars().next().unwrap()) - } else { - match last_cmd { - 'M' => Some('L'), - 'm' => Some('l'), - _ => Some(last_cmd), - } - } - }; + if let Some(cap) = re_cmd.captures(&d[*i..]) { + *i += cap[0].len(); + Some(cap[1].chars().next().unwrap()) + } else { + match last_cmd { + 'M' => Some('L'), + 'm' => Some('l'), + _ => Some(last_cmd), + } + } + }; - let get_float = |i: &mut usize| -> f64 { - if let Some(cap) = re_float.captures(&d[*i..]) { - *i += cap[0].len(); - cap[1].parse().unwrap() - } else { - panic!("Invalid path data. Expected a number at index {}", i); - } - }; + let get_float = |i: &mut usize| -> f64 { + if let Some(cap) = re_float.captures(&d[*i..]) { + *i += cap[0].len(); + cap[1].parse().unwrap() + } else { + panic!("Invalid path data. Expected a number at index {}", i); + } + }; - let get_bool = |i: &mut usize| -> bool { - if let Some(cap) = re_bool.captures(&d[*i..]) { - *i += cap[0].len(); - &cap[1] == "1" - } else { - panic!("Invalid path data. Expected a flag at index {}", i); - } - }; + let get_bool = |i: &mut usize| -> bool { + if let Some(cap) = re_bool.captures(&d[*i..]) { + *i += cap[0].len(); + &cap[1] == "1" + } else { + panic!("Invalid path data. Expected a flag at index {}", i); + } + }; - while let Some(cmd) = get_cmd(&mut i, last_cmd) { - last_cmd = cmd; - match cmd { - 'M' => commands.push(PathCommand::Absolute(AbsolutePathCommand::M(Vector::new( - get_float(&mut i), - get_float(&mut i), - )))), - 'L' => commands.push(PathCommand::Absolute(AbsolutePathCommand::L(Vector::new( - get_float(&mut i), - get_float(&mut i), - )))), - 'C' => commands.push(PathCommand::Absolute(AbsolutePathCommand::C( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), - ))), - 'S' => commands.push(PathCommand::Absolute(AbsolutePathCommand::S( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), - ))), - 'Q' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Q( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), - ))), - 'T' => commands.push(PathCommand::Absolute(AbsolutePathCommand::T(Vector::new( - get_float(&mut i), - get_float(&mut i), - )))), - 'A' => commands.push(PathCommand::Absolute(AbsolutePathCommand::A( - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_bool(&mut i), - get_bool(&mut i), - Vector::new(get_float(&mut i), get_float(&mut i)), - ))), - 'Z' | 'z' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Z)), - 'H' => commands.push(PathCommand::Absolute(AbsolutePathCommand::H(get_float( - &mut i, - )))), - 'V' => commands.push(PathCommand::Absolute(AbsolutePathCommand::V(get_float( - &mut i, - )))), - 'm' => commands.push(PathCommand::Relative(RelativePathCommand::M( - get_float(&mut i), - get_float(&mut i), - ))), - 'l' => commands.push(PathCommand::Relative(RelativePathCommand::L( - get_float(&mut i), - get_float(&mut i), - ))), - 'h' => commands.push(PathCommand::Relative(RelativePathCommand::H(get_float( - &mut i, - )))), - 'v' => commands.push(PathCommand::Relative(RelativePathCommand::V(get_float( - &mut i, - )))), - 'c' => commands.push(PathCommand::Relative(RelativePathCommand::C( - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - ))), - 's' => commands.push(PathCommand::Relative(RelativePathCommand::S( - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - ))), - 'q' => commands.push(PathCommand::Relative(RelativePathCommand::Q( - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - ))), - 't' => commands.push(PathCommand::Relative(RelativePathCommand::T( - get_float(&mut i), - get_float(&mut i), - ))), - 'a' => commands.push(PathCommand::Relative(RelativePathCommand::A( - get_float(&mut i), - get_float(&mut i), - get_float(&mut i), - get_bool(&mut i), - get_bool(&mut i), - get_float(&mut i), - get_float(&mut i), - ))), - _ => panic!("Invalid command: {}", cmd), - } - } + while let Some(cmd) = get_cmd(&mut i, last_cmd) { + last_cmd = cmd; + match cmd { + 'M' => commands.push(PathCommand::Absolute(AbsolutePathCommand::M(Vector::new(get_float(&mut i), get_float(&mut i))))), + 'L' => commands.push(PathCommand::Absolute(AbsolutePathCommand::L(Vector::new(get_float(&mut i), get_float(&mut i))))), + 'C' => commands.push(PathCommand::Absolute(AbsolutePathCommand::C( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'S' => commands.push(PathCommand::Absolute(AbsolutePathCommand::S( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'Q' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Q( + Vector::new(get_float(&mut i), get_float(&mut i)), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'T' => commands.push(PathCommand::Absolute(AbsolutePathCommand::T(Vector::new(get_float(&mut i), get_float(&mut i))))), + 'A' => commands.push(PathCommand::Absolute(AbsolutePathCommand::A( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_bool(&mut i), + get_bool(&mut i), + Vector::new(get_float(&mut i), get_float(&mut i)), + ))), + 'Z' | 'z' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Z)), + 'H' => commands.push(PathCommand::Absolute(AbsolutePathCommand::H(get_float(&mut i)))), + 'V' => commands.push(PathCommand::Absolute(AbsolutePathCommand::V(get_float(&mut i)))), + 'm' => commands.push(PathCommand::Relative(RelativePathCommand::M(get_float(&mut i), get_float(&mut i)))), + 'l' => commands.push(PathCommand::Relative(RelativePathCommand::L(get_float(&mut i), get_float(&mut i)))), + 'h' => commands.push(PathCommand::Relative(RelativePathCommand::H(get_float(&mut i)))), + 'v' => commands.push(PathCommand::Relative(RelativePathCommand::V(get_float(&mut i)))), + 'c' => commands.push(PathCommand::Relative(RelativePathCommand::C( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 's' => commands.push(PathCommand::Relative(RelativePathCommand::S( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 'q' => commands.push(PathCommand::Relative(RelativePathCommand::Q( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + 't' => commands.push(PathCommand::Relative(RelativePathCommand::T(get_float(&mut i), get_float(&mut i)))), + 'a' => commands.push(PathCommand::Relative(RelativePathCommand::A( + get_float(&mut i), + get_float(&mut i), + get_float(&mut i), + get_bool(&mut i), + get_bool(&mut i), + get_float(&mut i), + get_float(&mut i), + ))), + _ => panic!("Invalid command: {}", cmd), + } + } - commands + commands } pub fn path_from_path_data(d: &str) -> Path { - path_from_commands(commands_from_path_data(d)).collect() + path_from_commands(commands_from_path_data(d)).collect() } pub fn path_to_path_data(path: &Path, eps: f64) -> String { - path_to_commands(path.iter(), eps) - .map(|cmd| match cmd { - PathCommand::Absolute(abs_cmd) => match abs_cmd { - AbsolutePathCommand::H(dx) => format!("H{:.12}", dx), - AbsolutePathCommand::V(dy) => format!("V{:.12}", dy), - AbsolutePathCommand::M(p) => format!("M{:.12},{:.12}", p.x, p.y), - AbsolutePathCommand::L(p) => format!("L{:.12},{:.12}", p.x, p.y), - AbsolutePathCommand::C(p1, p2, p3) => format!( - "C{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", - p1.x, p1.y, p2.x, p2.y, p3.x, p3.y - ), - AbsolutePathCommand::S(p1, p2) => { - format!("S{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) - } - AbsolutePathCommand::Q(p1, p2) => { - format!("Q{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) - } - AbsolutePathCommand::T(p) => format!("T{:.12},{:.12}", p.x, p.y), - AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, p) => { - format!( - "A{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", - rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, p.x, p.y - ) - } - AbsolutePathCommand::Z => "Z".to_string(), - }, - PathCommand::Relative(rel_cmd) => match rel_cmd { - RelativePathCommand::M(dx, dy) => format!("m{:.12},{:.12}", dx, dy), - RelativePathCommand::L(dx, dy) => format!("l{:.12},{:.12}", dx, dy), - RelativePathCommand::H(dx) => format!("h{:.12}", dx), - RelativePathCommand::V(dy) => format!("v{:.12}", dy), - RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => format!( - "c{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", - dx1, dy1, dx2, dy2, dx, dy - ), - RelativePathCommand::S(dx2, dy2, dx, dy) => { - format!("s{:.12},{:.12} {:.12},{:.12}", dx2, dy2, dx, dy) - } - RelativePathCommand::Q(dx1, dy1, dx, dy) => { - format!("q{:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx, dy) - } - RelativePathCommand::T(dx, dy) => format!("t{:.12},{:.12}", dx, dy), - RelativePathCommand::A( - rx, - ry, - x_axis_rotation, - large_arc_flag, - sweep_flag, - dx, - dy, - ) => format!( - "a{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", - rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, dx, dy - ), - }, - }) - .collect::>() - .join(" ") + path_to_commands(path.iter(), eps) + .map(|cmd| match cmd { + PathCommand::Absolute(abs_cmd) => match abs_cmd { + AbsolutePathCommand::H(dx) => format!("H{:.12}", dx), + AbsolutePathCommand::V(dy) => format!("V{:.12}", dy), + AbsolutePathCommand::M(p) => format!("M{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::L(p) => format!("L{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::C(p1, p2, p3) => format!("C{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y, p3.x, p3.y), + AbsolutePathCommand::S(p1, p2) => { + format!("S{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + } + AbsolutePathCommand::Q(p1, p2) => { + format!("Q{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + } + AbsolutePathCommand::T(p) => format!("T{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, p) => { + format!("A{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, p.x, p.y) + } + AbsolutePathCommand::Z => "Z".to_string(), + }, + PathCommand::Relative(rel_cmd) => match rel_cmd { + RelativePathCommand::M(dx, dy) => format!("m{:.12},{:.12}", dx, dy), + RelativePathCommand::L(dx, dy) => format!("l{:.12},{:.12}", dx, dy), + RelativePathCommand::H(dx) => format!("h{:.12}", dx), + RelativePathCommand::V(dy) => format!("v{:.12}", dy), + RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => format!("c{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx2, dy2, dx, dy), + RelativePathCommand::S(dx2, dy2, dx, dy) => { + format!("s{:.12},{:.12} {:.12},{:.12}", dx2, dy2, dx, dy) + } + RelativePathCommand::Q(dx1, dy1, dx, dy) => { + format!("q{:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx, dy) + } + RelativePathCommand::T(dx, dy) => format!("t{:.12},{:.12}", dx, dy), + RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { + format!("a{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, dx, dy) + } + }, + }) + .collect::>() + .join(" ") } From a407572b5e6cf624db91777c150fd0ddb3793e12 Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Mon, 2 Sep 2024 15:49:41 +0200 Subject: [PATCH 04/39] Integrate boolean ops into graphite --- Cargo.lock | 1 + Cargo.toml | 1 + libraries/path-bool/src/lib.rs | 7 +++++-- node-graph/gstd/Cargo.toml | 1 + node-graph/gstd/src/vector.rs | 22 ++++++++++++++++------ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e516360f456..156236aa6c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2490,6 +2490,7 @@ dependencies = [ "js-sys", "log", "node-macro", + "path-bool", "rand 0.8.5", "rand_chacha 0.3.1", "reqwest 0.12.7", diff --git a/Cargo.toml b/Cargo.toml index 25d9499b013..1ca3a9bcfc1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,7 @@ graphene-core = { path = "node-graph/gcore" } graph-craft = { path = "node-graph/graph-craft", features = ["serde"] } wgpu-executor = { path = "node-graph/wgpu-executor" } bezier-rs = { path = "libraries/bezier-rs", features = ["dyn-any"] } +path-bool = { path = "libraries/path-bool", features = ["parsing"] } node-macro = { path = "node-graph/node-macro" } # Workspace dependencies diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index cbcdf55b6e2..5a51eebdb73 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -5,16 +5,19 @@ mod line_segment; mod line_segment_aabb; mod math; mod path; -pub mod path_boolean; +mod path_boolean; mod path_command; mod path_cubic_segment_self_intersection; -pub mod path_data; +mod path_data; mod path_segment; mod quad_tree; mod vector; #[cfg(test)] mod visual_tests; +pub use path_boolean::{path_boolean, FillRule, PathBooleanOperation}; +pub use path_data::{path_from_path_data, path_to_path_data}; + #[cfg(test)] mod test { use crate::{ diff --git a/node-graph/gstd/Cargo.toml b/node-graph/gstd/Cargo.toml index c8ebf2747ab..c10e3a0ae86 100644 --- a/node-graph/gstd/Cargo.toml +++ b/node-graph/gstd/Cargo.toml @@ -37,6 +37,7 @@ graphene-core = { path = "../gcore", default-features = false, features = [ fastnoise-lite = { workspace = true } log = { workspace = true } bezier-rs = { workspace = true, features = ["serde"] } +path-bool = { workspace = true, features = ["parsing"] } glam = { workspace = true, features = ["serde"] } node-macro = { workspace = true } rustc-hash = { workspace = true } diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 774ac07a1c1..1ad33283e12 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -7,6 +7,7 @@ pub use graphene_core::vector::*; use graphene_core::{Color, GraphicElement, GraphicGroup}; use glam::{DAffine2, DVec2}; +use path_bool::PathBooleanOperation; #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; @@ -260,14 +261,23 @@ extern "C" { fn boolean_intersect(path1: String, path2: String) -> String; } #[cfg(not(target_arch = "wasm32"))] -fn boolean_union(_path1: String, _path2: String) -> String { - String::from("M0,0 L1,0 L1,1 L0,1 Z") +fn boolean_union(a: String, b: String) -> String { + path_bool(a, b, PathBooleanOperation::Union) +} + +fn path_bool(a: String, b: String, op: PathBooleanOperation) -> String { + use path_bool::FillRule; + let a = path_bool::path_from_path_data(&a); + let b = path_bool::path_from_path_data(&b); + let results = path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op); + + results.iter().map(|result| path_bool::path_to_path_data(&result, 0.00001)).fold(String::new(), |o, n| o + &n) } #[cfg(not(target_arch = "wasm32"))] -fn boolean_subtract(_path1: String, _path2: String) -> String { - String::from("M0,0 L1,0 L1,1 L0,1 Z") +fn boolean_subtract(a: String, b: String) -> String { + path_bool(a, b, PathBooleanOperation::Difference) } #[cfg(not(target_arch = "wasm32"))] -fn boolean_intersect(_path1: String, _path2: String) -> String { - String::from("M0,0 L1,0 L1,1 L0,1 Z") +fn boolean_intersect(a: String, b: String) -> String { + path_bool(a, b, PathBooleanOperation::Intersection) } From 94f72d19c5b8c3df783fec630ec89db084171914 Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Tue, 3 Sep 2024 00:28:38 +0200 Subject: [PATCH 05/39] Add test for editor crash --- libraries/path-bool/src/lib.rs | 22 +++++++++++--- libraries/path-bool/src/path_boolean.rs | 25 +++++++++++----- libraries/path-bool/src/path_data.rs | 4 +-- libraries/path-bool/src/visual_tests.rs | 2 +- node-graph/gstd/Cargo.toml | 2 +- node-graph/gstd/src/vector.rs | 40 ++++++++++++++----------- 6 files changed, 62 insertions(+), 33 deletions(-) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 5a51eebdb73..d71d100bae2 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -44,7 +44,8 @@ mod test { &b, path_boolean::FillRule::NonZero, path_boolean::PathBooleanOperation::Intersection, - ); + ) + .unwrap(); dbg!(path_to_path_data(&union[0], 0.001)); // panic!(); } @@ -55,7 +56,7 @@ mod test { let b = path_from_path_data( "M 37.909023,24 A 13.909023,13.909023 0 0 1 24,37.909023 13.909023,13.909023 0 0 1 10.090978,24 13.909023,13.909023 0 0 1 24,10.090978 13.909023,13.909023 0 0 1 37.909023,24 Z", ); - let union = path_boolean(&a, path_boolean::FillRule::NonZero, &b, path_boolean::FillRule::NonZero, path_boolean::PathBooleanOperation::Union); + let union = path_boolean(&a, path_boolean::FillRule::NonZero, &b, path_boolean::FillRule::NonZero, path_boolean::PathBooleanOperation::Union).unwrap(); dbg!(path_to_path_data(&union[0], 0.001)); } #[test] @@ -63,7 +64,7 @@ mod test { let a = path_from_path_data("M 0.99999994,31.334457 C 122.61195,71.81859 -79.025816,-5.5803326 47,32.253367 V 46.999996 H 0.99999994 Z"); let b = path_from_path_data("m 25.797222,29.08718 c 0,1.292706 -1.047946,2.340652 -2.340652,2.340652 -1.292707,0 -2.340652,-1.047946 -2.340652,-2.340652 0,-1.292707 1.047945,-2.340652 2.340652,-2.340652 1.292706,0 2.340652,1.047945 2.340652,2.340652 z M 7.5851073,28.332212 c 1e-7,1.292706 -1.0479456,2.340652 -2.3406521,2.340652 -1.2927063,-1e-6 -2.3406518,-1.047946 -2.3406517,-2.340652 -10e-8,-1.292707 1.0479454,-2.340652 2.3406517,-2.340652 1.2927065,-1e-6 2.3406522,1.047945 2.3406521,2.340652 z"); - let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union); + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); @@ -75,7 +76,20 @@ mod test { ); let b = path_from_path_data("M 37.671452,24 C 33.698699,53.634887 29.50935,49.018306 24,37.671452 20.7021,30.879219 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 14.674677,6.187863 13.671452,13.671452 z"); - let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union); + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); + + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + // Add more specific assertions about the resulting path if needed + } + #[test] + fn rect_ellipse() { + let a = path_from_path_data("M 0,-10 C5.517848,-10 10,-5.517848 10,0 C10,5.517848 5.517848,10.000000 0.000000,10.000000 C-5.517848,10 -10,5.517848 -10,0 C-10,-5.517848 -5.517848,-10 0,-10"); + let b = path_from_path_data( + "M-10,-10.438833C-10,-10.438833 10,-10.438833 10,-10.438833 C10,-10.438833 10,5.770318 10,5.770318 C10,5.770318 -10,5.770318 -10,5.770318 C-10,5.770318 -10,-10.438833 -10,-10.438833 Z", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index bfaccd72615..54df2097e57 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -671,7 +671,7 @@ fn compute_winding(face: &DualGraphVertex, edges: &SlotMap DualGraph { +fn compute_dual(minor_graph: &MinorGraph) -> Option { let mut new_vertices: Vec = Vec::new(); let mut minor_to_dual_edge: HashMap = HashMap::new(); let mut dual_edges = SlotMap::with_key(); @@ -782,6 +782,9 @@ fn compute_dual(minor_graph: &MinorGraph) -> DualGraph { .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) .expect("No outer face of a component found."); + if component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count() > 1 { + return None; + } assert_eq!( component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count(), 1, @@ -795,11 +798,11 @@ fn compute_dual(minor_graph: &MinorGraph) -> DualGraph { }); } - DualGraph { + Some(DualGraph { vertices: dual_vertices, edges: dual_edges, components, - } + }) } fn get_next_edge(edge_key: MinorEdgeKey, graph: &MinorGraph) -> MinorEdgeKey { @@ -1121,7 +1124,13 @@ const OPERATION_PREDICATES: [fn(u8) -> bool; 6] = [ |flag: u8| flag > 0, // Fracture ]; -pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Vec { +// TODO: Impl error trait +#[derive(Debug)] +pub enum BooleanError { + MultipleOuterFaces, +} + +pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Result, BooleanError> { let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).collect(); split_at_self_intersections(&mut unsplit_edges); @@ -1130,7 +1139,7 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let total_bounding_box = match total_bounding_box { Some(bb) => bb, - None => return Vec::new(), // input geometry is empty + None => return Ok(Vec::new()), // input geometry is empty }; let major_graph = find_vertices(&split_edges, total_bounding_box); @@ -1168,7 +1177,7 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill assert_eq!(twin.twin.unwrap(), edge_key, "Twin relationship should be symmetrical for edge {:?}", edge_key); } - let dual_graph = compute_dual(&minor_graph); + let dual_graph = compute_dual(&minor_graph).ok_or(BooleanError::MultipleOuterFaces)?; let nesting_trees = compute_nesting_tree(&dual_graph); @@ -1185,10 +1194,10 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let predicate = OPERATION_PREDICATES[op as usize]; match op { - PathBooleanOperation::Division | PathBooleanOperation::Fracture => dump_faces(&nesting_trees, predicate, edges, vertices, &flags), + PathBooleanOperation::Division | PathBooleanOperation::Fracture => Ok(dump_faces(&nesting_trees, predicate, edges, vertices, &flags)), _ => { let selected_faces: HashSet = get_selected_faces(&predicate, &flags).collect(); - vec![walk_faces(&selected_faces, edges, vertices).collect()] + Ok(vec![walk_faces(&selected_faces, edges, vertices).collect()]) } } } diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/path_data.rs index 1c21411fa9d..068a20b0960 100644 --- a/libraries/path-bool/src/path_data.rs +++ b/libraries/path-bool/src/path_data.rs @@ -17,7 +17,7 @@ pub fn commands_from_path_data(d: &str) -> Vec { let mut commands = Vec::new(); let get_cmd = |i: &mut usize, last_cmd: char| -> Option { - if *i >= d.len() - 1 { + if *i >= d.len() - 1.min(d.len()) { return None; } @@ -38,7 +38,7 @@ pub fn commands_from_path_data(d: &str) -> Vec { *i += cap[0].len(); cap[1].parse().unwrap() } else { - panic!("Invalid path data. Expected a number at index {}", i); + panic!("Invalid path data. Expected a number at index {}, got {}", i, &d[*i..]); } }; diff --git a/libraries/path-bool/src/visual_tests.rs b/libraries/path-bool/src/visual_tests.rs index 579877aca44..620e84603e7 100644 --- a/libraries/path-bool/src/visual_tests.rs +++ b/libraries/path-bool/src/visual_tests.rs @@ -104,7 +104,7 @@ fn visual_tests() { let a_fill_rule = get_fill_rule(&a_node.1); let b_fill_rule = get_fill_rule(&b_node.1); - let result = path_boolean::path_boolean(&a, a_fill_rule, &b, b_fill_rule, op); + let result = path_boolean::path_boolean(&a, a_fill_rule, &b, b_fill_rule, op).unwrap(); // Create the result SVG with correct dimensions let mut result_svg = format!("", width, height, view_box); diff --git a/node-graph/gstd/Cargo.toml b/node-graph/gstd/Cargo.toml index c10e3a0ae86..bbb0495c8d9 100644 --- a/node-graph/gstd/Cargo.toml +++ b/node-graph/gstd/Cargo.toml @@ -37,7 +37,7 @@ graphene-core = { path = "../gcore", default-features = false, features = [ fastnoise-lite = { workspace = true } log = { workspace = true } bezier-rs = { workspace = true, features = ["serde"] } -path-bool = { workspace = true, features = ["parsing"] } +path-bool = { workspace = true, features = ["parsing", "logging"] } glam = { workspace = true, features = ["serde"] } node-macro = { workspace = true } rustc-hash = { workspace = true } diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 1ad33283e12..1d405c605dd 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -250,34 +250,40 @@ pub fn convert_usvg_path(path: &usvg::Path) -> Vec> { subpaths } -#[cfg(target_arch = "wasm32")] -#[wasm_bindgen(module = "/../../frontend/src/utility-functions/computational-geometry.ts")] -extern "C" { - #[wasm_bindgen(js_name = booleanUnion)] - fn boolean_union(path1: String, path2: String) -> String; - #[wasm_bindgen(js_name = booleanSubtract)] - fn boolean_subtract(path1: String, path2: String) -> String; - #[wasm_bindgen(js_name = booleanIntersect)] - fn boolean_intersect(path1: String, path2: String) -> String; -} -#[cfg(not(target_arch = "wasm32"))] +// #[cfg(target_arch = "wasm32")] +// #[wasm_bindgen(module = "/../../frontend/src/utility-functions/computational-geometry.ts")] +// extern "C" { +// #[wasm_bindgen(js_name = booleanUnion)] +// fn boolean_union(path1: String, path2: String) -> String; +// #[wasm_bindgen(js_name = booleanSubtract)] +// fn boolean_subtract(path1: String, path2: String) -> String; +// #[wasm_bindgen(js_name = booleanIntersect)] +// fn boolean_intersect(path1: String, path2: String) -> String; +// } +// #[cfg(not(target_arch = "wasm32"))] fn boolean_union(a: String, b: String) -> String { path_bool(a, b, PathBooleanOperation::Union) } fn path_bool(a: String, b: String, op: PathBooleanOperation) -> String { use path_bool::FillRule; - let a = path_bool::path_from_path_data(&a); - let b = path_bool::path_from_path_data(&b); - let results = path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op); + let a_path = path_bool::path_from_path_data(&a); + let b_path = path_bool::path_from_path_data(&b); + let results = match path_bool::path_boolean(&a_path, FillRule::NonZero, &b_path, FillRule::NonZero, op) { + Ok(results) => results, + Err(e) => { + log::error!("Boolean error {e:?} encontered while processing {a} {op:?} {b}"); + Vec::new() + } + }; - results.iter().map(|result| path_bool::path_to_path_data(&result, 0.00001)).fold(String::new(), |o, n| o + &n) + results.iter().map(|result| path_bool::path_to_path_data(result, 0.00001)).fold(String::new(), |o, n| o + &n) } -#[cfg(not(target_arch = "wasm32"))] +// #[cfg(not(target_arch = "wasm32"))] fn boolean_subtract(a: String, b: String) -> String { path_bool(a, b, PathBooleanOperation::Difference) } -#[cfg(not(target_arch = "wasm32"))] +// #[cfg(not(target_arch = "wasm32"))] fn boolean_intersect(a: String, b: String) -> String { path_bool(a, b, PathBooleanOperation::Intersection) } From 3c2c1fecc67e16755f1037c86346deb04f6f4891 Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Wed, 4 Sep 2024 17:10:38 +0200 Subject: [PATCH 06/39] Fix edge sort floating point instability --- libraries/path-bool/src/path_boolean.rs | 92 ++++++++++++++++++++++--- libraries/path-bool/src/path_data.rs | 32 ++++----- node-graph/gstd/Cargo.toml | 2 +- 3 files changed, 99 insertions(+), 27 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 54df2097e57..d4f9f05599d 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -18,6 +18,7 @@ use crate::intersection_path_segment::{path_segment_intersection, segments_equal use crate::path::Path; use crate::path_cubic_segment_self_intersection::path_cubic_segment_self_intersection; use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, sample_path_segment_at, split_segment_at, PathSegment}; +use crate::path_to_path_data; use crate::quad_tree::QuadTree; use crate::vector::{vectors_equal, Vector}; use std::collections::{HashMap, HashSet, VecDeque}; @@ -88,7 +89,7 @@ impl MinorGraphEdge { let segments = self.segments.clone(); for segment in segments.into_iter() { let _ = match segment { - PathSegment::Line(mut start, mut end) => { + PathSegment::Line(mut start, mut end) | PathSegment::Cubic(mut start, _, _, mut end) => { if self.direction_flag.backwards() { (end, start) = (start, end); } @@ -193,7 +194,11 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap f64 { let seg = &edge.segments[0]; // TODO: explain in comment why this is always the incident one in both fwd and bwd + + // println!("{edge:?}"); //, edge.direction_flag.forward()); let (p0, p1) = if edge.direction_flag.forward() { (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) } else { (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) }; - (p1.y - p0.y).atan2(p1.x - p0.x) + + // println!("{p0:?} {p1:?}"); + let angle = (p1.y - p0.y).atan2(p1.x - p0.x); + // println!("angle: {}", angle); + (angle * 10000.).round() / 1000. } fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { for vertex in graph.vertices.values_mut() { if vertex.outgoing_edges.len() > 2 { - vertex + let edges: Vec<_> = vertex + .outgoing_edges + .iter() + .map(|key| (*key, &graph.edges[*key])) + .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), get_incidence_angle(edge))) + .collect(); + vertex.outgoing_edges.sort_by(|&a, &b| { + // TODO(@TrueDoctor): Make more robust. The js version seems to sort the data slightly differently when the angles are reallly close. In that case put the edge wich was discovered later first. + (get_incidence_angle(&graph.edges[a]) - (a.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.) + .partial_cmp(&(get_incidence_angle(&graph.edges[b]) - (b.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.)) + .unwrap_or(b.cmp(&a)) + }); + let edges: Vec<_> = vertex .outgoing_edges - .sort_by(|&a, &b| get_incidence_angle(&graph.edges[a]).partial_cmp(&get_incidence_angle(&graph.edges[b])).unwrap()); + .iter() + .map(|key| (*key, &graph.edges[*key])) + .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), get_incidence_angle(edge))) + .collect(); } } } fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap) -> Vec { const CNT: usize = 3; + #[cfg(feature = "logging")] + println!("incident node counts {}", face.incident_edges.len()); face.incident_edges .iter() .flat_map(|&edge_key| { let edge = &edges[edge_key]; + // println!("{}", path_to_path_data(&edge.segments, 0.001)); edge.segments.iter().flat_map(move |seg| { (0..CNT).map(move |i| { let t0 = i as f64 / CNT as f64; @@ -656,6 +685,10 @@ fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> (i32, Vector) { let polygon = face_to_polygon(face, edges); + #[cfg(feature = "logging")] + for point in &polygon { + println!("[{}, {}]", point.x, point.y); + } for i in 0..polygon.len() { let a = polygon[i]; @@ -678,6 +711,8 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { let mut dual_vertices = SlotMap::with_key(); for (start_edge_key, start_edge) in &minor_graph.edges { + #[cfg(feature = "logging")] + println!("Processing start edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); if minor_to_dual_edge.contains_key(&start_edge_key) { continue; } @@ -688,6 +723,8 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { let mut edge = start_edge; loop { + #[cfg(feature = "logging")] + println!("Processing edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); let twin = edge.twin.expect("Edge doesn't have a twin"); let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); @@ -708,6 +745,8 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { dual_vertices[face_key].incident_edges.push(new_edge_key); edge_key = get_next_edge(edge_key, minor_graph); + #[cfg(feature = "logging")] + println!("Next edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); edge = &minor_graph.edges[edge_key]; if edge.incident_vertices[0] == start_edge.incident_vertices[0] { @@ -749,6 +788,10 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { let mut visited_vertices = HashSet::new(); let mut visited_edges = HashSet::new(); + if cfg!(feature = "logging") { + println!("faces: {}, dual-edges: {}, cycles: {}", new_vertices.len(), dual_edges.len(), minor_graph.cycles.len()) + } + for &start_vertex_key in &new_vertices { if visited_vertices.contains(&start_vertex_key) { continue; @@ -776,15 +819,36 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { stack.push(dual_edges[twin_key].incident_vertex); } } + #[cfg(feature = "logging")] + println!("component_vertices: {}", component_vertices.len()); + for edge in &dual_edges { + // println!("{:?}", edge.incident_vertex); + } let outer_face_key = *component_vertices .iter() .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) .expect("No outer face of a component found."); + #[cfg(feature = "logging")] + if cfg!(feature = "logging") { + println!( + "{}", + dual_graph_to_dot( + &[DualGraphComponent { + vertices: component_vertices.clone(), + edges: component_edges.clone(), + outer_face: None, + }], + &dual_edges, + ) + ); + } + if component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count() > 1 { return None; } + // TODO: merge with previous iter assert_eq!( component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count(), 1, @@ -1151,11 +1215,6 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let mut minor_graph = compute_minor(&major_graph); - #[cfg(feature = "logging")] - for edge in minor_graph.edges.values() { - println!("{}", edge.format_path()); - } - #[cfg(feature = "logging")] println!("Minor graph:"); #[cfg(feature = "logging")] @@ -1167,7 +1226,20 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill #[cfg(feature = "logging")] println!("{}", minor_graph_to_dot(&minor_graph.edges)); + #[cfg(feature = "logging")] + for (key, edge) in minor_graph.edges.iter() { + // println!("{}", edge.format_path()); + println!("{key:?}:\n{}", path_to_path_data(&edge.segments, 0.001)); + } + #[cfg(feature = "logging")] + for vertex in minor_graph.vertices.values() { + println!("{:?}", vertex); + } sort_outgoing_edges_by_angle(&mut minor_graph); + #[cfg(feature = "logging")] + for vertex in minor_graph.vertices.values() { + println!("{:?}", vertex); + } for (edge_key, edge) in &minor_graph.edges { assert!(minor_graph.vertices.contains_key(edge.incident_vertices[0]), "Edge {:?} has invalid start vertex", edge_key); diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/path_data.rs index 068a20b0960..7e646484ae5 100644 --- a/libraries/path-bool/src/path_data.rs +++ b/libraries/path-bool/src/path_data.rs @@ -130,38 +130,38 @@ pub fn path_to_path_data(path: &Path, eps: f64) -> String { path_to_commands(path.iter(), eps) .map(|cmd| match cmd { PathCommand::Absolute(abs_cmd) => match abs_cmd { - AbsolutePathCommand::H(dx) => format!("H{:.12}", dx), - AbsolutePathCommand::V(dy) => format!("V{:.12}", dy), - AbsolutePathCommand::M(p) => format!("M{:.12},{:.12}", p.x, p.y), - AbsolutePathCommand::L(p) => format!("L{:.12},{:.12}", p.x, p.y), - AbsolutePathCommand::C(p1, p2, p3) => format!("C{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y, p3.x, p3.y), + AbsolutePathCommand::H(dx) => format!("H {:.12}", dx), + AbsolutePathCommand::V(dy) => format!("V {:.12}", dy), + AbsolutePathCommand::M(p) => format!("M {:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::L(p) => format!("L {:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::C(p1, p2, p3) => format!("C {:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y, p3.x, p3.y), AbsolutePathCommand::S(p1, p2) => { - format!("S{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + format!("S {:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) } AbsolutePathCommand::Q(p1, p2) => { - format!("Q{:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) + format!("Q {:.12},{:.12} {:.12},{:.12}", p1.x, p1.y, p2.x, p2.y) } - AbsolutePathCommand::T(p) => format!("T{:.12},{:.12}", p.x, p.y), + AbsolutePathCommand::T(p) => format!("T {:.12},{:.12}", p.x, p.y), AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, p) => { - format!("A{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, p.x, p.y) + format!("A {:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, p.x, p.y) } AbsolutePathCommand::Z => "Z".to_string(), }, PathCommand::Relative(rel_cmd) => match rel_cmd { - RelativePathCommand::M(dx, dy) => format!("m{:.12},{:.12}", dx, dy), - RelativePathCommand::L(dx, dy) => format!("l{:.12},{:.12}", dx, dy), - RelativePathCommand::H(dx) => format!("h{:.12}", dx), - RelativePathCommand::V(dy) => format!("v{:.12}", dy), + RelativePathCommand::M(dx, dy) => format!("m {:.12},{:.12}", dx, dy), + RelativePathCommand::L(dx, dy) => format!("l {:.12},{:.12}", dx, dy), + RelativePathCommand::H(dx) => format!("h {:.12}", dx), + RelativePathCommand::V(dy) => format!("v {:.12}", dy), RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => format!("c{:.12},{:.12} {:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx2, dy2, dx, dy), RelativePathCommand::S(dx2, dy2, dx, dy) => { - format!("s{:.12},{:.12} {:.12},{:.12}", dx2, dy2, dx, dy) + format!("s {:.12},{:.12} {:.12},{:.12}", dx2, dy2, dx, dy) } RelativePathCommand::Q(dx1, dy1, dx, dy) => { - format!("q{:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx, dy) + format!("q {:.12},{:.12} {:.12},{:.12}", dx1, dy1, dx, dy) } RelativePathCommand::T(dx, dy) => format!("t{:.12},{:.12}", dx, dy), RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { - format!("a{:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, dx, dy) + format!("a {:.12} {:.12} {:.12} {} {} {:.12},{:.12}", rx, ry, x_axis_rotation, large_arc_flag as u8, sweep_flag as u8, dx, dy) } }, }) diff --git a/node-graph/gstd/Cargo.toml b/node-graph/gstd/Cargo.toml index bbb0495c8d9..c10e3a0ae86 100644 --- a/node-graph/gstd/Cargo.toml +++ b/node-graph/gstd/Cargo.toml @@ -37,7 +37,7 @@ graphene-core = { path = "../gcore", default-features = false, features = [ fastnoise-lite = { workspace = true } log = { workspace = true } bezier-rs = { workspace = true, features = ["serde"] } -path-bool = { workspace = true, features = ["parsing", "logging"] } +path-bool = { workspace = true, features = ["parsing"] } glam = { workspace = true, features = ["serde"] } node-macro = { workspace = true } rustc-hash = { workspace = true } From 6c2c2cd7ef4d2d8af58c9d5810eee45bb8b067b9 Mon Sep 17 00:00:00 2001 From: "dennis@kobert.dev" Date: Thu, 5 Sep 2024 10:15:27 +0200 Subject: [PATCH 07/39] Add unit test for red-dress failure --- libraries/path-bool/src/lib.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index d71d100bae2..633609ae1c3 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -91,6 +91,19 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + // Add more specific assertions about the resulting path if needed + } + #[test] + fn red_dress_loop() { + let a = path_from_path_data("M969.000000,0.000000C969.000000,0.000000 1110.066898,76.934393 1085.000000,181.000000 C1052.000000,318.000000 1199.180581,334.301571 1277.000000,319.000000 C1455.000000,284.000000 1586.999985,81.000000 1418.000000,0.000000 C1418.000000,0.000000 969.000000,0.000000 969.000000,0.000000"); + let b = path_from_path_data( + "M1211.000000,0.000000C1211.000000,0.000000 1255.000000,78.000000 1536.000000,95.000000 C1536.000000,95.000000 1536.000000,0.000000 1536.000000,0.000000 C1536.000000,0.000000 1211.000000,0.000000 1211.000000,0.000000 Z", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); // Add more specific assertions about the resulting path if needed From fe40a7017aa2feb43d094cc17fdb09d73dbb5e1e Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 13 Sep 2024 15:30:56 +0200 Subject: [PATCH 08/39] Backport tests and aux functions --- Cargo.lock | 36 ++--- libraries/path-bool/Cargo.toml | 3 +- .../src/intersection_path_segment.rs | 5 +- libraries/path-bool/src/lib.rs | 29 +++- libraries/path-bool/src/path_boolean.rs | 132 ++++++++++++------ libraries/path-bool/src/path_segment.rs | 47 +++++++ libraries/path-bool/src/visual_tests.rs | 12 +- 7 files changed, 191 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 156236aa6c7..573d21ffb87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -519,7 +519,7 @@ name = "bezier-rs" version = "0.4.0" dependencies = [ "dyn-any", - "glam 0.28.0", + "glam", "kurbo", "log", "serde", @@ -530,7 +530,7 @@ name = "bezier-rs-wasm" version = "0.0.0" dependencies = [ "bezier-rs", - "glam 0.28.0", + "glam", "js-sys", "log", "serde", @@ -1493,7 +1493,7 @@ name = "dyn-any" version = "0.3.1" dependencies = [ "dyn-any-derive", - "glam 0.28.0", + "glam", "log", "reqwest 0.12.7", ] @@ -2193,12 +2193,6 @@ dependencies = [ "serde", ] -[[package]] -name = "glam" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" - [[package]] name = "glib" version = "0.15.12" @@ -2369,7 +2363,7 @@ dependencies = [ "bytemuck", "dyn-any", "futures", - "glam 0.28.0", + "glam", "graphene-core", "log", "node-macro", @@ -2388,7 +2382,7 @@ dependencies = [ "criterion", "dyn-any", "futures", - "glam 0.28.0", + "glam", "glob", "graph-craft", "graphene-core", @@ -2420,7 +2414,7 @@ dependencies = [ "dyn-any", "fern", "futures", - "glam 0.28.0", + "glam", "gpu-executor", "graph-craft", "graphene-core", @@ -2445,7 +2439,7 @@ dependencies = [ "bytemuck", "ctor", "dyn-any", - "glam 0.28.0", + "glam", "half", "image 0.25.2", "js-sys", @@ -2480,7 +2474,7 @@ dependencies = [ "dyn-any", "fastnoise-lite", "futures", - "glam 0.28.0", + "glam", "gpu-compiler-bin-wrapper", "gpu-executor", "graph-craft", @@ -2541,7 +2535,7 @@ dependencies = [ "dyn-any", "env_logger", "futures", - "glam 0.28.0", + "glam", "gpu-executor", "graph-craft", "graphene-core", @@ -2582,7 +2576,7 @@ name = "graphite-wasm" version = "0.0.0" dependencies = [ "bezier-rs", - "glam 0.28.0", + "glam", "graph-craft", "graphene-core", "graphite-editor", @@ -3217,7 +3211,7 @@ version = "0.1.0" dependencies = [ "dyn-any", "futures", - "glam 0.28.0", + "glam", "gpu-executor", "graph-craft", "graphene-core", @@ -4326,7 +4320,7 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" name = "path-bool" version = "0.1.0" dependencies = [ - "glam 0.29.0", + "glam", "glob", "image 0.24.9", "regex", @@ -5789,7 +5783,7 @@ name = "specta" version = "2.0.0-rc.20" source = "git+https://github.com/oscartbeaumont/specta.git#8509af0162b26bb2c08e84a41cdfc4eaf67a6ab3" dependencies = [ - "glam 0.28.0", + "glam", "specta-macros", "thiserror", ] @@ -5829,7 +5823,7 @@ version = "0.9.0" source = "git+https://github.com/GraphiteEditor/rust-gpu.git#7f60fbbdddc0d6effa1c3c86e3e11f9896c970e8" dependencies = [ "bitflags 1.3.2", - "glam 0.28.0", + "glam", "num-traits", "spirv-std-macros", "spirv-std-types", @@ -7439,7 +7433,7 @@ dependencies = [ "dyn-any", "futures", "futures-intrusive", - "glam 0.28.0", + "glam", "gpu-executor", "graphene-core", "half", diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml index 96c6e994536..caf85ca799b 100644 --- a/libraries/path-bool/Cargo.toml +++ b/libraries/path-bool/Cargo.toml @@ -15,7 +15,7 @@ parsing = [] default = ["parsing"] [dependencies] -glam = "0.29.0" +glam = "0.28.0" regex = "1.10.6" slotmap = "1.0.7" @@ -24,3 +24,4 @@ glob = "0.3" svg = "0.13" resvg = "0.42" image = "0.24" + diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 9078c3abb60..8cb6a8c6c30 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -80,6 +80,7 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 } pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoints: bool, eps: &Epsilons) -> Vec<[f64; 2]> { + // dbg!(&seg0, &seg1, endpoints); if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { if !endpoints && (st.0 < eps.param || st.0 > 1.0 - eps.param) && (st.1 < eps.param || st.1 > 1.0 - eps.param) { @@ -117,8 +118,8 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin continue; // TODO: what to do? } - let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; - let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box).min((seg0.end_param - seg0.start_param).abs()) <= eps.linear; + let is_linear1 = bounding_box_max_extent(&seg1.bounding_box).min((seg1.end_param - seg1.start_param).abs()) <= eps.linear; if is_linear0 && is_linear1 { let line_segment0 = path_segment_to_line_segment(&seg0.seg); diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 633609ae1c3..73284cc6d03 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -47,6 +47,7 @@ mod test { ) .unwrap(); dbg!(path_to_path_data(&union[0], 0.001)); + assert!(!union[0].is_empty()); // panic!(); } @@ -58,6 +59,7 @@ mod test { ); let union = path_boolean(&a, path_boolean::FillRule::NonZero, &b, path_boolean::FillRule::NonZero, path_boolean::PathBooleanOperation::Union).unwrap(); dbg!(path_to_path_data(&union[0], 0.001)); + assert!(!union[0].is_empty()); } #[test] fn nesting_02() { @@ -69,6 +71,21 @@ mod test { // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn nesting_03() { + let a = path_from_path_data("m 21.829117,3.5444345 h 4.341766 V 16.502158 H 21.829117 Z M 47,24 A 23,23 0 0 1 24,47 23,23 0 0 1 1,24 23,23 0 0 1 24,1 23,23 0 0 1 47,24 Z"); + let b = path_from_path_data("M 24 6.4960938 A 17.504802 17.504802 0 0 0 6.4960938 24 A 17.504802 17.504802 0 0 0 24 41.503906 A 17.504802 17.504802 0 0 0 41.503906 24 A 17.504802 17.504802 0 0 0 24 6.4960938 z M 24 12.193359 A 11.805881 11.805881 0 0 1 35.806641 24 A 11.805881 11.805881 0 0 1 24 35.806641 A 11.805881 11.805881 0 0 1 12.193359 24 A 11.805881 11.805881 0 0 1 24 12.193359 z "); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); + + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + // Add more specific assertions about the resulting path if needed + let path_string = dbg!(path_to_path_data(&result[0], 0.001)); + assert_eq!(path_string.chars().filter(|c| c == &'M').count(), 1, "More than one path returned"); + assert!(!result[0].is_empty()); } #[test] fn simple_07() { @@ -81,18 +98,20 @@ mod test { // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); // Add more specific assertions about the resulting path if needed + dbg!(path_to_path_data(&result[0], 0.001)); + assert!(!result[0].is_empty()); } #[test] fn rect_ellipse() { - let a = path_from_path_data("M 0,-10 C5.517848,-10 10,-5.517848 10,0 C10,5.517848 5.517848,10.000000 0.000000,10.000000 C-5.517848,10 -10,5.517848 -10,0 C-10,-5.517848 -5.517848,-10 0,-10"); - let b = path_from_path_data( - "M-10,-10.438833C-10,-10.438833 10,-10.438833 10,-10.438833 C10,-10.438833 10,5.770318 10,5.770318 C10,5.770318 -10,5.770318 -10,5.770318 C-10,5.770318 -10,-10.438833 -10,-10.438833 Z", - ); + let a = path_from_path_data("M0,0C0,0 100,0 100,0 C100,0 100,100 100,100 C100,100 0,100 0,100 C0,100 0,0 0,0 Z"); + let b = path_from_path_data("M50,0C77.589239,0 100,22.410761 100,50 C100,77.589239 77.589239,100 50,100 C22.410761,100 0,77.589239 0,50 C0,22.410761 22.410761,0 50,0 Z"); let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + assert!(!result[0].is_empty()); // Add more specific assertions about the resulting path if needed } #[test] @@ -106,6 +125,8 @@ mod test { // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); } } diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index d4f9f05599d..b394558ecf6 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -21,6 +21,7 @@ use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_ use crate::path_to_path_data; use crate::quad_tree::QuadTree; use crate::vector::{vectors_equal, Vector}; +use std::cmp::Ordering; use std::collections::{HashMap, HashSet, VecDeque}; #[derive(Debug, Clone, Copy)] @@ -81,8 +82,8 @@ struct MinorGraphEdge { twin: Option, } -#[cfg(feature = "logging")] impl MinorGraphEdge { + #[cfg(feature = "logging")] fn format_path(&self) -> String { use std::fmt::Write; let mut output = String::new(); @@ -100,6 +101,45 @@ impl MinorGraphEdge { } output } + + fn start_segment(&self) -> PathSegment { + let segment = self.segments[0]; + match self.direction_flag { + Direction::Forward => segment, + Direction::Backwards => reverse_path_segment(&segment), + } + } +} +fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { + let angle_a = a.start_angle(); + let angle_b = b.start_angle(); + use std::f64::consts::PI; + + // Normalize angles to [0, 2π) + let angle_a = (angle_a + 2.0 * PI) % (2.0 * PI); + let angle_b = (angle_b + 2.0 * PI) % (2.0 * PI); + let angle_a = (angle_a * 1000.).round() / 1000.; + let angle_b = (angle_b * 1000.).round() / 1000.; + // dbg!(a, angle_a.to_degrees(), b, angle_b.to_degrees()); + + // Compare angles first + match angle_b.partial_cmp(&angle_a) { + Some(Ordering::Equal) => { + // If angles are equal (or very close), compare curvatures + let curvature_a = a.start_curvature(); + let curvature_b = b.start_curvature(); + dbg!(curvature_a, curvature_b); + curvature_b.partial_cmp(&curvature_a).unwrap_or(Ordering::Equal) + } + Some(ordering) => ordering, + None => Ordering::Equal, // Handle NaN cases + } +} + +impl PartialOrd for MinorGraphEdge { + fn partial_cmp(&self, other: &Self) -> Option { + Some(compare_segments(&self.start_segment(), &other.start_segment())) + } } #[derive(Debug, Clone, Default)] @@ -595,16 +635,16 @@ fn remove_dangling_edges(graph: &mut MinorGraph) { fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { let seg = &edge.segments[0]; // TODO: explain in comment why this is always the incident one in both fwd and bwd - // println!("{edge:?}"); //, edge.direction_flag.forward()); + // eprintln!("{edge:?}"); //, edge.direction_flag.forward()); let (p0, p1) = if edge.direction_flag.forward() { (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) } else { (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) }; - // println!("{p0:?} {p1:?}"); + // eprintln!("{p0:?} {p1:?}"); let angle = (p1.y - p0.y).atan2(p1.x - p0.x); - // println!("angle: {}", angle); + // eprintln!("angle: {}", angle); (angle * 10000.).round() / 1000. } @@ -635,14 +675,14 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap) -> Vec { const CNT: usize = 3; - #[cfg(feature = "logging")] - println!("incident node counts {}", face.incident_edges.len()); + // #[cfg(feature = "logging")] + // eprintln!("incident node counts {}", face.incident_edges.len()); face.incident_edges .iter() .flat_map(|&edge_key| { let edge = &edges[edge_key]; - // println!("{}", path_to_path_data(&edge.segments, 0.001)); + // eprintln!("{}", path_to_path_data(&edge.segments, 0.001)); edge.segments.iter().flat_map(move |seg| { (0..CNT).map(move |i| { let t0 = i as f64 / CNT as f64; @@ -687,7 +727,7 @@ fn compute_winding(face: &DualGraphVertex, edges: &SlotMap Option { for (start_edge_key, start_edge) in &minor_graph.edges { #[cfg(feature = "logging")] - println!("Processing start edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Processing start edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); if minor_to_dual_edge.contains_key(&start_edge_key) { continue; } @@ -724,7 +764,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { loop { #[cfg(feature = "logging")] - println!("Processing edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Processing edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); let twin = edge.twin.expect("Edge doesn't have a twin"); let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); @@ -746,7 +786,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { edge_key = get_next_edge(edge_key, minor_graph); #[cfg(feature = "logging")] - println!("Next edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Next edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); edge = &minor_graph.edges[edge_key]; if edge.incident_vertices[0] == start_edge.incident_vertices[0] { @@ -789,7 +829,17 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { let mut visited_edges = HashSet::new(); if cfg!(feature = "logging") { - println!("faces: {}, dual-edges: {}, cycles: {}", new_vertices.len(), dual_edges.len(), minor_graph.cycles.len()) + // eeprintln!("minor_to_dual: {:#?}", minor_to_dual_edge); + eprintln!("faces: {}, dual-edges: {}, cycles: {}", new_vertices.len(), dual_edges.len(), minor_graph.cycles.len()) + } + + #[cfg(feature = "logging")] + for (vertex_key, vertex) in &dual_vertices { + eprintln!("\n\n#{:?}", vertex_key.0); + let polygon = face_to_polygon(vertex, &dual_edges); + for point in polygon { + eprintln!("{}, {}", point.x, point.y); + } } for &start_vertex_key in &new_vertices { @@ -820,9 +870,9 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { } } #[cfg(feature = "logging")] - println!("component_vertices: {}", component_vertices.len()); + eprintln!("component_vertices: {}", component_vertices.len()); for edge in &dual_edges { - // println!("{:?}", edge.incident_vertex); + // eprintln!("{:?}", edge.incident_vertex); } let outer_face_key = *component_vertices @@ -832,7 +882,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { #[cfg(feature = "logging")] if cfg!(feature = "logging") { - println!( + eprintln!( "{}", dual_graph_to_dot( &[DualGraphComponent { @@ -1209,36 +1259,36 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let major_graph = find_vertices(&split_edges, total_bounding_box); #[cfg(feature = "logging")] - println!("Major graph:"); + eprintln!("Major graph:"); #[cfg(feature = "logging")] - println!("{}", major_graph_to_dot(&major_graph)); + eprintln!("{}", major_graph_to_dot(&major_graph)); let mut minor_graph = compute_minor(&major_graph); #[cfg(feature = "logging")] - println!("Minor graph:"); + eprintln!("Minor graph:"); #[cfg(feature = "logging")] - println!("{}", minor_graph_to_dot(&minor_graph.edges)); + eprintln!("{}", minor_graph_to_dot(&minor_graph.edges)); remove_dangling_edges(&mut minor_graph); #[cfg(feature = "logging")] - println!("After removing dangling edges:"); + eprintln!("After removing dangling edges:"); #[cfg(feature = "logging")] - println!("{}", minor_graph_to_dot(&minor_graph.edges)); + eprintln!("{}", minor_graph_to_dot(&minor_graph.edges)); #[cfg(feature = "logging")] for (key, edge) in minor_graph.edges.iter() { - // println!("{}", edge.format_path()); - println!("{key:?}:\n{}", path_to_path_data(&edge.segments, 0.001)); + // eprintln!("{}", edge.format_path()); + eprintln!("{key:?}:\n{}", path_to_path_data(&edge.segments, 0.001)); } #[cfg(feature = "logging")] for vertex in minor_graph.vertices.values() { - println!("{:?}", vertex); + eprintln!("{:?}", vertex); } sort_outgoing_edges_by_angle(&mut minor_graph); #[cfg(feature = "logging")] for vertex in minor_graph.vertices.values() { - println!("{:?}", vertex); + eprintln!("{:?}", vertex); } for (edge_key, edge) in &minor_graph.edges { @@ -1256,9 +1306,9 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let DualGraph { edges, vertices, .. } = &dual_graph; #[cfg(feature = "logging")] - println!("Dual Graph:"); + eprintln!("Dual Graph:"); #[cfg(feature = "logging")] - println!("{}", dual_graph_to_dot(&dual_graph.components, edges)); + eprintln!("{}", dual_graph_to_dot(&dual_graph.components, edges)); let mut flags = HashMap::new(); flag_faces(&nesting_trees, a_fill_rule, b_fill_rule, edges, vertices, &mut flags); @@ -1327,7 +1377,7 @@ mod tests { let minor_graph = compute_minor(&major_graph); // Print minor graph state - // println!("Minor Graph:"); + // eprintln!("Minor Graph:"); print_minor_graph_state(&minor_graph); // Assertions @@ -1355,19 +1405,19 @@ mod tests { } fn print_minor_graph_state(graph: &MinorGraph) { - println!(" Vertices: {}", graph.vertices.len()); - println!(" Edges: {}", graph.edges.len()); - println!(" Cycles: {}", graph.cycles.len()); + eprintln!(" Vertices: {}", graph.vertices.len()); + eprintln!(" Edges: {}", graph.edges.len()); + eprintln!(" Cycles: {}", graph.cycles.len()); for (vertex_key, vertex) in &graph.vertices { - println!(" Vertex {:?}: {} outgoing edges", vertex_key, vertex.outgoing_edges.len()); + eprintln!(" Vertex {:?}: {} outgoing edges", vertex_key, vertex.outgoing_edges.len()); } for (edge_key, edge) in &graph.edges { - println!(" Edge {:?}:", edge_key); - println!(" Parent: {}", edge.parent); - println!(" Twin: {:?}", edge.twin); - println!(" Incident vertices: {:?}", edge.incident_vertices); + eprintln!(" Edge {:?}:", edge_key); + eprintln!(" Parent: {}", edge.parent); + eprintln!(" Twin: {:?}", edge.twin); + eprintln!(" Incident vertices: {:?}", edge.incident_vertices); } } @@ -1380,7 +1430,7 @@ mod tests { let mut minor_graph = compute_minor(&major_graph); // Print initial state - println!("Initial Minor Graph:"); + eprintln!("Initial Minor Graph:"); print_minor_graph_state(&minor_graph); // Store initial edge order @@ -1390,7 +1440,7 @@ mod tests { sort_outgoing_edges_by_angle(&mut minor_graph); // Print final state - println!("\nAfter sort_outgoing_edges_by_angle:"); + eprintln!("\nAfter sort_outgoing_edges_by_angle:"); print_minor_graph_state(&minor_graph); // Assertions @@ -1444,12 +1494,12 @@ mod tests { let point = DVec2::new(37.99, 24.0); - println!("Starting test with segment: {:?}", orig_seg); - println!("Test point: {:?}", point); + eprintln!("Starting test with segment: {:?}", orig_seg); + eprintln!("Test point: {:?}", point); let count = path_segment_horizontal_ray_intersection_count(&orig_seg, point); - println!("Final intersection count: {}", count); + eprintln!("Final intersection count: {}", count); let expected_count = 1; assert_eq!(count, expected_count, "Intersection count mismatch"); diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index acd71095aeb..c8ad98bd8a6 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -17,6 +17,53 @@ pub enum PathSegment { Arc(Vector, f64, f64, f64, bool, bool, Vector), } +impl PathSegment { + pub fn start_angle(&self) -> f64 { + let angle = match *self { + PathSegment::Line(start, end) => (end - start).angle_to(DVec2::X), + PathSegment::Cubic(start, control1, _, _) => (control1 - start).angle_to(DVec2::X), + PathSegment::Quadratic(start, control, _) => (control - start).angle_to(DVec2::X), + PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_angle(), + }; + use std::f64::consts::TAU; + (angle + TAU) % TAU + } + + pub fn start_curvature(&self) -> f64 { + match *self { + PathSegment::Line(_, _) => 0.0, + PathSegment::Cubic(start, control1, control2, _) => { + let a = control1 - start; + let a = 3. * a; + let b = start - 2.0 * control1 + control2; + let b = 6. * b; + let numerator = a.x * b.y - a.y * b.x; + let denominator = a.length_squared() * a.length(); + // dbg!(a, b, numerator, denominator); + if denominator == 0.0 { + 0.0 + } else { + numerator / denominator + } + } + PathSegment::Quadratic(start, control, end) => { + // first derivatiave + let a = 2. * (control - start); + // second derivatiave + let b = 2. * (start - 2.0 * control + end); + let numerator = a.x * b.y - a.y * b.x; + let denominator = a.length_squared() * a.length(); + if denominator == 0.0 { + 0.0 + } else { + numerator / denominator + } + } + PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_curvature(), + } + } +} + pub struct PathArcSegmentCenterParametrization { center: Vector, theta1: f64, diff --git a/libraries/path-bool/src/visual_tests.rs b/libraries/path-bool/src/visual_tests.rs index 620e84603e7..3bebb92a85f 100644 --- a/libraries/path-bool/src/visual_tests.rs +++ b/libraries/path-bool/src/visual_tests.rs @@ -135,7 +135,10 @@ fn visual_tests() { // Check the number of paths let result_path_count = result.len(); let ground_truth_path_count = ground_truth_svg.matches(" DynamicImage { let opts = Options::default(); let tree = Tree::from_str(svg_code, &opts).unwrap(); - let pixmap_size = tree.size.to_screen_size(); - let (width, height) = (pixmap_size.width(), pixmap_size.height()); + let pixmap_size = tree.size(); + let (width, height) = (pixmap_size.width() as u32, pixmap_size.height() as u32); let mut pixmap = resvg::tiny_skia::Pixmap::new(width, height).unwrap(); - render(&tree, resvg::usvg::FitTo::Original, Transform::default(), pixmap.as_mut()); + let mut pixmap_mut = pixmap.as_mut(); + render(&tree, Transform::default(), &mut pixmap_mut); DynamicImage::ImageRgba8(RgbaImage::from_raw(width, height, pixmap.data().to_vec()).unwrap()) } From cd6f45e8a4d77cec16995d9057aec489090a6b76 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 13 Sep 2024 17:38:19 +0200 Subject: [PATCH 09/39] Use curvature based sorting --- libraries/path-bool/src/path_boolean.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index b394558ecf6..a4d25ed33a7 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -129,7 +129,7 @@ fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { let curvature_a = a.start_curvature(); let curvature_b = b.start_curvature(); dbg!(curvature_a, curvature_b); - curvature_b.partial_cmp(&curvature_a).unwrap_or(Ordering::Equal) + curvature_a.partial_cmp(&curvature_b).unwrap_or(Ordering::Equal) } Some(ordering) => ordering, None => Ordering::Equal, // Handle NaN cases @@ -659,9 +659,14 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { .collect(); vertex.outgoing_edges.sort_by(|&a, &b| { // TODO(@TrueDoctor): Make more robust. The js version seems to sort the data slightly differently when the angles are reallly close. In that case put the edge wich was discovered later first. - (get_incidence_angle(&graph.edges[a]) - (a.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.) + let new = graph.edges[a].partial_cmp(&graph.edges[b]).unwrap(); + let old = (get_incidence_angle(&graph.edges[a]) - (a.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.) .partial_cmp(&(get_incidence_angle(&graph.edges[b]) - (b.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.)) - .unwrap_or(b.cmp(&a)) + .unwrap_or(b.cmp(&a)); + if new != old { + dbg!(new, old, a, b); + } + new }); let edges: Vec<_> = vertex .outgoing_edges @@ -669,6 +674,8 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { .map(|key| (*key, &graph.edges[*key])) .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), get_incidence_angle(edge))) .collect(); + #[cfg(feature = "logging")] + dbg!(edges); } } } @@ -837,9 +844,10 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { for (vertex_key, vertex) in &dual_vertices { eprintln!("\n\n#{:?}", vertex_key.0); let polygon = face_to_polygon(vertex, &dual_edges); - for point in polygon { + for point in polygon.iter() { eprintln!("{}, {}", point.x, point.y); } + eprintln!("{}, {}", polygon[0].x, polygon[0].y); } for &start_vertex_key in &new_vertices { @@ -1356,12 +1364,10 @@ mod tests { (PathSegment::Arc(DVec2::new(20.0, 39.0), 19.0, 19.0, 0.0, false, true, DVec2::new(1.0, 20.0)), 1), (PathSegment::Arc(DVec2::new(1.0, 20.0), 19.0, 19.0, 0.0, false, true, DVec2::new(20.0, 1.0)), 1), (PathSegment::Arc(DVec2::new(20.0, 1.0), 19.0, 19.0, 0.0, false, true, DVec2::new(39.0, 20.0)), 1), - (PathSegment::Line(DVec2::new(39.0, 20.0), DVec2::new(39.0, 20.0)), 1), (PathSegment::Arc(DVec2::new(47.0, 28.0), 19.0, 19.0, 0.0, false, true, DVec2::new(28.0, 47.0)), 2), (PathSegment::Arc(DVec2::new(28.0, 47.0), 19.0, 19.0, 0.0, false, true, DVec2::new(9.0, 28.0)), 2), (PathSegment::Arc(DVec2::new(9.0, 28.0), 19.0, 19.0, 0.0, false, true, DVec2::new(28.0, 9.0)), 2), (PathSegment::Arc(DVec2::new(28.0, 9.0), 19.0, 19.0, 0.0, false, true, DVec2::new(47.0, 28.0)), 2), - (PathSegment::Line(DVec2::new(47.0, 28.0), DVec2::new(47.0, 28.0)), 2), ]; unsplit_edges } @@ -1459,7 +1465,7 @@ mod tests { // Check if angles are in ascending order for i in 1..angles.len() { - assert!(angles[i] >= angles[i - 1], "Edges for vertex {:?} are not sorted by angle", vertex_key); + assert!(angles[i] >= angles[i - 1], "Edges for vertex {:?} are not sorted by angle {} {}", vertex_key, angles[i], angles[i - 1]); } // Check that the set of edges is the same as before, just in different order @@ -1481,9 +1487,9 @@ mod tests { fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { let seg = &edge.segments[0]; // First segment is always the incident one in both fwd and bwd let (p0, p1) = if edge.direction_flag.forward() { - (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) + (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, 0.1)) } else { - (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) + (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - 0.1)) }; (p1.y - p0.y).atan2(p1.x - p0.x) } From eb6868c3f1915525001ab61300a938a9d99bd8db Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 13 Sep 2024 18:47:37 +0200 Subject: [PATCH 10/39] Convert linear cubic splines to line segments --- libraries/path-bool/src/path_boolean.rs | 83 +++++++++++++++++++------ 1 file changed, 65 insertions(+), 18 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index a4d25ed33a7..b1857d4be02 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1,3 +1,4 @@ +use glam::DVec2; use slotmap::{new_key_type, SlotMap}; new_key_type! { @@ -246,7 +247,18 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap impl Fn(&PathSegment) -> MajorGraphEdgeStage1 { - move |seg| (*seg, parent) + move |seg| match seg { + // Convert Line Segments expressed as cubic beziers to proper line segments + PathSegment::Cubic(start, _, _, end) => { + let direction = sample_path_segment_at(seg, 0.1); + if (end - start).angle_to(direction - start).abs().to_degrees() < EPS.param { + (PathSegment::Line(*start, *end), parent) + } else { + (*seg, parent) + } + } + seg => (*seg, parent), + } } fn split_at_self_intersections(edges: &mut Vec) { @@ -730,7 +742,7 @@ fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { winding } -fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> (i32, Vector) { +fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> Option { let polygon = face_to_polygon(face, edges); #[cfg(feature = "logging")] for point in &polygon { @@ -744,14 +756,47 @@ fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> f64 { + let polygon = face_to_polygon(face, edges); + if polygon.len() <= 4 { + return -1.; + } + + #[cfg(feature = "logging")] + eprintln!("vertex: {:?}", face); + #[cfg(feature = "logging")] + for point in &polygon { + eprintln!("{}, {}", point.x, point.y); + } + let mut area = 0.; + + for i in 0..polygon.len() { + let a = polygon[i]; + let b = polygon[(i + 1) % polygon.len()]; + area += a.x * b.y; + area -= b.x * a.y; + // let center = (a + b + c) / 3.; + // let winding = compute_point_winding(&polygon, center); + // if winding != 0 { + // return (winding, center); + // } + } + + #[cfg(feature = "logging")] + eprintln!("winding: {}", area); + area + + // panic!("No ear in polygon found."); } -fn compute_dual(minor_graph: &MinorGraph) -> Option { +fn compute_dual(minor_graph: &MinorGraph) -> Result { let mut new_vertices: Vec = Vec::new(); let mut minor_to_dual_edge: HashMap = HashMap::new(); let mut dual_edges = SlotMap::with_key(); @@ -883,10 +928,13 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { // eprintln!("{:?}", edge.incident_vertex); } - let outer_face_key = *component_vertices + let windings: Option> = component_vertices .iter() - .find(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0) - .expect("No outer face of a component found."); + .map(|face_key| compute_winding(&dual_vertices[*face_key], &dual_edges).map(|w| (face_key, w))) + .collect(); + let Some(windings) = windings else { + return Err(BooleanError::NoEarInPolygon); + }; #[cfg(feature = "logging")] if cfg!(feature = "logging") { @@ -903,15 +951,11 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { ); } - if component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count() > 1 { - return None; + if windings.iter().filter(|(_, winding)| winding < &0).count() != 1 { + return Err(BooleanError::MultipleOuterFaces); } + let outer_face_key = *windings.iter().find(|(&face_key, winding)| winding < &0).expect("No outer face of a component found.").0; // TODO: merge with previous iter - assert_eq!( - component_vertices.iter().filter(|&&face_key| compute_winding(&dual_vertices[face_key], &dual_edges).0 < 0).count(), - 1, - "Multiple outer faces found." - ); components.push(DualGraphComponent { vertices: component_vertices, @@ -920,7 +964,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Option { }); } - Some(DualGraph { + Ok(DualGraph { vertices: dual_vertices, edges: dual_edges, components, @@ -1250,6 +1294,7 @@ const OPERATION_PREDICATES: [fn(u8) -> bool; 6] = [ #[derive(Debug)] pub enum BooleanError { MultipleOuterFaces, + NoEarInPolygon, } pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Result, BooleanError> { @@ -1307,7 +1352,7 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill assert_eq!(twin.twin.unwrap(), edge_key, "Twin relationship should be symmetrical for edge {:?}", edge_key); } - let dual_graph = compute_dual(&minor_graph).ok_or(BooleanError::MultipleOuterFaces)?; + let dual_graph = compute_dual(&minor_graph)?; let nesting_trees = compute_nesting_tree(&dual_graph); @@ -1334,6 +1379,8 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill #[cfg(test)] mod tests { + use std::f64::consts::TAU; + use super::*; use glam::DVec2; // Assuming DVec2 is defined in your crate @@ -1491,7 +1538,7 @@ mod tests { } else { (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - 0.1)) }; - (p1.y - p0.y).atan2(p1.x - p0.x) + ((p1.y - p0.y).atan2(p1.x - p0.x) + TAU) % TAU } #[test] From 7d40e4ef942be6d3c809587a1c7cad945fce3b78 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 13 Sep 2024 19:50:10 +0200 Subject: [PATCH 11/39] Deduplicate reversed path segments --- .../src/intersection_path_segment.rs | 10 ++++-- libraries/path-bool/src/lib.rs | 15 +++++++++ libraries/path-bool/src/path_boolean.rs | 33 ++++++++++++------- 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 8cb6a8c6c30..520a10fd01a 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -7,7 +7,7 @@ use crate::epsilons::Epsilons; use crate::line_segment::{line_segment_intersection, line_segments_intersect}; use crate::line_segment_aabb::line_segment_aabb_intersect; use crate::math::lerp; -use crate::path_segment::{path_segment_bounding_box, split_segment_at, PathSegment}; +use crate::path_segment::{path_segment_bounding_box, sample_path_segment_at, split_segment_at, PathSegment}; use crate::vector::{vectors_equal, Vector}; #[derive(Clone)] @@ -58,7 +58,7 @@ fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &Intersection } pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { - match (*seg0, *seg1) { + let equal = match (*seg0, *seg1) { (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) && vectors_equal(p03, p13, point_epsilon) @@ -76,7 +76,13 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 vectors_equal(p01, p11, point_epsilon) } _ => false, + }; + let start = sample_path_segment_at(seg0, 0.); + let end = sample_path_segment_at(seg0, 1.); + if (start.abs_diff_eq((1418., 0.).into(), 0.01) || end.abs_diff_eq((1418., 0.).into(), 0.01)) && (start.abs_diff_eq((969., 0.).into(), 0.01) || end.abs_diff_eq((969., 0.).into(), 0.01)) { + eprintln!("equal: {}, {:?}, {:?}", equal, seg0, seg1); } + equal } pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoints: bool, eps: &Epsilons) -> Vec<[f64; 2]> { diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 73284cc6d03..c5c9989638e 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -123,6 +123,21 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_1() { + let a = path_from_path_data("M969.000000,0.000000C969.000000,0.000000 1110.066898,76.934393 1085.000000,181.000000 C1052.000000,318.000000 1199.180581,334.301571 1277.000000,319.000000 C1455.000000,284.000000 1586.999985,81.000000 1418.000000,0.000000 C1418.000000,0.000000 969.000000,0.000000 969.000000,0.000000 Z"); + let b = path_from_path_data( + "M763.000000,0.000000C763.000000,0.000000 1536.000000,0.000000 1536.000000,0.000000 C1536.000000,0.000000 1536.000000,254.000000 1536.000000,254.000000 C1536.000000,254.000000 1462.000000,93.000000 1271.000000,199.000000 C1149.163056,266.616314 976.413656,188.510842 908.000000,134.000000 C839.586344,79.489158 763.000000,0.000000 763.000000,0.000000 Z", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index b1857d4be02..db328d88f6b 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -246,18 +246,24 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap impl Fn(&PathSegment) -> MajorGraphEdgeStage1 { - move |seg| match seg { - // Convert Line Segments expressed as cubic beziers to proper line segments - PathSegment::Cubic(start, _, _, end) => { - let direction = sample_path_segment_at(seg, 0.1); - if (end - start).angle_to(direction - start).abs().to_degrees() < EPS.param { - (PathSegment::Line(*start, *end), parent) - } else { - (*seg, parent) +fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { + move |seg| { + if bounding_box_max_extent(&path_segment_bounding_box(seg)) < EPS.linear { + return None; + } + + match seg { + // Convert Line Segments expressed as cubic beziers to proper line segments + PathSegment::Cubic(start, _, _, end) => { + let direction = sample_path_segment_at(seg, 0.1); + if dbg!((end - start).angle_to(direction - start).abs()) < EPS.param { + Some((dbg!(PathSegment::Line(*start, *end)), parent)) + } else { + Some((*seg, parent)) + } } + seg => Some((*seg, parent)), } - seg => (*seg, parent), } } @@ -442,7 +448,10 @@ fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGra let vertex_pair_id = (start_vertex.min(end_vertex), start_vertex.max(end_vertex)); if let Some(existing_edges) = vertex_pair_id_to_edges.get(&vertex_pair_id) { - if let Some(existing_edge) = existing_edges.iter().find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point)) { + if let Some(existing_edge) = existing_edges + .iter() + .find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point) || segments_equal(&reverse_path_segment(seg), &other_seg.0, EPS.point)) + { *parents.entry(existing_edge.1).or_default() |= parent; *parents.entry(existing_edge.2).or_default() |= parent; continue; @@ -1298,7 +1307,7 @@ pub enum BooleanError { } pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Result, BooleanError> { - let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).collect(); + let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).flatten().collect(); split_at_self_intersections(&mut unsplit_edges); From 71ba9d43cba5cd7be2d760f0b733eddb69d70074 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 12:41:19 +0200 Subject: [PATCH 12/39] Fix epsilon for empty segments --- libraries/path-bool/src/path_boolean.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index db328d88f6b..2f35dc6bf17 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -248,7 +248,7 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap impl Fn(&PathSegment) -> Option { move |seg| { - if bounding_box_max_extent(&path_segment_bounding_box(seg)) < EPS.linear { + if bounding_box_max_extent(&path_segment_bounding_box(seg)) < f64::EPSILON { return None; } @@ -256,7 +256,7 @@ fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { let direction = sample_path_segment_at(seg, 0.1); - if dbg!((end - start).angle_to(direction - start).abs()) < EPS.param { + if (end - start).angle_to(direction - start).abs() < EPS.param { Some((dbg!(PathSegment::Line(*start, *end)), parent)) } else { Some((*seg, parent)) @@ -685,7 +685,7 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { .partial_cmp(&(get_incidence_angle(&graph.edges[b]) - (b.0.as_ffi() & 0xFFFFFF) as f64 / 1000000.)) .unwrap_or(b.cmp(&a)); if new != old { - dbg!(new, old, a, b); + // dbg!(new, old, a, b); } new }); From 5b7b848b2580c299adc4e179c7e4ada3aedcfdcf Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 14:14:56 +0200 Subject: [PATCH 13/39] Remove parameter based intersection pruning --- .../src/intersection_path_segment.rs | 4 +-- libraries/path-bool/src/lib.rs | 32 +++++++++++++++++++ libraries/path-bool/src/path_boolean.rs | 20 ++++++++---- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 520a10fd01a..546e634408f 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -124,8 +124,8 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin continue; // TODO: what to do? } - let is_linear0 = bounding_box_max_extent(&seg0.bounding_box).min((seg0.end_param - seg0.start_param).abs()) <= eps.linear; - let is_linear1 = bounding_box_max_extent(&seg1.bounding_box).min((seg1.end_param - seg1.start_param).abs()) <= eps.linear; + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; + let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; if is_linear0 && is_linear1 { let line_segment0 = path_segment_to_line_segment(&seg0.seg); diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index c5c9989638e..b263f7f2682 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -138,6 +138,38 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_2() { + let a = path_from_path_data("M0,340C161.737914,383.575765 107.564182,490.730587 273,476 C419,463 481.741198,514.692273 481.333333,768 C481.333333,768 -0,768 -0,768 C-0,768 0,340 0,340 Z "); + dbg!(&a); + let b = path_from_path_data( + "M458.370270,572.165771C428.525848,486.720093 368.618805,467.485992 273,476 C107.564178,490.730591 161.737915,383.575775 0,340 C0,340 0,689 0,689 C56,700 106.513901,779.342590 188,694.666687 C306.607422,571.416260 372.033966,552.205139 458.370270,572.165771 Z", + ); + dbg!(&b); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_3() { + let a = path_from_path_data("M889,0C889,0 889,21 898,46 C909.595887,78.210796 872.365858,104.085306 869,147 C865,198 915,237 933,273 C951,309 951.703704,335.407407 923,349 C898.996281,360.366922 881,367 902,394 C923,421 928.592593,431.407407 898,468 C912.888889,472.888889 929.333333,513.333333 896,523 C896,523 876,533.333333 886,572 C896.458810,612.440732 873.333333,657.777778 802.666667,656.444444 C738.670245,655.236965 689,643 655,636 C621,629 604,623 585,666 C566,709 564,768 564,768 C564,768 0,768 0,768 C0,768 0,0 0,0 C0,0 889,0 889,0 Z "); + let b = path_from_path_data( + "M552,768C552,768 993,768 993,768 C993,768 1068.918039,682.462471 1093,600 C1126,487 1007.352460,357.386071 957,324 C906.647540,290.613929 842,253 740,298 C638,343 491.342038,421.999263 491.342038,506.753005 C491.342038,641.999411 552,768 552,768 Z ", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 2f35dc6bf17..c6022123c56 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -200,13 +200,13 @@ struct NestingTree { fn major_graph_to_dot(graph: &MajorGraph) -> String { let mut dot = String::from("digraph {\n"); for (vertex_key, vertex) in &graph.vertices { - dot.push_str(&format!(" {:?} [label=\"{:.1},{:.1}\"]\n", (vertex_key.0.as_ffi() & 0xFF) - 1, vertex.point.x, vertex.point.y)); + dot.push_str(&format!(" {:?} [label=\"{:.1},{:.1}\"]\n", (vertex_key.0.as_ffi() & 0xFF), vertex.point.x, vertex.point.y)); } for (edge_key, edge) in &graph.edges { dot.push_str(&format!( " {:?} -> {:?}: {:0b}\n", - (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, - (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[0].0.as_ffi() & 0xFF), + (edge.incident_vertices[1].0.as_ffi() & 0xFF), edge.parent )); } @@ -220,8 +220,8 @@ fn minor_graph_to_dot(edges: &SlotMap) -> String { for edge in edges.values() { dot.push_str(&format!( " {:?} -> {:?}: {:0b}\n", - (edge.incident_vertices[0].0.as_ffi() & 0xFF) - 1, - (edge.incident_vertices[1].0.as_ffi() & 0xFF) - 1, + (edge.incident_vertices[0].0.as_ffi() & 0xFF), + (edge.incident_vertices[1].0.as_ffi() & 0xFF), edge.parent )); } @@ -237,8 +237,8 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap (Vec Result, BooleanError> { + eprintln!("converting to edges"); let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).flatten().collect(); + dbg!(unsplit_edges.len()); split_at_self_intersections(&mut unsplit_edges); + eprintln!("splitting"); let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + dbg!(split_edges.len()); let total_bounding_box = match total_bounding_box { Some(bb) => bb, None => return Ok(Vec::new()), // input geometry is empty }; + eprintln!("findig vertices"); let major_graph = find_vertices(&split_edges, total_bounding_box); #[cfg(feature = "logging")] From 24eecdf4c529323520cc8f44b559c1539b336e22 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 15:17:42 +0200 Subject: [PATCH 14/39] Add support for reversed paths --- libraries/path-bool/src/path_boolean.rs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index c6022123c56..f11c09dc7cd 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -129,7 +129,6 @@ fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { // If angles are equal (or very close), compare curvatures let curvature_a = a.start_curvature(); let curvature_b = b.start_curvature(); - dbg!(curvature_a, curvature_b); curvature_a.partial_cmp(&curvature_b).unwrap_or(Ordering::Equal) } Some(ordering) => ordering, @@ -257,7 +256,7 @@ fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { let direction = sample_path_segment_at(seg, 0.1); if (end - start).angle_to(direction - start).abs() < EPS.param { - Some((dbg!(PathSegment::Line(*start, *end)), parent)) + Some((PathSegment::Line(*start, *end), parent)) } else { Some((*seg, parent)) } @@ -323,7 +322,6 @@ fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec Result { .iter() .map(|face_key| compute_winding(&dual_vertices[*face_key], &dual_edges).map(|w| (face_key, w))) .collect(); - let Some(windings) = windings else { + let Some(mut windings) = windings else { return Err(BooleanError::NoEarInPolygon); }; @@ -961,10 +959,17 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { ); } - if windings.iter().filter(|(_, winding)| winding < &0).count() != 1 { + let mut count = windings.iter().filter(|(_, winding)| winding < &0).count(); + let mut reverse_winding = false; + // If the paths are reversed use positive winding as outer face + if windings.len() > 2 && count == windings.len() - 1 { + count = 1; + reverse_winding = true; + } + if count != 1 { return Err(BooleanError::MultipleOuterFaces); } - let outer_face_key = *windings.iter().find(|(&face_key, winding)| winding < &0).expect("No outer face of a component found.").0; + let outer_face_key = *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0; // TODO: merge with previous iter components.push(DualGraphComponent { @@ -1310,20 +1315,16 @@ pub enum BooleanError { pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Result, BooleanError> { eprintln!("converting to edges"); let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).flatten().collect(); - dbg!(unsplit_edges.len()); split_at_self_intersections(&mut unsplit_edges); - eprintln!("splitting"); let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); - dbg!(split_edges.len()); let total_bounding_box = match total_bounding_box { Some(bb) => bb, None => return Ok(Vec::new()), // input geometry is empty }; - eprintln!("findig vertices"); let major_graph = find_vertices(&split_edges, total_bounding_box); #[cfg(feature = "logging")] From 5fccfd964ece0030a356dcf5806c981713eedb76 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 16:15:07 +0200 Subject: [PATCH 15/39] Add benchmark infrastructure --- Cargo.lock | 1 + libraries/path-bool/Cargo.toml | 11 +++ libraries/path-bool/benches/painted_dreams.rs | 90 +++++++++++++++++++ .../src/intersection_path_segment.rs | 37 +++++--- libraries/path-bool/src/lib.rs | 2 - 5 files changed, 125 insertions(+), 16 deletions(-) create mode 100644 libraries/path-bool/benches/painted_dreams.rs diff --git a/Cargo.lock b/Cargo.lock index 573d21ffb87..6b8d50def6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4320,6 +4320,7 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" name = "path-bool" version = "0.1.0" dependencies = [ + "criterion", "glam", "glob", "image 0.24.9", diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml index caf85ca799b..340f5fe1b85 100644 --- a/libraries/path-bool/Cargo.toml +++ b/libraries/path-bool/Cargo.toml @@ -25,3 +25,14 @@ svg = "0.13" resvg = "0.42" image = "0.24" +# Required dependencies +criterion = { version = "0.5", features = ["html_reports"]} + +# Benchmarks +[[bench]] +name = "painted_dreams" +harness = false + +[[bench]] +name = "path_segment_intersection" +harness = false diff --git a/libraries/path-bool/benches/painted_dreams.rs b/libraries/path-bool/benches/painted_dreams.rs new file mode 100644 index 00000000000..5aa24f596c0 --- /dev/null +++ b/libraries/path-bool/benches/painted_dreams.rs @@ -0,0 +1,90 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use path_bool::*; + +pub fn criterion_benchmark(c: &mut Criterion) { + let path_a = path_from_path_data("M0,340C161.737914,383.575765 107.564182,490.730587 273,476 C419,463 481.741198,514.692273 481.333333,768 C481.333333,768 -0,768 -0,768 C-0,768 0,340 0,340 Z "); + let path_b = path_from_path_data( + "M458.370270,572.165771C428.525848,486.720093 368.618805,467.485992 273,476 C107.564178,490.730591 161.737915,383.575775 0,340 C0,340 0,689 0,689 C56,700 106.513901,779.342590 188,694.666687 C306.607422,571.416260 372.033966,552.205139 458.370270,572.165771 Z", + ); + c.bench_function("painted_dreams_diff", |b| { + b.iter(|| path_boolean(black_box(&path_a), FillRule::NonZero, black_box(&path_b), FillRule::NonZero, PathBooleanOperation::Difference)) + }); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); + +/* +[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg0 = Cubic( + DVec2( + 458.37027, + 572.165771, + ), + DVec2( + 428.525848, + 486.720093, + ), + DVec2( + 368.618805, + 467.485992, + ), + DVec2( + 273.0, + 476.0, + ), +) +[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg1 = Cubic( + DVec2( + 273.0, + 476.0, + ), + DVec2( + 419.0, + 463.0, + ), + DVec2( + 481.741198, + 514.692273, + ), + DVec2( + 481.333333, + 768.0, + ), +) +[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg0 = Cubic( + DVec2( + 273.0, + 476.0, + ), + DVec2( + 107.564178, + 490.730591, + ), + DVec2( + 161.737915, + 383.575775, + ), + DVec2( + 0.0, + 340.0, + ), +) +[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg1 = Cubic( + DVec2( + 0.0, + 340.0, + ), + DVec2( + 161.737914, + 383.575765, + ), + DVec2( + 107.564182, + 490.730587, + ), + DVec2( + 273.0, + 476.0, + ), +) +*/ diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 546e634408f..0ac5c004a77 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -58,7 +58,7 @@ fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &Intersection } pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { - let equal = match (*seg0, *seg1) { + match (*seg0, *seg1) { (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) && vectors_equal(p03, p13, point_epsilon) @@ -76,16 +76,12 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 vectors_equal(p01, p11, point_epsilon) } _ => false, - }; - let start = sample_path_segment_at(seg0, 0.); - let end = sample_path_segment_at(seg0, 1.); - if (start.abs_diff_eq((1418., 0.).into(), 0.01) || end.abs_diff_eq((1418., 0.).into(), 0.01)) && (start.abs_diff_eq((969., 0.).into(), 0.01) || end.abs_diff_eq((969., 0.).into(), 0.01)) { - eprintln!("equal: {}, {:?}, {:?}", equal, seg0, seg1); } - equal } pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoints: bool, eps: &Epsilons) -> Vec<[f64; 2]> { + eprintln!("intersecting:"); + dbg!(seg0, seg1); // dbg!(&seg0, &seg1, endpoints); if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { @@ -112,20 +108,23 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin bounding_box: path_segment_bounding_box(seg1), }, )]; + let mut next_pairs = Vec::new(); let mut params = Vec::new(); + let mut subdivided0 = Vec::new(); + let mut subdivided1 = Vec::new(); while !pairs.is_empty() { - let mut next_pairs = Vec::new(); + next_pairs.clear(); - for (seg0, seg1) in pairs { + for (seg0, seg1) in pairs.iter() { if segments_equal(&seg0.seg, &seg1.seg, eps.point) { // TODO: move this outside of this loop? continue; // TODO: what to do? } - let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear; - let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear; + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear || (seg1.end_param - seg1.start_param).abs() < eps.param; + let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear || (seg1.end_param - seg1.start_param).abs() < eps.param; if is_linear0 && is_linear1 { let line_segment0 = path_segment_to_line_segment(&seg0.seg); @@ -134,8 +133,18 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin params.push([lerp(seg0.start_param, seg0.end_param, st.0), lerp(seg1.start_param, seg1.end_param, st.1)]); } } else { - let subdivided0 = if is_linear0 { vec![seg0] } else { subdivide_intersection_segment(&seg0).to_vec() }; - let subdivided1 = if is_linear1 { vec![seg1] } else { subdivide_intersection_segment(&seg1).to_vec() }; + subdivided0.clear(); + subdivided1.clear(); + if is_linear0 { + subdivided0.push(seg0.clone()) + } else { + subdivided0.extend_from_slice(&subdivide_intersection_segment(seg0)) + }; + if is_linear1 { + subdivided1.push(seg1.clone()) + } else { + subdivided1.extend_from_slice(&subdivide_intersection_segment(seg1)) + }; for seg0 in &subdivided0 { for seg1 in &subdivided1 { @@ -147,7 +156,7 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin } } - pairs = next_pairs; + std::mem::swap(&mut pairs, &mut next_pairs); } if !endpoints { diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index b263f7f2682..c2f1a80ac4d 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -147,11 +147,9 @@ mod test { #[test] fn painted_dreams_2() { let a = path_from_path_data("M0,340C161.737914,383.575765 107.564182,490.730587 273,476 C419,463 481.741198,514.692273 481.333333,768 C481.333333,768 -0,768 -0,768 C-0,768 0,340 0,340 Z "); - dbg!(&a); let b = path_from_path_data( "M458.370270,572.165771C428.525848,486.720093 368.618805,467.485992 273,476 C107.564178,490.730591 161.737915,383.575775 0,340 C0,340 0,689 0,689 C56,700 106.513901,779.342590 188,694.666687 C306.607422,571.416260 372.033966,552.205139 458.370270,572.165771 Z", ); - dbg!(&b); let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); From 676c22f112e0a67dfb6dec20863f2f5381b7b886 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 16:46:52 +0200 Subject: [PATCH 16/39] Add intersection benchmark --- .../benches/path_segment_intersection.rs | 29 +++++++++++++ libraries/path-bool/src/aabb.rs | 1 + .../src/intersection_path_segment.rs | 41 ++++++++++++++++++- libraries/path-bool/src/lib.rs | 4 +- libraries/path-bool/src/line_segment.rs | 1 + libraries/path-bool/src/path_boolean.rs | 4 +- 6 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 libraries/path-bool/benches/path_segment_intersection.rs diff --git a/libraries/path-bool/benches/path_segment_intersection.rs b/libraries/path-bool/benches/path_segment_intersection.rs new file mode 100644 index 00000000000..f3809dd46f7 --- /dev/null +++ b/libraries/path-bool/benches/path_segment_intersection.rs @@ -0,0 +1,29 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use glam::DVec2; +use path_bool::*; + +pub fn criterion_benchmark(crit: &mut Criterion) { + crit.bench_function("intersect 1", |bench| bench.iter(|| path_segment_intersection(&a(), &b(), true, &EPS))); + crit.bench_function("intersect 2", |bench| bench.iter(|| path_segment_intersection(&c(), &d(), true, &EPS))); +} + +criterion_group!(benches, criterion_benchmark); +criterion_main!(benches); + +fn a() -> PathSegment { + PathSegment::Cubic( + DVec2::new(458.37027, 572.165771), + DVec2::new(428.525848, 486.720093), + DVec2::new(368.618805, 467.485992), + DVec2::new(273.0, 476.0), + ) +} +fn b() -> PathSegment { + PathSegment::Cubic(DVec2::new(273.0, 476.0), DVec2::new(419.0, 463.0), DVec2::new(481.741198, 514.692273), DVec2::new(481.333333, 768.0)) +} +fn c() -> PathSegment { + PathSegment::Cubic(DVec2::new(273.0, 476.0), DVec2::new(107.564178, 490.730591), DVec2::new(161.737915, 383.575775), DVec2::new(0.0, 340.0)) +} +fn d() -> PathSegment { + PathSegment::Cubic(DVec2::new(0.0, 340.0), DVec2::new(161.737914, 383.575765), DVec2::new(107.564182, 490.730587), DVec2::new(273.0, 476.0)) +} diff --git a/libraries/path-bool/src/aabb.rs b/libraries/path-bool/src/aabb.rs index 719c400575e..01d3f4682e8 100644 --- a/libraries/path-bool/src/aabb.rs +++ b/libraries/path-bool/src/aabb.rs @@ -45,6 +45,7 @@ pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AaBb { } } +#[inline(never)] pub fn bounding_box_max_extent(bounding_box: &AaBb) -> f64 { (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) } diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 0ac5c004a77..db3b61cc0a2 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -18,6 +18,7 @@ struct IntersectionSegment { bounding_box: AaBb, } +#[inline(never)] fn subdivide_intersection_segment(int_seg: &IntersectionSegment) -> [IntersectionSegment; 2] { let (seg0, seg1) = split_segment_at(&int_seg.seg, 0.5); let mid_param = (int_seg.start_param + int_seg.end_param) / 2.0; @@ -37,6 +38,7 @@ fn subdivide_intersection_segment(int_seg: &IntersectionSegment) -> [Intersectio ] } +#[inline(never)] fn path_segment_to_line_segment(seg: &PathSegment) -> [Vector; 2] { match seg { PathSegment::Line(start, end) => [*start, *end], @@ -46,6 +48,7 @@ fn path_segment_to_line_segment(seg: &PathSegment) -> [Vector; 2] { } } +#[inline(never)] fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &IntersectionSegment) -> bool { match (&seg0.seg, &seg1.seg) { (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => { @@ -57,6 +60,7 @@ fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &Intersection } } +#[inline(never)] pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { match (*seg0, *seg1) { (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), @@ -80,8 +84,6 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 } pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoints: bool, eps: &Epsilons) -> Vec<[f64; 2]> { - eprintln!("intersecting:"); - dbg!(seg0, seg1); // dbg!(&seg0, &seg1, endpoints); if let (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) = (seg0, seg1) { if let Some(st) = line_segment_intersection([*start0, *end0], [*start1, *end1], eps.param) { @@ -116,6 +118,7 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin while !pairs.is_empty() { next_pairs.clear(); + dbg!("checking pairs"); for (seg0, seg1) in pairs.iter() { if segments_equal(&seg0.seg, &seg1.seg, eps.point) { @@ -130,6 +133,7 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin let line_segment0 = path_segment_to_line_segment(&seg0.seg); let line_segment1 = path_segment_to_line_segment(&seg1.seg); if let Some(st) = line_segment_intersection(line_segment0, line_segment1, eps.param) { + dbg!("pushing param"); params.push([lerp(seg0.start_param, seg0.end_param, st.0), lerp(seg1.start_param, seg1.end_param, st.1)]); } } else { @@ -165,3 +169,36 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin params } + +#[cfg(test)] +mod test { + use super::*; + use glam::DVec2; + + #[test] + fn intersect_cubic_slow_first() { + path_segment_intersection(&a(), &b(), true, &crate::EPS); + } + #[test] + fn intersect_cubic_slow_second() { + path_segment_intersection(&c(), &d(), true, &crate::EPS); + } + + fn a() -> PathSegment { + PathSegment::Cubic( + DVec2::new(458.37027, 572.165771), + DVec2::new(428.525848, 486.720093), + DVec2::new(368.618805, 467.485992), + DVec2::new(273.0, 476.0), + ) + } + fn b() -> PathSegment { + PathSegment::Cubic(DVec2::new(273.0, 476.0), DVec2::new(419.0, 463.0), DVec2::new(481.741198, 514.692273), DVec2::new(481.333333, 768.0)) + } + fn c() -> PathSegment { + PathSegment::Cubic(DVec2::new(273.0, 476.0), DVec2::new(107.564178, 490.730591), DVec2::new(161.737915, 383.575775), DVec2::new(0.0, 340.0)) + } + fn d() -> PathSegment { + PathSegment::Cubic(DVec2::new(0.0, 340.0), DVec2::new(161.737914, 383.575765), DVec2::new(107.564182, 490.730587), DVec2::new(273.0, 476.0)) + } +} diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index c2f1a80ac4d..351f70f62e7 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -15,8 +15,10 @@ mod vector; #[cfg(test)] mod visual_tests; -pub use path_boolean::{path_boolean, FillRule, PathBooleanOperation}; +pub use intersection_path_segment::path_segment_intersection; +pub use path_boolean::{path_boolean, FillRule, PathBooleanOperation, EPS}; pub use path_data::{path_from_path_data, path_to_path_data}; +pub use path_segment::PathSegment; #[cfg(test)] mod test { diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/line_segment.rs index d3c7603ec5d..cece159aa0c 100644 --- a/libraries/path-bool/src/line_segment.rs +++ b/libraries/path-bool/src/line_segment.rs @@ -8,6 +8,7 @@ pub type LineSegment = [Vector; 2]; const COLLINEAR_EPS: f64 = f64::EPSILON * 64.0; +#[inline(never)] pub fn line_segment_intersection([p1, p2]: LineSegment, [p3, p4]: LineSegment, eps: f64) -> Option<(f64, f64)> { // https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index f11c09dc7cd..1febec71184 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -44,7 +44,7 @@ pub enum FillRule { const INTERSECTION_TREE_DEPTH: usize = 8; const POINT_TREE_DEPTH: usize = 8; -const EPS: Epsilons = Epsilons { +pub const EPS: Epsilons = Epsilons { point: 1e-6, linear: 1e-4, param: 1e-8, @@ -255,7 +255,7 @@ fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { let direction = sample_path_segment_at(seg, 0.1); - if (end - start).angle_to(direction - start).abs() < EPS.param { + if (*end - *start).angle_to(direction - *start).abs() < EPS.param { Some((PathSegment::Line(*start, *end), parent)) } else { Some((*seg, parent)) From 3f0a282afceffc07d449210a7945a3cac833027c Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 14 Sep 2024 21:19:30 +0200 Subject: [PATCH 17/39] Add recursion bound --- .../path-bool/src/intersection_path_segment.rs | 15 ++++++++++++--- libraries/path-bool/src/path_boolean.rs | 1 - 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index db3b61cc0a2..33749b536b7 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -116,9 +116,15 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin let mut subdivided0 = Vec::new(); let mut subdivided1 = Vec::new(); + // check if start and end points are on the other bezier curves. If so, add as intersection. + while !pairs.is_empty() { next_pairs.clear(); - dbg!("checking pairs"); + // dbg!("checking pairs"); + + if pairs.len() > 1000 { + return vec![]; + } for (seg0, seg1) in pairs.iter() { if segments_equal(&seg0.seg, &seg1.seg, eps.point) { @@ -126,14 +132,17 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin continue; // TODO: what to do? } - let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear || (seg1.end_param - seg1.start_param).abs() < eps.param; + let diff1 = (seg0.start_param - seg0.end_param).abs(); + let diff2 = (seg1.start_param - seg1.end_param).abs(); + // dbg!(diff1.min(diff2)); + let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear || (seg0.end_param - seg0.start_param).abs() < eps.param; let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear || (seg1.end_param - seg1.start_param).abs() < eps.param; if is_linear0 && is_linear1 { let line_segment0 = path_segment_to_line_segment(&seg0.seg); let line_segment1 = path_segment_to_line_segment(&seg1.seg); if let Some(st) = line_segment_intersection(line_segment0, line_segment1, eps.param) { - dbg!("pushing param"); + // dbg!("pushing param"); params.push([lerp(seg0.start_param, seg0.end_param, st.0), lerp(seg1.start_param, seg1.end_param, st.1)]); } } else { diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 1febec71184..16403928d12 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1313,7 +1313,6 @@ pub enum BooleanError { } pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: FillRule, op: PathBooleanOperation) -> Result, BooleanError> { - eprintln!("converting to edges"); let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).flatten().collect(); split_at_self_intersections(&mut unsplit_edges); From 5f18b42082721ab6898f145b521d84ac523563e3 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 16 Sep 2024 11:32:13 +0200 Subject: [PATCH 18/39] Implement support for overlapping path segments --- .../src/intersection_path_segment.rs | 100 +++++++++++++++++- libraries/path-bool/src/lib.rs | 32 +++++- libraries/path-bool/src/line_segment.rs | 15 ++- libraries/path-bool/src/path_boolean.rs | 40 ++++--- 4 files changed, 161 insertions(+), 26 deletions(-) diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 33749b536b7..6d61fdce7b0 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -7,7 +7,7 @@ use crate::epsilons::Epsilons; use crate::line_segment::{line_segment_intersection, line_segments_intersect}; use crate::line_segment_aabb::line_segment_aabb_intersect; use crate::math::lerp; -use crate::path_segment::{path_segment_bounding_box, sample_path_segment_at, split_segment_at, PathSegment}; +use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, sample_path_segment_at, split_segment_at, PathSegment}; use crate::vector::{vectors_equal, Vector}; #[derive(Clone)] @@ -65,7 +65,17 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 match (*seg0, *seg1) { (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { - vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) && vectors_equal(p03, p13, point_epsilon) + let start_and_end_equal = vectors_equal(p00, p10, point_epsilon) && vectors_equal(p03, p13, point_epsilon); + + let parameter_equal = vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon); + let direction1 = sample_path_segment_at(seg0, 0.1); + let direction2 = sample_path_segment_at(seg1, 0.1); + let angles_equal = (direction1 - p00).angle_to(direction2 - p00).abs() < point_epsilon * 4.; + if angles_equal { + eprintln!("deduplicating {:?} {:?} because the angles are equal", seg0, seg1); + } + + start_and_end_equal && (parameter_equal || angles_equal) } (PathSegment::Quadratic(p00, p01, p02), PathSegment::Quadratic(p10, p11, p12)) => { vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) @@ -123,6 +133,8 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin // dbg!("checking pairs"); if pairs.len() > 1000 { + // TODO: check for intersections of the start/end points. If the two lines overlap, return split points for the start/end points. Use a binary search to check where the points are on the line. + return dbg!(calculate_overlap_intersections(seg0, seg1, eps)); return vec![]; } @@ -179,6 +191,90 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin params } +fn calculate_overlap_intersections(seg0: &PathSegment, seg1: &PathSegment, eps: &Epsilons) -> Vec<[f64; 2]> { + let start0 = get_start_point(seg0); + let end0 = get_end_point(seg0); + let start1 = get_start_point(seg1); + let end1 = get_end_point(seg1); + + let mut intersections = Vec::new(); + + // Check start0 against seg1 + if let Some(t1) = find_point_on_segment(seg1, start0, eps) { + intersections.push([0.0, t1]); + } + + // Check end0 against seg1 + if let Some(t1) = find_point_on_segment(seg1, end0, eps) { + intersections.push([1.0, t1]); + } + + // Check start1 against seg0 + if let Some(t0) = find_point_on_segment(seg0, start1, eps) { + intersections.push([t0, 0.0]); + } + + // Check end1 against seg0 + if let Some(t0) = find_point_on_segment(seg0, end1, eps) { + intersections.push([t0, 1.0]); + } + + // Remove duplicates and sort intersections + intersections.sort_unstable_by(|a, b| a[0].partial_cmp(&b[0]).unwrap()); + intersections.dedup_by(|a, b| vectors_equal(Vector::new(a[0], a[1]), Vector::new(b[0], b[1]), eps.param)); + + // Handle special cases + if intersections.is_empty() { + // Check if segments are identical + if vectors_equal(start0, start1, eps.point) && vectors_equal(end0, end1, eps.point) { + return vec![[0.0, 0.0], [1.0, 1.0]]; + } + } else if intersections.len() > 2 { + // Keep only the first and last intersection points + intersections = vec![intersections[0], intersections[intersections.len() - 1]]; + } + + intersections +} + +fn find_point_on_segment(seg: &PathSegment, point: Vector, eps: &Epsilons) -> Option { + let start = 0.0; + let end = 1.0; + let mut t = 0.5; + + for _ in 0..32 { + // Limit iterations to prevent infinite loops + let current_point = sample_path_segment_at(seg, t); + + if vectors_equal(current_point, point, eps.point) { + return Some(t); + } + + let start_point = sample_path_segment_at(seg, start); + let end_point = sample_path_segment_at(seg, end); + + let dist_start = (point - start_point).length_squared(); + let dist_end = (point - end_point).length_squared(); + let dist_current = (point - current_point).length_squared(); + + if dist_current < dist_start && dist_current < dist_end { + return Some(t); + } + + if dist_start < dist_end { + t = (start + t) / 2.0; + } else { + t = (t + end) / 2.0; + } + + if (end - start) < eps.param { + break; + } + } + + None +} + #[cfg(test)] mod test { use super::*; diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 351f70f62e7..4c79b8afac7 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -153,7 +153,7 @@ mod test { "M458.370270,572.165771C428.525848,486.720093 368.618805,467.485992 273,476 C107.564178,490.730591 161.737915,383.575775 0,340 C0,340 0,689 0,689 C56,700 106.513901,779.342590 188,694.666687 C306.607422,571.416260 372.033966,552.205139 458.370270,572.165771 Z", ); - let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); @@ -170,6 +170,36 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_4() { + let a = path_from_path_data("M458.370270,572.165771C372.033966,552.205139 306.607422,571.416260 188.000000,694.666687 C106.513901,779.342590 56.000000,700.000000 0.000000,689.000000 C0.000000,689.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 481.333344,768.000000 481.333344,768.000000 C481.474091,680.589417 474.095154,617.186768 458.370270,572.165771 Z "); + let b = path_from_path_data( + "M364.000000,768.000000C272.000000,686.000000 294.333333,468.666667 173.333333,506.666667 C110.156241,526.507407 0.000000,608.000000 0.000000,608.000000 L -0.000000,768.000000 L 364.000000,768.000000 Z", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_5() { + let a = path_from_path_data("M889.000000,0.000000C889.000000,0.000000 889.000000,21.000000 898.000000,46.000000 C909.595887,78.210796 872.365858,104.085306 869.000000,147.000000 C865.000000,198.000000 915.000000,237.000000 933.000000,273.000000 C951.000000,309.000000 951.703704,335.407407 923.000000,349.000000 C898.996281,360.366922 881.000000,367.000000 902.000000,394.000000 C923.000000,421.000000 928.592593,431.407407 898.000000,468.000000 C912.888889,472.888889 929.333333,513.333333 896.000000,523.000000 C896.000000,523.000000 876.000000,533.333333 886.000000,572.000000 C896.458810,612.440732 873.333333,657.777778 802.666667,656.444444 C738.670245,655.236965 689.000000,643.000000 655.000000,636.000000 C621.000000,629.000000 604.000000,623.000000 585.000000,666.000000 C566.000000,709.000000 564.000000,768.000000 564.000000,768.000000 C564.000000,768.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 0.000000,0.000000 0.000000,0.000000 C0.000000,0.000000 889.000000,0.000000 889.000000,0.000000 Z"); + let b = path_from_path_data( + "M891.555556,569.382716C891.555556,569.382716 883.555556,577.777778 879.111111,595.851852 C874.666667,613.925926 857.185185,631.407407 830.814815,633.777778 C804.444444,636.148148 765.629630,637.925926 708.148148,616.296296 C650.666667,594.666667 560.666667,568.000000 468.000000,487.333333 C375.333333,406.666667 283.333333,354.666667 283.333333,354.666667 C332.000000,330.666667 373.407788,298.323579 468.479950,219.785706 C495.739209,197.267187 505.084065,165.580817 514.452332,146.721008 C525.711584,124.054345 577.519713,94.951389 589.958848,64.658436 C601.152263,37.399177 601.175694,0.000010 601.175694,0.000000 C601.175694,0.000000 0.000000,0.000000 0.000000,0.000000 C0.000000,0.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 891.555556,768.000000 891.555556,768.000000 C891.555556,768.000000 891.555556,569.382716 891.555556,569.382716 Z", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/line_segment.rs index cece159aa0c..7a76802e886 100644 --- a/libraries/path-bool/src/line_segment.rs +++ b/libraries/path-bool/src/line_segment.rs @@ -12,21 +12,18 @@ const COLLINEAR_EPS: f64 = f64::EPSILON * 64.0; pub fn line_segment_intersection([p1, p2]: LineSegment, [p3, p4]: LineSegment, eps: f64) -> Option<(f64, f64)> { // https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments - let a1 = p2.x - p1.x; - let b1 = p3.x - p4.x; - let c1 = p3.x - p1.x; - let a2 = p2.y - p1.y; - let b2 = p3.y - p4.y; - let c2 = p3.y - p1.y; + let a = p2 - p1; + let b = p3 - p4; + let c = p3 - p1; - let denom = a1 * b2 - a2 * b1; + let denom = a.x * b.y - a.y * b.x; if denom.abs() < COLLINEAR_EPS { return None; } - let s = (c1 * b2 - c2 * b1) / denom; - let t = (a1 * c2 - a2 * c1) / denom; + let s = (c.x * b.y - c.y * b.x) / denom; + let t = (a.x * c.y - a.y * c.x) / denom; if (-eps..=1.0 + eps).contains(&s) && (-eps..=1.0 + eps).contains(&t) { Some((s, t)) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 16403928d12..fdeadc83aa2 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -247,7 +247,7 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap impl Fn(&PathSegment) -> Option { move |seg| { - if bounding_box_max_extent(&path_segment_bounding_box(seg)) < f64::EPSILON { + if bounding_box_max_extent(&path_segment_bounding_box(seg)) < EPS.point { return None; } @@ -255,7 +255,7 @@ fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { let direction = sample_path_segment_at(seg, 0.1); - if (*end - *start).angle_to(direction - *start).abs() < EPS.param { + if (*end - *start).angle_to(direction - *start).abs() < EPS.param * 4. { Some((PathSegment::Line(*start, *end), parent)) } else { Some((*seg, parent)) @@ -752,10 +752,6 @@ fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { fn compute_winding(face: &DualGraphVertex, edges: &SlotMap) -> Option { let polygon = face_to_polygon(face, edges); - #[cfg(feature = "logging")] - for point in &polygon { - eprintln!("[{}, {}]", point.x, point.y); - } for i in 0..polygon.len() { let a = polygon[i]; @@ -824,7 +820,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { loop { #[cfg(feature = "logging")] - eprintln!("Processing edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Processing edge: {}", (edge_key.0.as_ffi() & 0xFF)); let twin = edge.twin.expect("Edge doesn't have a twin"); let twin_dual_key = minor_to_dual_edge.get(&twin).copied(); @@ -846,7 +842,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { edge_key = get_next_edge(edge_key, minor_graph); #[cfg(feature = "logging")] - eprintln!("Next edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Next edge: {}", (edge_key.0.as_ffi() & 0xFF)); edge = &minor_graph.edges[edge_key]; if edge.incident_vertices[0] == start_edge.incident_vertices[0] { @@ -940,10 +936,16 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { .iter() .map(|face_key| compute_winding(&dual_vertices[*face_key], &dual_edges).map(|w| (face_key, w))) .collect(); - let Some(mut windings) = windings else { + let Some(windings) = windings else { return Err(BooleanError::NoEarInPolygon); }; + let areas: Vec<_> = component_vertices + .iter() + .map(|face_key| (face_key, compute_signed_area(&dual_vertices[*face_key], &dual_edges))) + .collect(); + dbg!(&areas); + #[cfg(feature = "logging")] if cfg!(feature = "logging") { eprintln!( @@ -966,11 +968,13 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { count = 1; reverse_winding = true; } - if count != 1 { - return Err(BooleanError::MultipleOuterFaces); - } - let outer_face_key = *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0; - // TODO: merge with previous iter + let outer_face_key = if count != 1 { + // return Err(BooleanError::MultipleOuterFaces); + *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap().0 + } else { + *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0 + }; + dbg!(outer_face_key); components.push(DualGraphComponent { vertices: component_vertices, @@ -989,6 +993,8 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { fn get_next_edge(edge_key: MinorEdgeKey, graph: &MinorGraph) -> MinorEdgeKey { let edge = &graph.edges[edge_key]; let vertex = &graph.vertices[edge.incident_vertices[1]]; + #[cfg(feature = "logging")] + eprintln!("{edge_key:?}, twin: {:?}, {:?}", edge.twin, vertex.outgoing_edges); let index = vertex.outgoing_edges.iter().position(|&e| Some(edge_key) == graph.edges[e].twin).unwrap(); vertex.outgoing_edges[(index + 1) % vertex.outgoing_edges.len()] } @@ -1319,6 +1325,12 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let (split_edges, total_bounding_box) = split_at_intersections(&unsplit_edges); + #[cfg(feature = "logging")] + for (edge, _, _) in split_edges.iter() { + // eprintln!("{}", edge.format_path()); + eprintln!("{}", path_to_path_data(&vec![*edge], 0.001)); + } + let total_bounding_box = match total_bounding_box { Some(bb) => bb, None => return Ok(Vec::new()), // input geometry is empty From 61f760c676056ae53f1f3d03cacb5c9b34990c47 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 16 Sep 2024 11:56:14 +0200 Subject: [PATCH 19/39] Remove rouge prinln --- node-graph/graph-craft/src/document.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/node-graph/graph-craft/src/document.rs b/node-graph/graph-craft/src/document.rs index d18fc9219a2..61bfb4bfd3f 100644 --- a/node-graph/graph-craft/src/document.rs +++ b/node-graph/graph-craft/src/document.rs @@ -1126,7 +1126,6 @@ impl NodeNetwork { let export: &mut NodeInput = export; let previous_export = std::mem::replace(export, NodeInput::network(concrete!(()), 0)); - println!("export {:?}", previous_export); let (tagged_value, exposed) = match previous_export { NodeInput::Value { tagged_value, exposed } => (tagged_value, exposed), NodeInput::Reflection(reflect) => match reflect { From 27de2e0ef266128e8bd48c74a74d667e817dbea4 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 16 Sep 2024 13:15:55 +0200 Subject: [PATCH 20/39] Fix sorting for bezier segments with one control point at the start of the segment --- libraries/path-bool/src/path_boolean.rs | 15 ++++----------- libraries/path-bool/src/path_segment.rs | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index fdeadc83aa2..4c2aab477ae 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -24,6 +24,7 @@ use crate::quad_tree::QuadTree; use crate::vector::{vectors_equal, Vector}; use std::cmp::Ordering; use std::collections::{HashMap, HashSet, VecDeque}; +use std::f64::consts::TAU; #[derive(Debug, Clone, Copy)] pub enum PathBooleanOperation { @@ -114,11 +115,8 @@ impl MinorGraphEdge { fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { let angle_a = a.start_angle(); let angle_b = b.start_angle(); - use std::f64::consts::PI; // Normalize angles to [0, 2π) - let angle_a = (angle_a + 2.0 * PI) % (2.0 * PI); - let angle_b = (angle_b + 2.0 * PI) % (2.0 * PI); let angle_a = (angle_a * 1000.).round() / 1000.; let angle_b = (angle_b * 1000.).round() / 1000.; // dbg!(a, angle_a.to_degrees(), b, angle_b.to_degrees()); @@ -671,12 +669,6 @@ fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { for vertex in graph.vertices.values_mut() { if vertex.outgoing_edges.len() > 2 { - let edges: Vec<_> = vertex - .outgoing_edges - .iter() - .map(|key| (*key, &graph.edges[*key])) - .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), get_incidence_angle(edge))) - .collect(); vertex.outgoing_edges.sort_by(|&a, &b| { // TODO(@TrueDoctor): Make more robust. The js version seems to sort the data slightly differently when the angles are reallly close. In that case put the edge wich was discovered later first. let new = graph.edges[a].partial_cmp(&graph.edges[b]).unwrap(); @@ -692,7 +684,7 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { .outgoing_edges .iter() .map(|key| (*key, &graph.edges[*key])) - .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), get_incidence_angle(edge))) + .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), (dbg!(edge.start_segment()).start_angle()))) .collect(); #[cfg(feature = "logging")] dbg!(edges); @@ -808,7 +800,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { for (start_edge_key, start_edge) in &minor_graph.edges { #[cfg(feature = "logging")] - eprintln!("Processing start edge: {}", (start_edge_key.0.as_ffi() & 0xFF) - 1); + eprintln!("Processing start edge: {}", (start_edge_key.0.as_ffi() & 0xFF)); if minor_to_dual_edge.contains_key(&start_edge_key) { continue; } @@ -970,6 +962,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { } let outer_face_key = if count != 1 { // return Err(BooleanError::MultipleOuterFaces); + eprintln!("Found multiple outer faces: {areas:?}, falling back to area calculation"); *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap().0 } else { *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0 diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index c8ad98bd8a6..0a1221a776f 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -7,7 +7,8 @@ use std::f64::consts::{PI, TAU}; use crate::aabb::{bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AaBb}; use crate::math::{deg2rad, lerp, vector_angle}; -use crate::vector::Vector; +use crate::vector::{vectors_equal, Vector}; +use crate::EPS; #[derive(Clone, Copy, Debug, PartialEq)] pub enum PathSegment { @@ -21,8 +22,16 @@ impl PathSegment { pub fn start_angle(&self) -> f64 { let angle = match *self { PathSegment::Line(start, end) => (end - start).angle_to(DVec2::X), - PathSegment::Cubic(start, control1, _, _) => (control1 - start).angle_to(DVec2::X), - PathSegment::Quadratic(start, control, _) => (control - start).angle_to(DVec2::X), + PathSegment::Cubic(start, control1, control2, _) => { + let diff = control1 - start; + if vectors_equal(diff, DVec2::ZERO, EPS.point) { + (control2 - start).angle_to(DVec2::X) + } else { + diff.angle_to(DVec2::X) + } + } + // Apply same logic as for cubic bezier + PathSegment::Quadratic(start, control, _) => (control - start).to_angle(), PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_angle(), }; use std::f64::consts::TAU; From 4100a6f2464b549b8d451d24d8fade9bf450b9d9 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 16 Sep 2024 15:05:44 +0200 Subject: [PATCH 21/39] Cleanup log statements --- libraries/path-bool/src/intersection_path_segment.rs | 5 ++--- libraries/path-bool/src/path_boolean.rs | 10 +++++++++- libraries/path-bool/src/path_segment.rs | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 6d61fdce7b0..6836f84905f 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -72,7 +72,7 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 let direction2 = sample_path_segment_at(seg1, 0.1); let angles_equal = (direction1 - p00).angle_to(direction2 - p00).abs() < point_epsilon * 4.; if angles_equal { - eprintln!("deduplicating {:?} {:?} because the angles are equal", seg0, seg1); + // eprintln!("deduplicating {:?} {:?} because the angles are equal", seg0, seg1); } start_and_end_equal && (parameter_equal || angles_equal) @@ -134,8 +134,7 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin if pairs.len() > 1000 { // TODO: check for intersections of the start/end points. If the two lines overlap, return split points for the start/end points. Use a binary search to check where the points are on the line. - return dbg!(calculate_overlap_intersections(seg0, seg1, eps)); - return vec![]; + return calculate_overlap_intersections(seg0, seg1, eps); } for (seg0, seg1) in pairs.iter() { diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 4c2aab477ae..0896c0d2e3f 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -684,7 +684,7 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { .outgoing_edges .iter() .map(|key| (*key, &graph.edges[*key])) - .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), (dbg!(edge.start_segment()).start_angle()))) + .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), (edge.start_segment()).start_angle())) .collect(); #[cfg(feature = "logging")] dbg!(edges); @@ -936,6 +936,7 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { .iter() .map(|face_key| (face_key, compute_signed_area(&dual_vertices[*face_key], &dual_edges))) .collect(); + #[cfg(feature = "logging")] dbg!(&areas); #[cfg(feature = "logging")] @@ -962,11 +963,13 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { } let outer_face_key = if count != 1 { // return Err(BooleanError::MultipleOuterFaces); + #[cfg(feature = "logging")] eprintln!("Found multiple outer faces: {areas:?}, falling back to area calculation"); *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap().0 } else { *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0 }; + #[cfg(feature = "logging")] dbg!(outer_face_key); components.push(DualGraphComponent { @@ -1386,6 +1389,11 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let mut flags = HashMap::new(); flag_faces(&nesting_trees, a_fill_rule, b_fill_rule, edges, vertices, &mut flags); + #[cfg(feature = "logging")] + for (face, flag) in &flags { + eprintln!("{:?}: {:b}", face.0, flag); + } + let predicate = OPERATION_PREDICATES[op as usize]; match op { diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index 0a1221a776f..fdc8a5296a7 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -25,6 +25,7 @@ impl PathSegment { PathSegment::Cubic(start, control1, control2, _) => { let diff = control1 - start; if vectors_equal(diff, DVec2::ZERO, EPS.point) { + // if this diff were empty too, the segments would have been convertet to a line (control2 - start).angle_to(DVec2::X) } else { diff.angle_to(DVec2::X) From 4ac1f2d0851513b4a5af655b981546ad7577e688 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 16 Sep 2024 17:40:30 +0200 Subject: [PATCH 22/39] Directly translate graphite paths to Path segments --- demo-artwork/painted-dreams.graphite | 2 +- libraries/bezier-rs/src/bezier/core.rs | 13 +--- libraries/path-bool/src/lib.rs | 3 +- libraries/path-bool/src/path_boolean.rs | 4 +- libraries/path-bool/src/path_segment.rs | 16 +++++ node-graph/gstd/src/vector.rs | 89 +++++++++++++++++++------ 6 files changed, 94 insertions(+), 33 deletions(-) diff --git a/demo-artwork/painted-dreams.graphite b/demo-artwork/painted-dreams.graphite index bc8896fc690..5666a682244 100644 --- a/demo-artwork/painted-dreams.graphite +++ b/demo-artwork/painted-dreams.graphite @@ -1 +1 @@ -{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[4691860614575868200,[528.2962962962963,283.8518518518518]],[18118267825025549699,[642.0740740740741,0.0]],[17863574903157697896,[606.8148151308641,95.19407372365433]],[6379137305818664393,[625.4814814814813,0.0]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[15992617814592812350,[621.0370370370368,0.0]],[533731991408535384,[501.6296296296296,175.40740740740742]],[301778328144628917,[493.5149940383244,200.29629629629628]],[13357220652574593654,[574.2222222222222,108.44444444444449]],[6351696498298648253,[646.8148148148149,0.0]],[10625296323957562985,[473.4814814814815,272.5925925925926]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[3384102572540409881,18442321214082298093],[2035327810332855521,533731991408535384],[8661113083384527971,10625296323957562985],[3710133387837274291,15992617814592812350],[318560030360358929,17863574903157697896],[11346538709718766144,13357220652574593654],[10146665273368938971,6351696498298648253],[3303411878775644985,301778328144628917],[13662059715350867364,6379137305818664393],[12035095010819582754,18118267825025549699],[8462655819889292900,4691860614575868200]],"end_point":[[8462655819889292900,301778328144628917],[3303411878775644985,10625296323957562985],[3710133387837274291,6379137305818664393],[12035095010819582754,6351696498298648253],[10146665273368938971,17863574903157697896],[318560030360358929,4691860614575868200],[2035327810332855521,13357220652574593654],[11346538709718766144,15992617814592812350],[13662059715350867364,18442321214082298093],[3384102572540409881,18118267825025549699],[8661113083384527971,533731991408535384]],"handle_primary":[[8462655819889292900,[0.0,0.0]],[3303411878775644985,[0.0,0.0]],[13662059715350867364,[0.0,0.0]],[12035095010819582754,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[3384102572540409881,[0.0,0.0]],[318560030360358929,[-46.95465552079859,46.40007297527743]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[3710133387837274291,[0.0,0.0]],[10146665273368938971,[0.0,0.0]]],"handle_end":[[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[13662059715350867364,[68.68148181185177,-54.8859262904691]],[12035095010819582754,[0.0,0.0]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[3710133387837274291,[0.0,0.0]],[318560030360358929,[-97.48148148148152,-81.18518518518522]],[8462655819889292900,[-21.74426522093495,47.99999999999997]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[3384102572540409881,[0.5807410754567854,77.36888852918523]],[11346538709718766144,[1.1377781018271662,63.71555518874077]]],"stroke":[[10146665273368938971,0],[12035095010819582754,0],[318560030360358929,0],[8661113083384527971,0],[3710133387837274291,0],[13662059715350867364,0],[8462655819889292900,0],[11346538709718766144,0],[2035327810332855521,0],[3303411878775644985,0],[3384102572540409881,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}],[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}],[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[16590926169549948521,[869.0,147.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[11084016020553554647,[655.0,636.0]],[12817219955590128894,[933.0,273.0]],[15701538241214188894,[0.0,0.0]],[6029995238423674441,[898.0,46.0]],[9729762716079513741,[585.0,666.0]],[4659274885664969740,[896.0,523.0]],[12317789037775437786,[902.0,394.0]],[17520941196305861319,[889.0,0.0]],[17339925811006567497,[898.0,468.0]],[13279221198527484331,[564.0,768.0]],[4723170318056755559,[923.0,349.0]],[1541401134848201833,[886.0,572.0]],[7727030009292816503,[0.0,768.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[4806484166818510930,6029995238423674441],[3307452201570141575,7727030009292816503],[1248401493076165062,12317789037775437786],[9808624553037921371,12817219955590128894],[10137845066833192587,9729762716079513741],[3876401232874291775,15701538241214188894],[11569179934425192262,16590926169549948521],[15056691877609602335,4659274885664969740],[9730229894941201870,4723170318056755559],[16631919016540861133,17321098837874422287],[9314952320711038398,11084016020553554647],[862900208337901235,17520941196305861319],[14740183693208469558,13279221198527484331],[8919277736361106420,1541401134848201833],[8832757535144158913,17339925811006567497]],"end_point":[[862900208337901235,6029995238423674441],[9808624553037921371,4723170318056755559],[11569179934425192262,12817219955590128894],[8832757535144158913,4659274885664969740],[3307452201570141575,15701538241214188894],[9730229894941201870,12317789037775437786],[14740183693208469558,7727030009292816503],[8919277736361106420,17321098837874422287],[15056691877609602335,1541401134848201833],[10137845066833192587,13279221198527484331],[4806484166818510930,16590926169549948521],[9314952320711038398,9729762716079513741],[3876401232874291775,17520941196305861319],[16631919016540861133,11084016020553554647],[1248401493076165062,17339925811006567497]],"handle_primary":[[9730229894941201870,[-24.00371914417652,11.366922485048674]],[9314952320711038398,[-34.0,-7.0]],[3876401232874291775,[0.0,0.0]],[8919277736361106420,[10.458809984597837,40.44073194044492]],[14740183693208469558,[0.0,0.0]],[4806484166818510930,[11.595886737767424,32.210796493798]],[11569179934425192262,[-4.0,51.0]],[9808624553037921371,[18.0,36.0]],[862900208337901235,[0.0,0.0]],[3307452201570141575,[0.0,0.0]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[1248401493076165062,[21.0,27.0]],[10137845066833192587,[-19.0,43.0]],[15056691877609602335,[0.0,0.0]],[8832757535144158913,[14.888888888888914,4.8888888888888005]]],"handle_end":[[862900208337901235,[-9.000000000000114,-25.0]],[14740183693208469558,[0.0,0.0]],[9808624553037921371,[28.703703703703695,-13.592592592592496]],[9314952320711038398,[19.0,-43.0]],[10137845066833192587,[0.0,0.0]],[16631919016540861133,[34.0,7.0]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[9730229894941201870,[-21.0,-27.0]],[15056691877609602335,[-10.0,-38.66666666666663]],[11569179934425192262,[-18.0,-36.0]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[3307452201570141575,[0.0,0.0]],[3876401232874291775,[0.0,0.0]]],"stroke":[[16631919016540861133,0],[4806484166818510930,0],[862900208337901235,0],[9730229894941201870,0],[3307452201570141575,0],[9314952320711038398,0],[1248401493076165062,0],[9808624553037921371,0],[11569179934425192262,0],[3876401232874291775,0],[10137845066833192587,0],[8919277736361106420,0],[15056691877609602335,0],[8832757535144158913,0],[14740183693208469558,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}],[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9346093213164033195,[1211.0,0.0]],[3249248431686392864,[1536.0,95.0]],[9577388580635291078,[1536.0,0.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[1147165232046305110,9577388580635291078],[9585086796709645600,9346093213164033195],[13980191878100735848,3249248431686392864]],"end_point":[[1147165232046305110,9346093213164033195],[9585086796709645600,3249248431686392864],[13980191878100735848,9577388580635291078]],"handle_primary":[[9585086796709645600,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]],[1147165232046305110,[0.0,0.0]]],"handle_end":[[1147165232046305110,[0.0,0.0]],[9585086796709645600,[-281.0,-17.00000000000003]],[13980191878100735848,[0.0,0.0]]],"stroke":[[1147165232046305110,0],[9585086796709645600,0],[13980191878100735848,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18087203100637857224,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8024056141472336300,615797591512564389],"remove":[],"delta":[[8024056141472336300,[1199.703703703704,-13.037037037037038]],[615797591512564389,[1392.8888888888887,-13.037037037037038]]]},"segments":{"add":[8102915503612902542,3691917426521533819,5443069106382978903],"remove":[15219710962280166713,2],"start_point":[[8102915503612902542,2],[3691917426521533819,8024056141472336300],[5443069106382978903,615797591512564389]],"end_point":[[5443069106382978903,3],[3691917426521533819,615797591512564389],[8102915503612902542,8024056141472336300]],"handle_primary":[[3691917426521533819,null],[8102915503612902542,null],[5443069106382978903,null]],"handle_end":[[5443069106382978903,null],[8102915503612902542,null],[3691917426521533819,null]],"stroke":[[5443069106382978903,0],[8102915503612902542,0],[3691917426521533819,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":12004065064978143915,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[8048619563638005414,[944.0577392578124,302.0703430175781]],[3251241957527197760,[875.8001811251517,185.6784024477276]],[11100418327549747778,[910.880658436214,243.0946502057613]],[1078998931754662073,[942.0246913580248,264.2962962962963]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[12551435438068218604,1078998931754662073],[10795897848378052161,11100418327549747778],[3439025775805007707,8048619563638005414],[6165219920202055745,3251241957527197760]],"end_point":[[12551435438068218604,3251241957527197760],[3439025775805007707,1078998931754662073],[10795897848378052161,8048619563638005414],[6165219920202055745,11100418327549747778]],"handle_primary":[[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[10795897848378052161,[11.46027223334628,13.82427457744465]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]],[6165219920202055745,[0.0,0.0]]],"handle_end":[[3439025775805007707,[14.61728395061732,27.456790123456813]],[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[12551435438068218604,[23.33217876876199,5.204454965879364]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]]],"stroke":[[3439025775805007707,0],[10795897848378052161,0],[12551435438068218604,0],[6165219920202055745,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}],[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6468742191365679953,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[],"remove":[],"delta":[[3,[-0.1481481481481931,1.2345475561822152]]]},"segments":{"add":[],"remove":[],"start_point":[],"end_point":[],"handle_primary":[[2,[-27.982926733699912,20.685525022906972]],[3,[-80.59259259259258,83.55555555555577]]],"handle_end":[[3,[54.71604938271605,12.037037037036953]]],"stroke":[]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":false,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[1608608093193158603,[609.7777777777777,620.0]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[4481635366652149569,[684.8888888888889,395.55555555555554]],[4765910415851982345,[283.33331298828125,354.6666564941406]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[8024777209266880257,4481635366652149569],[11103925991989272298,4765910415851982345],[3983292299330016176,1608608093193158603],[3045825504718908919,4475009837548700636]],"end_point":[[3045825504718908919,4481635366652149569],[8024777209266880257,1608608093193158603],[11103925991989272298,4475009837548700636],[3983292299330016176,4765910415851982345]],"handle_primary":[[8024777209266880257,[11.111111111111086,62.22222222222217]],[3045825504718908919,[62.22222222222217,43.111111111111086]],[11103925991989272298,[0.0,0.0]],[3983292299330016176,[0.0,0.0]]],"handle_end":[[8024777209266880257,[34.66666666666674,-85.33333333333337]],[11103925991989272298,[-113.5844024581724,39.08097956276566]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]],[3983292299330016176,[0.0,0.0]]],"stroke":[[3045825504718908919,0],[8024777209266880257,0],[3983292299330016176,0],[11103925991989272298,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}],[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}]],"remove_g1_continuous":[[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[5496457317579994340,[929.3607681755832,198.40877914951983]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[10872099980755217048,[889.0,0.0]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[9658821733796680583,[920.5925925925926,208.0]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[425878374398720476,[898.633744855967,207.99999999999997]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[13961346931609713434,13049263474526562389],[11050813873332011119,5252668597335249558],[9187894839116405225,9658821733796680583],[13223251807271379465,9175973472325454282],[8058164935346100149,7125168137854779179],[6545223889678917273,14263506369487797530],[6443321953815072406,2409359561719399794],[5210886161307886529,425878374398720476],[16241193756011776206,10872099980755217048],[9745298522639115232,5496457317579994340]],"end_point":[[11050813873332011119,10872099980755217048],[8058164935346100149,9658821733796680583],[13961346931609713434,2409359561719399794],[16241193756011776206,13049263474526562389],[13223251807271379465,14263506369487797530],[9187894839116405225,425878374398720476],[6545223889678917273,5496457317579994340],[6443321953815072406,9175973472325454282],[5210886161307886529,5252668597335249558],[9745298522639115232,7125168137854779179]],"handle_primary":[[9745298522639115232,[0.0,0.0]],[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[6545223889678917273,[0.0,0.0]],[9187894839116405225,[-8.263374485596842,1.880201188843188]],[8058164935346100149,[0.0,0.0]],[16241193756011776206,[0.0,0.0]],[6443321953815072406,[-9.144953020396894,24.145964868041293]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]]],"handle_end":[[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[13961346931609713434,[10.984910836762538,-29.00411522633746]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[9745298522639115232,[7.703703703703695,-2.074074074074076]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]]],"stroke":[[5210886161307886529,0],[11050813873332011119,0],[13223251807271379465,0],[16241193756011776206,0],[6545223889678917273,0],[9187894839116405225,0],[13961346931609713434,0],[8058164935346100149,0],[6443321953815072406,0],[9745298522639115232,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}],[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}],[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[15695128662656633322,[825.6790123456792,509.4320987654323]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[2535476870476707501,[887.5061728395062,568.6913580246915]],[6781153531246981076,[872.6913580246915,513.7777777777779]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[3749627916562964805,[866.172839506173,558.2222222222224]],[12599396287665855262,[902.5185185185188,498.56790123456807]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[6369399239389505343,12599396287665855262],[3461110970422306113,8241402276734357681],[264894972572137143,2535476870476707501],[17761347836385237495,6164201091766276213],[14847678502054094837,10333377922713208038],[15700595221504820396,10786213048155734586],[14489254209548096966,15695128662656633322],[14515109677644612103,3749627916562964805],[3021925106447084698,6781153531246981076]],"end_point":[[14489254209548096966,8241402276734357681],[15700595221504820396,12599396287665855262],[264894972572137143,10786213048155734586],[14515109677644612103,2535476870476707501],[3461110970422306113,10333377922713208038],[14847678502054094837,3749627916562964805],[6369399239389505343,6164201091766276213],[17761347836385237495,6781153531246981076],[3021925106447084698,15695128662656633322]],"handle_primary":[[17761347836385237495,[0.0,0.0]],[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[264894972572137143,[0.0,0.0]],[15700595221504820396,[0.0,0.0]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[3461110970422306113,[0.38915905346209456,1.493515242756871]],[3021925106447084698,[-16.59259259259261,2.370370370370324]],[14515109677644612103,[8.888888888888914,0.0]]],"handle_end":[[264894972572137143,[3.753086419753003,37.1358024691358]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]],[14515109677644612103,[0.0,0.0]],[14847678502054094837,[-8.888888888888914,0.0]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[15700595221504820396,[7.1111111111111995,5.530864197530889]],[17761347836385237495,[16.59259259259261,-2.370370370370324]],[6369399239389505343,[0.0,0.0]]],"stroke":[[14847678502054094837,0],[264894972572137143,0],[3021925106447084698,0],[3461110970422306113,0],[6369399239389505343,0],[17761347836385237495,0],[14489254209548096966,0],[15700595221504820396,0],[14515109677644612103,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[13416153271806375161,[531.8518518518517,131.2592592592593]],[12390708657704154619,[596.6748971193416,72.42798353909465]],[6873550371723398444,[538.6666666666667,136.0]],[4609870404630548899,[589.432098765432,64.79012345679011]],[8055802412900565217,[480.4444444444445,219.7777777777778]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]],[177515045030371783,[604.2883706752018,0.0]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[2492294980235986276,[604.4434936307387,42.970116997735616]],[12909592102393222573,[607.8024691358027,0.0]],[16230687409600568539,[491.55555555555554,311.55555555555566]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[5057709998225566481,16939098306153440303,11060716078587457450,17843645051722826880,17799038492181728804],"start_point":[[5578827639764758986,1458337690478625792],[921651403153242564,4609870404630548899],[1705877195608053135,16230687409600568539],[15749222431214672690,2492294980235986276],[9361245670457788924,6873550371723398444],[4341232355541306629,12390708657704154619],[14294722277069184337,12448133448335459077],[2463526518527501592,8055802412900565217],[9825559201153691780,13416153271806375161],[12529947318087068663,177515045030371783],[3818841110886669992,7624137673235413199]],"end_point":[[2463526518527501592,6873550371723398444],[3818841110886669992,12448133448335459077],[9361245670457788924,12390708657704154619],[12529947318087068663,4609870404630548899],[14294722277069184337,2492294980235986276],[9825559201153691780,1458337690478625792],[15749222431214672690,12909592102393222573],[1705877195608053135,8055802412900565217],[4341232355541306629,7624137673235413199],[921651403153242564,13416153271806375161],[5578827639764758986,16230687409600568539]],"handle_primary":[[1705877195608053135,[0.0,0.0]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[3818841110886669992,[0.0,0.0]],[9825559201153691780,[-30.00610951685011,28.39287782239575]],[14294722277069184337,[-0.2633744855968416,28.576131687242796]],[12529947318087068663,[0.0,0.0]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[5578827639764758986,[-19.25925925925924,60.44444444444443]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[15749222431214672690,[3.877242131088792,-22.333682252383095]]],"handle_end":[[15749222431214672690,[0.0,0.0]],[921651403153242564,[27.555555555555657,-26.07407407407412]],[2463526518527501592,[-34.96296296296305,33.481481481481495]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[14294722277069184337,[0.0,0.0]],[5578827639764758986,[0.0,0.0]],[9361245670457788924,[-16.14969885498249,21.855925783742933]],[4341232355541306629,[0.0,0.0]],[3818841110886669992,[0.0,0.0]],[9825559201153691780,[6.194184133897295,-19.440208666385132]]],"stroke":[[1705877195608053135,0],[12529947318087068663,0],[14294722277069184337,0],[3818841110886669992,0],[2463526518527501592,0],[9825559201153691780,0],[15749222431214672690,0],[4341232355541306629,0],[9361245670457788924,0],[921651403153242564,0],[5578827639764758986,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}]],"remove_g1_continuous":[[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}],[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[7238075805746621699,[798.6831275720165,497.9094650205762]],[5021902985892894619,[857.679012345679,478.2880658436215]],[9603704700847490044,[821.037037037037,464.2962962962963]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[17629528758352690600,[892.148148148148,480.2962962962963]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[14935583009751134816,[914.9629629629628,418.3703703703703]],[5995306636877552,[912.8888888888888,479.7037037037037]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[5138872293174440313,[922.9629629629628,422.22222222222223]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[239843798079287870,2355002738045707979],[14571502160667941876,7008812441195504980],[7250062683967197158,5138872293174440313],[4499620435559196394,9014079831396927156],[9071432674597727163,7238075805746621699],[14131440324578863745,14935583009751134816],[7117413478945421556,5995306636877552],[7203043366367198812,9603704700847490044],[12687760936062936386,17629528758352690600],[7655921914272804429,5021902985892894619]],"end_point":[[14131440324578863745,9014079831396927156],[14571502160667941876,9603704700847490044],[4499620435559196394,7008812441195504980],[9071432674597727163,2355002738045707979],[239843798079287870,5021902985892894619],[7203043366367198812,7238075805746621699],[7117413478945421556,5138872293174440313],[12687760936062936386,5995306636877552],[7655921914272804429,17629528758352690600],[7250062683967197158,14935583009751134816]],"handle_primary":[[9071432674597727163,[4.345679012345499,-3.555555555555543]],[14571502160667941876,[-0.5925925925926094,0.0]],[14131440324578863745,[0.0,0.0]],[7117413478945421556,[0.0,0.0]],[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[7203043366367198812,[0.0,0.2962962962963047]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]],[7250062683967197158,[0.0,0.0]]],"handle_end":[[14131440324578863745,[2.962962962963047,-3.259259259259238]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]],[7250062683967197158,[0.0,0.0]],[4499620435559196394,[8.59259259259261,5.629629629629619]],[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[12687760936062936386,[0.0,0.0]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[239843798079287870,[-21.502976534539364,2.3372800581021456]],[7117413478945421556,[15.703703703703695,33.48148148148147]]],"stroke":[[7655921914272804429,0],[7250062683967197158,0],[14571502160667941876,0],[239843798079287870,0],[7203043366367198812,0],[12687760936062936386,0],[14131440324578863745,0],[7117413478945421556,0],[9071432674597727163,0],[4499620435559196394,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}],[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}]],"remove_g1_continuous":[[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}],[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[12075466065090700811,[877.0370370370372,136.5925925925926]],[9852238672814254137,[879.7947439326053,110.54094004739208]],[7115673652122600762,[646.5386352539062,343.99395751953125]],[266134622800431246,[525.7325506063205,282.1042056224195]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[10196443086284452827,3769008694104161528,13980530488817762548],"start_point":[[17255728395700231433,12075466065090700811],[3166693019207180063,7115673652122600762],[10242199012993595528,266134622800431246],[2159953159628520134,9852238672814254137]],"end_point":[[10242199012993595528,9852238672814254137],[3166693019207180063,266134622800431246],[17255728395700231433,7115673652122600762],[2159953159628520134,12075466065090700811]],"handle_primary":[[2159953159628520134,[0.0,0.0]],[10242199012993595528,[137.37856050479058,-43.88198340019727]],[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]]],"handle_end":[[3166693019207180063,[0.0,0.0]],[17255728395700231433,[165.46136474609386,67.5615980360243]],[10242199012993595528,[-15.794743932605344,36.71831921186718]],[2159953159628520134,[0.0,0.0]]],"stroke":[[10242199012993595528,0],[3166693019207180063,0],[17255728395700231433,0],[2159953159628520134,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}],[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}],[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[6057321578372831916,[708.148148148148,616.2962962962962]],[16686047298905200065,[283.3333333333333,354.66666666666663]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[87630150944518163,[879.1111111111111,595.8518518518517]],[16808246968731723098,[891.5555555555554,768.0]],[18307826411292029066,[601.1756940654021,9.999999747378752e-6]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[9969822516610975381,[0.0,0.0]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[16995054111951247369,[0.0,768.0]],[3124531241960914803,[589.9588477366256,64.65843621399176]],[16788403743390653241,[467.99999999999994,487.3333333333333]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[5227512358023446442,87630150944518163],[16224358815792062223,16808246968731723098],[9242150930423817167,15635903913637220842],[15885450050057549950,3124531241960914803],[9544743211426701912,6057321578372831916],[17410347049685436697,8212340198835025146],[12162371359208565273,16995054111951247369],[1662692131856898001,18307826411292029066],[178608879920007638,9969822516610975381],[14879480148926424885,8323145223085840944],[515539069333222772,16686047298905200065],[8823161072525575433,8652457572576966876],[14715945740984195653,16788403743390653241]],"end_point":[[12162371359208565273,16808246968731723098],[17410347049685436697,6057321578372831916],[14715945740984195653,16686047298905200065],[14879480148926424885,87630150944518163],[5227512358023446442,8212340198835025146],[9544743211426701912,16788403743390653241],[1662692131856898001,9969822516610975381],[515539069333222772,15635903913637220842],[15885450050057549950,18307826411292029066],[8823161072525575433,3124531241960914803],[16224358815792062223,8323145223085840944],[178608879920007638,16995054111951247369],[9242150930423817167,8652457572576966876]],"handle_primary":[[1662692131856898001,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14879480148926424885,[0.0,0.0]],[12162371359208565273,[0.0,0.0]],[8823161072525575433,[11.259252477575274,-22.666663275824646]],[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[178608879920007638,[0.0,0.0]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[16224358815792062223,[0.0,0.0]],[515539069333222772,[48.66666666666663,-23.999999999999943]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[15885450050057549950,[11.193415637860312,-27.25925925925926]]],"handle_end":[[17410347049685436697,[57.48148148148141,21.629629629629676]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[178608879920007638,[0.0,0.0]],[14715945740984195653,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[515539069333222772,[-95.07216232621772,78.5378732260062]],[15885450050057549950,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[16224358815792062223,[0.0,0.0]],[12162371359208565273,[0.0,0.0]],[5227512358023446442,[26.37037037037044,-2.3703703703704377]],[9544743211426701912,[92.66666666666656,80.66666666666669]]],"stroke":[[9544743211426701912,0],[1662692131856898001,0],[8823161072525575433,0],[12162371359208565273,0],[515539069333222772,0],[9242150930423817167,0],[5227512358023446442,0],[14879480148926424885,0],[15885450050057549950,0],[178608879920007638,0],[16224358815792062223,0],[17410347049685436697,0],[14715945740984195653,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[16608607268690234590,[0.0,340.0]],[13436129231170586617,[481.3333333333333,768.0]],[5992570223148766873,[-2.273736754432321e-13,768.0]],[17457877227823502997,[273.0,476.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[4274372337254864190,5992570223148766873],[13284808974014161135,16608607268690234590],[8776124420595946733,13436129231170586617],[5472571334856691465,17457877227823502997]],"end_point":[[13284808974014161135,17457877227823502997],[5472571334856691465,13436129231170586617],[8776124420595946733,5992570223148766873],[4274372337254864190,16608607268690234590]],"handle_primary":[[8776124420595946733,[0.0,0.0]],[4274372337254864190,[0.0,0.0]],[13284808974014161135,[161.73791370620617,43.57576470888159]],[5472571334856691465,[146.0,-13.0]]],"handle_end":[[13284808974014161135,[-165.43581782916667,14.730586519035386]],[8776124420595946733,[0.0,0.0]],[4274372337254864190,[0.0,0.0]],[5472571334856691465,[0.4078646547782227,-253.307727480567]]],"stroke":[[5472571334856691465,0],[8776124420595946733,0],[13284808974014161135,0],[4274372337254864190,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}],[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":6468742191365679953,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[1009888023123207923,16332448509429125699],"delta":[[7821224334582795476,[1093.0,600.0]],[3507505346656189771,[552.0,768.0000000000001]],[2195807584570698921,[993.0,767.9999999999999]],[4175610638601362388,[957.0,324.0]],[854708012647259796,[740.0,298.0]],[2904729023031858224,[491.3420376907663,506.7530051313737]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[546565283439891712,5710832026764395735],"start_point":[[17304574948462342226,4175610638601362388],[8570276641842028192,2195807584570698921],[6577640955869157325,854708012647259796],[4553965744616493549,3507505346656189771],[17183285389582020412,7821224334582795476],[13993263006398686359,2904729023031858224]],"end_point":[[6577640955869157325,4175610638601362388],[17183285389582020412,2195807584570698921],[8570276641842028192,3507505346656189771],[4553965744616493549,2904729023031858224],[17304574948462342226,7821224334582795476],[13993263006398686359,854708012647259796]],"handle_primary":[[17183285389582020412,[-24.08196064282073,82.4624712920831]],[6577640955869157325,[102.0,-45.0]],[4553965744616493549,[0.0,0.0]],[13993263006398686359,[0.0,-84.7537417270637]],[17304574948462342226,[50.35246044959922,33.38607084805801]],[8570276641842028192,[0.0,0.0]]],"handle_end":[[4553965744616493549,[0.0,135.2464055295568]],[17183285389582020412,[0.0,0.0]],[13993263006398686359,[-102.0,45.0]],[8570276641842028192,[0.0,0.0]],[17304574948462342226,[33.0,-113.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]]],"stroke":[[4553965744616493549,0],[6577640955869157325,0],[13993263006398686359,0],[17183285389582020412,0],[17304574948462342226,0],[8570276641842028192,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}],[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}]],"remove_g1_continuous":[[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}],[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}],[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[4648964341912884959,[324.66666666666646,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]],[2003133867055127539,[1011.111083984375,786.3993530273438]],[16569120368910754547,[-43.0,0.0]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[3433930674303663828,6602880736207868665],"start_point":[[7334532063810723038,16569120368910754547],[8214025514312603513,2003133867055127539],[13431612844608018700,13758328146055368475]],"end_point":[[8214025514312603513,4648964341912884959],[13431612844608018700,2003133867055127539],[7334532063810723038,13758328146055368475]],"handle_primary":[[7334532063810723038,null],[8214025514312603513,null],[9030015329489789075,[69.08057198853999,-80.19415805947563]],[13431612844608018700,null]],"handle_end":[[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[8214025514312603513,null],[9030015329489789075,[0.0,0.0]],[7334532063810723038,null],[13431612844608018700,null]],"stroke":[[7334532063810723038,0],[13431612844608018700,0],[8214025514312603513,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12004065064978143915,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[],"remove":[],"delta":[[7,[-4.444444444444445,0.0]]]},"segments":{"add":[],"remove":[],"start_point":[],"end_point":[],"handle_primary":[[8,[59.91830783420136,-46.277437940056075]]],"handle_end":[[8,[-65.77767718279807,-16.01762333622696]]],"stroke":[]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[7025422618543191491,[911.5555555555554,345.3333333333333]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[7639287212006638253,[862.8888888888888,349.3333333333333]],[3831533579307185652,[880.4444444444443,357.3333333333333]],[6952183320761642858,[933.9259259259262,324.3456790123457]],[10412162547161259027,[887.3333333333333,376.0]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[15117515618866904690,[819.1111111111109,354.44444444444434]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[10438163357339042361,10412162547161259027],[15286139376878919277,15117515618866904690],[379744301215040936,3831533579307185652],[11214998966879437330,2802617302192982616],[4069217348643062888,16937470333767479918],[10498175376126066982,13654185056786459919],[9330486019469919863,5269777039739103358],[1241631398419524272,7639287212006638253],[12854270992100552972,7025422618543191491],[15838384105575178137,15750781936547583892],[10426255560432238561,6952183320761642858]],"end_point":[[11214998966879437330,7639287212006638253],[15838384105575178137,7025422618543191491],[15286139376878919277,15750781936547583892],[10438163357339042361,5269777039739103358],[10426255560432238561,2802617302192982616],[379744301215040936,16937470333767479918],[4069217348643062888,10412162547161259027],[10498175376126066982,6952183320761642858],[9330486019469919863,13654185056786459919],[12854270992100552972,3831533579307185652],[1241631398419524272,15117515618866904690]],"handle_primary":[[15838384105575178137,[22.222222222222285,5.555555555555543]],[12854270992100552972,[-0.4444444444443434,0.0]],[379744301215040936,[-0.2222222222221717,0.0]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[4069217348643062888,[0.0,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[10498175376126066982,[0.0,0.0]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]]],"handle_end":[[11214998966879437330,[17.111111111111086,-12.888888888888856]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]],[379744301215040936,[0.0,0.0]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[9330486019469919863,[0.0,0.0]],[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[15838384105575178137,[-20.0,2.0]],[12854270992100552972,[33.77777777777783,2.2222222222222285]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]]],"stroke":[[4069217348643062888,0],[10426255560432238561,0],[11214998966879437330,0],[1241631398419524272,0],[9330486019469919863,0],[10498175376126066982,0],[15838384105575178137,0],[379744301215040936,0],[15286139376878919277,0],[10438163357339042361,0],[12854270992100552972,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}],[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[13517856880347849115,[777.1851851851851,92.44444444444446]],[9496337687212684441,[732.148148148148,57.18518518518518]],[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[14760110820354327749,[614.8148148148148,129.1851851851852]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[10686631697241750410,2930103517622848405],[18226408581696793441,14760110820354327749],[16628058317667581864,9465415708990918986],[3809009367670994230,13517856880347849115],[11696351847604335156,9496337687212684441],[13496648265229692336,12398030966924498647]],"end_point":[[13496648265229692336,2930103517622848405],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115],[3809009367670994230,12398030966924498647],[10686631697241750410,9496337687212684441],[18226408581696793441,9465415708990918986]],"handle_primary":[[11696351847604335156,[-29.333333333333258,11.55555555555555]],[16628058317667581864,[41.185185185185105,-9.7777777777778]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]],[18226408581696793441,[0.0,0.0]],[3809009367670994230,[21.33333333333337,4.740740740740733]],[10686631697241750410,[-13.037037037036953,-4.444444444444457]]],"handle_end":[[13496648265229692336,[13.037037037036953,4.444444444444457]],[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[10686631697241750410,[29.333333333333258,-11.55555555555555]],[11696351847604335156,[54.81481481481478,-42.37037037037035]],[18226408581696793441,[-41.185185185185105,9.7777777777778]]],"stroke":[[3809009367670994230,0],[13496648265229692336,0],[18226408581696793441,0],[16628058317667581864,0],[10686631697241750410,0],[11696351847604335156,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}],[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":18087203100637857224,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[16999130951959724657,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[],"remove":[],"delta":[[11,[-1.3333333333333333,-1.3333333333333333]],[9,[0.0,-2.6666666666666665]],[12,[-2.6666666666666665,0.0]],[10,[0.0,-2.6666666666666665]],[8,[0.251505927280391,-2.273736754432321e-13]]]},"segments":{"add":[],"remove":[],"start_point":[],"end_point":[],"handle_primary":[[8,[7.803277823764688,41.0359405336701]]],"handle_end":[[7,[-7.460968634658116,-39.23578253960113]]],"stroke":[]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[7388288026322342161,[1277.0,319.0]],[5173348374891662425,[969.0,0.0]],[12314285668680405002,[1085.0,181.0]],[12796056970187696453,[1418.0,0.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[9065140293539496953,12796056970187696453],[9177623211202289793,12314285668680405002],[18091265337503274797,7388288026322342161],[10860608091363771974,5173348374891662425]],"end_point":[[9177623211202289793,7388288026322342161],[18091265337503274797,12796056970187696453],[10860608091363771974,12314285668680405002],[9065140293539496953,5173348374891662425]],"handle_primary":[[9065140293539496953,[0.0,0.0]],[10860608091363771974,[0.0,0.0]],[18091265337503274797,[178.0,-35.0]],[9177623211202289793,[-33.0,137.0]]],"handle_end":[[9065140293539496953,[0.0,0.0]],[18091265337503274797,[168.99998492988766,81.0]],[9177623211202289793,[-77.81941867085992,15.301571086966838]],[10860608091363771974,[25.066898104916696,-104.0656072840481]]],"stroke":[[18091265337503274797,0],[9065140293539496953,0],[9177623211202289793,0],[10860608091363771974,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}],[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[13567509413382199058,[702.6831275720166,195.95061728395063]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[15744271344233846756,[785.7777777777777,205.62962962962965]],[4854280308383915721,[813.9259259259259,200.2962962962963]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[5664077098702810122,[686.5185185185185,191.1111111111111]],[13877679667762731651,[743.4074074074074,234.66666666666669]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[15817054697695831753,[806.716049382716,206.22222222222223]],[2189722519288419244,[796.0493827160494,202.2716049382716]],[12058665768506126331,[693.7283950617283,174.35390946502056]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[3918280827204321712,4854280308383915721],[1639796012074210121,6802441093413090533],[16261506098907231989,13567509413382199058],[14941832641240060361,7436032950540776377],[94092576912261794,2189722519288419244],[13932755083907220179,17729943149159368459],[18299135553255571870,15817054697695831753],[5102625335252315850,15575201098426093294],[8279051592565434787,5664077098702810122],[11037018395008586448,13877679667762731651],[2367379450383978497,14178520291283306679],[3109091330258982137,15744271344233846756],[2336956120616260883,12058665768506126331]],"end_point":[[5102625335252315850,12058665768506126331],[18299135553255571870,15744271344233846756],[13932755083907220179,7436032950540776377],[14941832641240060361,2189722519288419244],[2367379450383978497,15575201098426093294],[3918280827204321712,17729943149159368459],[16261506098907231989,5664077098702810122],[1639796012074210121,4854280308383915721],[3109091330258982137,13877679667762731651],[2336956120616260883,6802441093413090533],[94092576912261794,15817054697695831753],[11037018395008586448,13567509413382199058],[8279051592565434787,14178520291283306679]],"handle_primary":[[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[11037018395008586448,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[18299135553255571870,[0.0,0.0]],[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[3109091330258982137,[0.0,0.0]],[2336956120616260883,[0.0,0.0]],[3918280827204321712,[0.0,0.0]],[13932755083907220179,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[94092576912261794,[0.0,0.0]],[14941832641240060361,[0.0,0.0]],[16261506098907231989,[0.0,0.0]]],"handle_end":[[3918280827204321712,[0.0,0.0]],[1639796012074210121,[-19.259259259259352,-3.259259259259238]],[14941832641240060361,[7.1111111111111995,1.7777777777778]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[2336956120616260883,[-65.77777777777783,13.333333333333314]],[16261506098907231989,[12.1395654462896,1.5502392023748983]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[94092576912261794,[0.0,0.0]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[13932755083907220179,[0.0,0.0]]],"stroke":[[3109091330258982137,0],[2336956120616260883,0],[13932755083907220179,0],[5102625335252315850,0],[16261506098907231989,0],[14941832641240060361,0],[1639796012074210121,0],[18299135553255571870,0],[3918280827204321712,0],[94092576912261794,0],[2367379450383978497,0],[8279051592565434787,0],[11037018395008586448,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[5480246971175127548,[364.0,767.9999999999999]],[949359986970918930,[0.0,608.0]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[11231973846952426191,6561081452252813685,15926511461198813522],"start_point":[[12480300844056666979,6265491311473200676],[15710828508798332384,5480246971175127548],[8951068186878308228,6461719056721357962],[9717584104793611782,949359986970918930]],"end_point":[[8951068186878308228,5480246971175127548],[12480300844056666979,949359986970918930],[9717584104793611782,6461719056721357962],[15710828508798332384,6265491311473200676]],"handle_primary":[[8951068186878308228,[121.00000000000006,-37.99999999999994]],[15710828508798332384,null],[12480300844056666979,null],[9717584104793611782,[0.0,0.0]]],"handle_end":[[12480300844056666979,null],[15710828508798332384,null],[8951068186878308228,[-92.0,-81.99999999999989]],[9717584104793611782,[-63.1770926995265,19.84073985604961]]],"stroke":[[8951068186878308228,0],[12480300844056666979,0],[15710828508798332384,0],[9717584104793611782,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}],[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}],[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}]],"remove_g1_continuous":[[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":16999130951959724657,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[7209807874503344461,[188.0,694.6666666666669]],[1623125309784127684,[643.9258958566198,633.6997633965701]],[2668496811386192321,[0.0,768.0]],[16723991032614525258,[553.0000000000001,768.0]],[3123395482103162919,[-2.273736754432321e-13,689.0]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[6789459806904610761,1623125309784127684],[16456150086799119359,2668496811386192321],[3656277643115996070,16723991032614525258],[16287649713110748258,3123395482103162919],[1652964032977338610,7209807874503344461]],"end_point":[[16456150086799119359,16723991032614525258],[6789459806904610761,7209807874503344461],[16287649713110748258,2668496811386192321],[1652964032977338610,3123395482103162919],[3656277643115996070,1623125309784127684]],"handle_primary":[[16456150086799119359,[0.0,0.0]],[16287649713110748258,[0.0,0.0]],[1652964032977338610,[-81.48609837852206,84.6759456460087]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]],[3656277643115996070,[0.0,0.0]]],"handle_end":[[16287649713110748258,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[16456150086799119359,[0.0,0.0]],[6789459806904610761,[187.33333333333343,-194.6666666666667]],[1652964032977338610,[56.00000000000023,11.0]]],"stroke":[[6789459806904610761,0],[3656277643115996070,0],[16287649713110748258,0],[1652964032977338610,0],[16456150086799119359,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}],[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}]],"remove_g1_continuous":[[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}],[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[4648964341912884959,[665.0000000000001,768.0]],[16569120368910754547,[1361.0,768.0]],[10156053545530752213,[1094.162353515625,594.2965698242188]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[2197140374690997530,10156053545530752213],[9030015329489789075,4648964341912884959],[3433930674303663828,16569120368910754547]],"end_point":[[2197140374690997530,16569120368910754547],[9030015329489789075,10156053545530752213],[3433930674303663828,4648964341912884959]],"handle_primary":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[79.20069951994813,30.807024746222492]],[9030015329489789075,[32.66666666666663,-95.99999999999989]]],"handle_end":[[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[9030015329489789075,[-238.88331323750492,-92.9194336284096]],[3433930674303663828,[0.0,0.0]]],"stroke":[[9030015329489789075,0],[2197140374690997530,0],[3433930674303663828,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}],[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[7903705226822768120,[497.3827160493826,248.88888888888889]],[6082833770141706533,[504.0987654320987,184.6255144032922]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[17147466439590042359,[526.0109927536641,282.1042175292969]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[2255088856072565305,13341364271767916194],[14649965831690031908,6082833770141706533],[9659144961849433642,17147466439590042359],[801877719748058643,7903705226822768120]],"end_point":[[801877719748058643,17147466439590042359],[2255088856072565305,6082833770141706533],[14649965831690031908,7903705226822768120],[9659144961849433642,13341364271767916194]],"handle_primary":[[9659144961849433642,[0.0,0.0]],[801877719748058643,[13.173601585124231,23.615912208504938]],[2255088856072565305,[0.0,0.0]],[14649965831690031908,[0.0,0.0]]],"handle_end":[[2255088856072565305,[-112.09876543209862,43.81893004115227]],[9659144961849433642,[195.55555555555569,-16.14814814814804]],[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[801877719748058643,[0.0,0.0]]],"stroke":[[2255088856072565305,0],[801877719748058643,0],[9659144961849433642,0],[14649965831690031908,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}],[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[1674257131044231065,[829.4320987654323,121.67901234567904]],[16005438712872589849,[817.1851851851852,94.61728395061728]],[13358295350421759755,[778.4691358024693,177.1851851851852]],[4322398537034510509,[776.888888888889,117.53086419753087]],[16958489363675356032,[658.172839506173,169.08641975308643]],[3438797896265725901,[795.4567901234569,94.41975308641976]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[15245407364463454564,[773.530864197531,141.4320987654321]],[10491326691824745018,[811.851851851852,148.54320987654322]],[9374180853656949931,[784.0000000000002,176.98765432098767]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[13015157349146777770,3438797896265725901],[12873317883441611394,15245407364463454564],[8327087349631976772,4322398537034510509],[11663644781855838202,16958489363675356032],[198953627342130434,7347160684180114694],[3235570761188242773,1674257131044231065],[16846650637386857857,9374180853656949931],[16847383896493391194,10491326691824745018],[8528911024810728168,16005438712872589849],[3784798568712268630,13358295350421759755]],"end_point":[[11663644781855838202,7347160684180114694],[12873317883441611394,16958489363675356032],[3235570761188242773,10491326691824745018],[13015157349146777770,16005438712872589849],[198953627342130434,4322398537034510509],[8327087349631976772,3438797896265725901],[3784798568712268630,15245407364463454564],[16847383896493391194,9374180853656949931],[16846650637386857857,13358295350421759755],[8528911024810728168,1674257131044231065]],"handle_primary":[[12873317883441611394,[-19.75308641975323,2.172839506172835]],[198953627342130434,[0.0,0.3950617283950635]],[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[11663644781855838202,[0.0,0.0]],[16847383896493391194,[-17.185185185185105,13.234567901234584]],[16846650637386857857,[0.0,0.0]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[13015157349146777770,[0.0,0.0]],[8528911024810728168,[5.530864197530946,5.925925925925924]]],"handle_end":[[3235570761188242773,[17.185185185185105,-13.234567901234584]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[16847383896493391194,[0.0,0.0]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]],[16846650637386857857,[0.0,0.0]],[3784798568712268630,[2.9629629629629335,5.135802469135797]],[8327087349631976772,[0.0,0.0]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[198953627342130434,[0.19753086419757435,13.82716049382715]]],"stroke":[[3784798568712268630,0],[3235570761188242773,0],[16847383896493391194,0],[198953627342130434,0],[11663644781855838202,0],[8327087349631976772,0],[8528911024810728168,0],[16846650637386857857,0],[12873317883441611394,0],[13015157349146777770,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}]],"remove_g1_continuous":[[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}],[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[5714042674660607880,[1536.0,0.0]],[7233902871991446034,[908.0,134.0]],[9912917483675332510,[1536.0,254.00000000000009]],[11163144542703672167,[763.0,0.0]],[9403888920678312544,[1271.0,199.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[3118709054343469746,9403888920678312544],[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880],[11879054056208937348,7233902871991446034],[7099980686025805826,11163144542703672167]],"end_point":[[12085471811343146506,5714042674660607880],[7099980686025805826,7233902871991446034],[11879054056208937348,9403888920678312544],[7804540624589615499,11163144542703672167],[3118709054343469746,9912917483675332510]],"handle_primary":[[12085471811343146506,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[3118709054343469746,[191.0,-106.0]],[7099980686025805826,[0.0,0.0]],[11879054056208937348,[68.41365603453937,54.51084151791355]]],"handle_end":[[11879054056208937348,[-121.83694366711715,67.61631428646292]],[12085471811343146506,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]],[3118709054343469746,[0.0,0.0]],[7804540624589615499,[0.0,0.0]]],"stroke":[[7099980686025805826,0],[3118709054343469746,0],[11879054056208937348,0],[7804540624589615499,0],[12085471811343146506,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18087203100637857224,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,45]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,54]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,45]}}},"network_metadata":null}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,113]}}},"network_metadata":null}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,50]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,62]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12004065064978143915,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-64,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-8,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,56]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,104]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,113]}}},"network_metadata":null}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,71]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16999130951959724657,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,80]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,118]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,65]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6468742191365679953,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":["Vector Data","Modification"],"output_names":["Vector Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,45]}}},"network_metadata":null}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[816.1084477087345,-1547.8069517853935],"tilt":0.0,"zoom":0.4168731231231231},"node_graph_to_viewport":[0.4168731231231231,0.0,0.0,0.4168731231231231,1331.0,-60.999999999999886],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[[],[],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"painted-dreams.graphite","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-767.828955980962,-384.44760387523434],"tilt":0.0,"zoom":1.0},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file +{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[301778328144628917,[493.5149940383244,200.29629629629628]],[13357220652574593654,[574.2222222222222,108.44444444444449]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[18118267825025549699,[642.0740740740741,0.0]],[533731991408535384,[501.6296296296296,175.40740740740742]],[6351696498298648253,[646.8148148148149,0.0]],[17863574903157697896,[606.8148151308641,95.19407372365433]],[15992617814592812350,[621.0370370370368,0.0]],[4691860614575868200,[528.2962962962963,283.8518518518518]],[10625296323957562985,[473.4814814814815,272.5925925925926]],[6379137305818664393,[625.4814814814813,0.0]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[3710133387837274291,15992617814592812350],[3384102572540409881,18442321214082298093],[3303411878775644985,301778328144628917],[11346538709718766144,13357220652574593654],[10146665273368938971,6351696498298648253],[8462655819889292900,4691860614575868200],[12035095010819582754,18118267825025549699],[13662059715350867364,6379137305818664393],[8661113083384527971,10625296323957562985],[318560030360358929,17863574903157697896],[2035327810332855521,533731991408535384]],"end_point":[[3384102572540409881,18118267825025549699],[10146665273368938971,17863574903157697896],[12035095010819582754,6351696498298648253],[3710133387837274291,6379137305818664393],[3303411878775644985,10625296323957562985],[318560030360358929,4691860614575868200],[8661113083384527971,533731991408535384],[8462655819889292900,301778328144628917],[13662059715350867364,18442321214082298093],[11346538709718766144,15992617814592812350],[2035327810332855521,13357220652574593654]],"handle_primary":[[8462655819889292900,[0.0,0.0]],[10146665273368938971,[0.0,0.0]],[318560030360358929,[-46.95465552079859,46.40007297527743]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[12035095010819582754,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[3384102572540409881,[0.0,0.0]],[3710133387837274291,[0.0,0.0]],[3303411878775644985,[0.0,0.0]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[13662059715350867364,[0.0,0.0]]],"handle_end":[[3710133387837274291,[0.0,0.0]],[8462655819889292900,[-21.74426522093495,47.99999999999997]],[318560030360358929,[-97.48148148148152,-81.18518518518522]],[3384102572540409881,[0.5807410754567854,77.36888852918523]],[12035095010819582754,[0.0,0.0]],[11346538709718766144,[1.1377781018271662,63.71555518874077]],[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[13662059715350867364,[68.68148181185177,-54.8859262904691]]],"stroke":[[11346538709718766144,0],[10146665273368938971,0],[12035095010819582754,0],[3710133387837274291,0],[3303411878775644985,0],[3384102572540409881,0],[13662059715350867364,0],[318560030360358929,0],[8462655819889292900,0],[8661113083384527971,0],[2035327810332855521,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}],[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}],[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[17520941196305861319,[889.0,0.0]],[6029995238423674441,[898.0,46.0]],[17339925811006567497,[898.0,468.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[4723170318056755559,[923.0,349.0]],[13279221198527484331,[564.0,768.0]],[1541401134848201833,[886.0,572.0]],[11084016020553554647,[655.0,636.0]],[15701538241214188894,[0.0,0.0]],[12817219955590128894,[933.0,273.0]],[9729762716079513741,[585.0,666.0]],[16590926169549948521,[869.0,147.0]],[12317789037775437786,[902.0,394.0]],[4659274885664969740,[896.0,523.0]],[7727030009292816503,[0.0,768.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[8832757535144158913,17339925811006567497],[4806484166818510930,6029995238423674441],[862900208337901235,17520941196305861319],[3307452201570141575,7727030009292816503],[9730229894941201870,4723170318056755559],[16631919016540861133,17321098837874422287],[9808624553037921371,12817219955590128894],[9314952320711038398,11084016020553554647],[14740183693208469558,13279221198527484331],[15056691877609602335,4659274885664969740],[10137845066833192587,9729762716079513741],[8919277736361106420,1541401134848201833],[3876401232874291775,15701538241214188894],[11569179934425192262,16590926169549948521],[1248401493076165062,12317789037775437786]],"end_point":[[9314952320711038398,9729762716079513741],[9808624553037921371,4723170318056755559],[14740183693208469558,7727030009292816503],[8832757535144158913,4659274885664969740],[10137845066833192587,13279221198527484331],[862900208337901235,6029995238423674441],[11569179934425192262,12817219955590128894],[4806484166818510930,16590926169549948521],[15056691877609602335,1541401134848201833],[16631919016540861133,11084016020553554647],[3876401232874291775,17520941196305861319],[3307452201570141575,15701538241214188894],[8919277736361106420,17321098837874422287],[1248401493076165062,17339925811006567497],[9730229894941201870,12317789037775437786]],"handle_primary":[[4806484166818510930,[11.595886737767424,32.210796493798]],[9730229894941201870,[-24.00371914417652,11.366922485048674]],[9808624553037921371,[18.0,36.0]],[15056691877609602335,[0.0,0.0]],[9314952320711038398,[-34.0,-7.0]],[3876401232874291775,[0.0,0.0]],[14740183693208469558,[0.0,0.0]],[10137845066833192587,[-19.0,43.0]],[11569179934425192262,[-4.0,51.0]],[8832757535144158913,[14.888888888888914,4.8888888888888005]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[3307452201570141575,[0.0,0.0]],[862900208337901235,[0.0,0.0]],[1248401493076165062,[21.0,27.0]],[8919277736361106420,[10.458809984597837,40.44073194044492]]],"handle_end":[[862900208337901235,[-9.000000000000114,-25.0]],[14740183693208469558,[0.0,0.0]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[3876401232874291775,[0.0,0.0]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[10137845066833192587,[0.0,0.0]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[3307452201570141575,[0.0,0.0]],[9314952320711038398,[19.0,-43.0]],[16631919016540861133,[34.0,7.0]],[15056691877609602335,[-10.0,-38.66666666666663]],[9808624553037921371,[28.703703703703695,-13.592592592592496]],[11569179934425192262,[-18.0,-36.0]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[9730229894941201870,[-21.0,-27.0]]],"stroke":[[3307452201570141575,0],[10137845066833192587,0],[862900208337901235,0],[8832757535144158913,0],[8919277736361106420,0],[14740183693208469558,0],[9314952320711038398,0],[4806484166818510930,0],[16631919016540861133,0],[1248401493076165062,0],[15056691877609602335,0],[11569179934425192262,0],[3876401232874291775,0],[9808624553037921371,0],[9730229894941201870,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9577388580635291078,[1536.0,0.0]],[3249248431686392864,[1536.0,95.0]],[9346093213164033195,[1211.0,0.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[9585086796709645600,9346093213164033195],[1147165232046305110,9577388580635291078],[13980191878100735848,3249248431686392864]],"end_point":[[1147165232046305110,9346093213164033195],[9585086796709645600,3249248431686392864],[13980191878100735848,9577388580635291078]],"handle_primary":[[9585086796709645600,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]],[1147165232046305110,[0.0,0.0]]],"handle_end":[[9585086796709645600,[-281.0,-17.00000000000003]],[13980191878100735848,[0.0,0.0]],[1147165232046305110,[0.0,0.0]]],"stroke":[[1147165232046305110,0],[13980191878100735848,0],[9585086796709645600,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[1078998931754662073,[942.0246913580248,264.2962962962963]],[8048619563638005414,[944.0577392578124,302.0703430175781]],[3251241957527197760,[875.8001811251517,185.6784024477276]],[11100418327549747778,[910.880658436214,243.0946502057613]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[10795897848378052161,11100418327549747778],[6165219920202055745,3251241957527197760],[12551435438068218604,1078998931754662073],[3439025775805007707,8048619563638005414]],"end_point":[[6165219920202055745,11100418327549747778],[10795897848378052161,8048619563638005414],[3439025775805007707,1078998931754662073],[12551435438068218604,3251241957527197760]],"handle_primary":[[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[6165219920202055745,[0.0,0.0]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]],[10795897848378052161,[11.46027223334628,13.82427457744465]]],"handle_end":[[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[12551435438068218604,[23.33217876876199,5.204454965879364]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]],[3439025775805007707,[14.61728395061732,27.456790123456813]]],"stroke":[[12551435438068218604,0],[10795897848378052161,0],[3439025775805007707,0],[6165219920202055745,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}],[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[4481635366652149569,[684.8888888888889,395.55555555555554]],[4765910415851982345,[283.33331298828125,354.6666564941406]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[1608608093193158603,[609.7777777777777,620.0]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[3983292299330016176,1608608093193158603],[8024777209266880257,4481635366652149569],[3045825504718908919,4475009837548700636],[11103925991989272298,4765910415851982345]],"end_point":[[3045825504718908919,4481635366652149569],[3983292299330016176,4765910415851982345],[11103925991989272298,4475009837548700636],[8024777209266880257,1608608093193158603]],"handle_primary":[[3045825504718908919,[62.22222222222217,43.111111111111086]],[3983292299330016176,[0.0,0.0]],[11103925991989272298,[0.0,0.0]],[8024777209266880257,[11.111111111111086,62.22222222222217]]],"handle_end":[[11103925991989272298,[-113.5844024581724,39.08097956276566]],[3983292299330016176,[0.0,0.0]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]],[8024777209266880257,[34.66666666666674,-85.33333333333337]]],"stroke":[[8024777209266880257,0],[11103925991989272298,0],[3983292299330016176,0],[3045825504718908919,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}],[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}]],"remove_g1_continuous":[[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[425878374398720476,[898.633744855967,207.99999999999997]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[9658821733796680583,[920.5925925925926,208.0]],[5496457317579994340,[929.3607681755832,198.40877914951983]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[10872099980755217048,[889.0,0.0]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[13961346931609713434,13049263474526562389],[9187894839116405225,9658821733796680583],[6443321953815072406,2409359561719399794],[6545223889678917273,14263506369487797530],[16241193756011776206,10872099980755217048],[9745298522639115232,5496457317579994340],[13223251807271379465,9175973472325454282],[8058164935346100149,7125168137854779179],[5210886161307886529,425878374398720476],[11050813873332011119,5252668597335249558]],"end_point":[[11050813873332011119,10872099980755217048],[6443321953815072406,9175973472325454282],[9187894839116405225,425878374398720476],[13223251807271379465,14263506369487797530],[9745298522639115232,7125168137854779179],[5210886161307886529,5252668597335249558],[16241193756011776206,13049263474526562389],[6545223889678917273,5496457317579994340],[8058164935346100149,9658821733796680583],[13961346931609713434,2409359561719399794]],"handle_primary":[[16241193756011776206,[0.0,0.0]],[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[8058164935346100149,[0.0,0.0]],[9187894839116405225,[-8.263374485596842,1.880201188843188]],[9745298522639115232,[0.0,0.0]],[6545223889678917273,[0.0,0.0]],[6443321953815072406,[-9.144953020396894,24.145964868041293]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]]],"handle_end":[[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]],[9745298522639115232,[7.703703703703695,-2.074074074074076]],[13961346931609713434,[10.984910836762538,-29.00411522633746]]],"stroke":[[9745298522639115232,0],[13961346931609713434,0],[9187894839116405225,0],[6545223889678917273,0],[13223251807271379465,0],[11050813873332011119,0],[8058164935346100149,0],[16241193756011776206,0],[5210886161307886529,0],[6443321953815072406,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}],[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}],[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[3749627916562964805,[866.172839506173,558.2222222222224]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[15695128662656633322,[825.6790123456792,509.4320987654323]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[6781153531246981076,[872.6913580246915,513.7777777777779]],[2535476870476707501,[887.5061728395062,568.6913580246915]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[12599396287665855262,[902.5185185185188,498.56790123456807]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[17761347836385237495,6164201091766276213],[14847678502054094837,10333377922713208038],[14489254209548096966,15695128662656633322],[264894972572137143,2535476870476707501],[15700595221504820396,10786213048155734586],[14515109677644612103,3749627916562964805],[3021925106447084698,6781153531246981076],[6369399239389505343,12599396287665855262],[3461110970422306113,8241402276734357681]],"end_point":[[3021925106447084698,15695128662656633322],[6369399239389505343,6164201091766276213],[14847678502054094837,3749627916562964805],[14515109677644612103,2535476870476707501],[14489254209548096966,8241402276734357681],[3461110970422306113,10333377922713208038],[264894972572137143,10786213048155734586],[15700595221504820396,12599396287665855262],[17761347836385237495,6781153531246981076]],"handle_primary":[[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[3461110970422306113,[0.38915905346209456,1.493515242756871]],[3021925106447084698,[-16.59259259259261,2.370370370370324]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[264894972572137143,[0.0,0.0]],[17761347836385237495,[0.0,0.0]],[14515109677644612103,[8.888888888888914,0.0]],[15700595221504820396,[0.0,0.0]]],"handle_end":[[264894972572137143,[3.753086419753003,37.1358024691358]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]],[14515109677644612103,[0.0,0.0]],[6369399239389505343,[0.0,0.0]],[15700595221504820396,[7.1111111111111995,5.530864197530889]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[17761347836385237495,[16.59259259259261,-2.370370370370324]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[14847678502054094837,[-8.888888888888914,0.0]]],"stroke":[[17761347836385237495,0],[15700595221504820396,0],[14847678502054094837,0],[14489254209548096966,0],[6369399239389505343,0],[264894972572137143,0],[3461110970422306113,0],[14515109677644612103,0],[3021925106447084698,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}],[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[8055802412900565217,[480.4444444444445,219.7777777777778]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[13416153271806375161,[531.8518518518517,131.2592592592593]],[4609870404630548899,[589.432098765432,64.79012345679011]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[177515045030371783,[604.2883706752018,0.0]],[2492294980235986276,[604.4434936307387,42.970116997735616]],[16230687409600568539,[491.55555555555554,311.55555555555566]],[12909592102393222573,[607.8024691358027,0.0]],[12390708657704154619,[596.6748971193416,72.42798353909465]],[6873550371723398444,[538.6666666666667,136.0]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[5057709998225566481,17843645051722826880,11060716078587457450,17799038492181728804,16939098306153440303],"start_point":[[921651403153242564,4609870404630548899],[12529947318087068663,177515045030371783],[2463526518527501592,8055802412900565217],[3818841110886669992,7624137673235413199],[4341232355541306629,12390708657704154619],[9825559201153691780,13416153271806375161],[15749222431214672690,2492294980235986276],[9361245670457788924,6873550371723398444],[5578827639764758986,1458337690478625792],[14294722277069184337,12448133448335459077],[1705877195608053135,16230687409600568539]],"end_point":[[9361245670457788924,12390708657704154619],[12529947318087068663,4609870404630548899],[1705877195608053135,8055802412900565217],[921651403153242564,13416153271806375161],[15749222431214672690,12909592102393222573],[3818841110886669992,12448133448335459077],[4341232355541306629,7624137673235413199],[5578827639764758986,16230687409600568539],[14294722277069184337,2492294980235986276],[2463526518527501592,6873550371723398444],[9825559201153691780,1458337690478625792]],"handle_primary":[[14294722277069184337,[-0.2633744855968416,28.576131687242796]],[15749222431214672690,[3.877242131088792,-22.333682252383095]],[1705877195608053135,[0.0,0.0]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[5578827639764758986,[-19.25925925925924,60.44444444444443]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[3818841110886669992,[0.0,0.0]],[12529947318087068663,[0.0,0.0]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[9825559201153691780,[-30.00610951685011,28.39287782239575]]],"handle_end":[[9825559201153691780,[6.194184133897295,-19.440208666385132]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[921651403153242564,[27.555555555555657,-26.07407407407412]],[4341232355541306629,[0.0,0.0]],[3818841110886669992,[0.0,0.0]],[15749222431214672690,[0.0,0.0]],[2463526518527501592,[-34.96296296296305,33.481481481481495]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[5578827639764758986,[0.0,0.0]],[14294722277069184337,[0.0,0.0]],[9361245670457788924,[-16.14969885498249,21.855925783742933]]],"stroke":[[9361245670457788924,0],[2463526518527501592,0],[3818841110886669992,0],[14294722277069184337,0],[9825559201153691780,0],[12529947318087068663,0],[4341232355541306629,0],[921651403153242564,0],[15749222431214672690,0],[1705877195608053135,0],[5578827639764758986,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}]],"remove_g1_continuous":[[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}],[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[14935583009751134816,[914.9629629629628,418.3703703703703]],[5995306636877552,[912.8888888888888,479.7037037037037]],[5138872293174440313,[922.9629629629628,422.22222222222223]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[7238075805746621699,[798.6831275720165,497.9094650205762]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[17629528758352690600,[892.148148148148,480.2962962962963]],[5021902985892894619,[857.679012345679,478.2880658436215]],[9603704700847490044,[821.037037037037,464.2962962962963]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[9071432674597727163,7238075805746621699],[7250062683967197158,5138872293174440313],[7117413478945421556,5995306636877552],[14571502160667941876,7008812441195504980],[14131440324578863745,14935583009751134816],[4499620435559196394,9014079831396927156],[239843798079287870,2355002738045707979],[7655921914272804429,5021902985892894619],[7203043366367198812,9603704700847490044],[12687760936062936386,17629528758352690600]],"end_point":[[7117413478945421556,5138872293174440313],[12687760936062936386,5995306636877552],[4499620435559196394,7008812441195504980],[7203043366367198812,7238075805746621699],[7655921914272804429,17629528758352690600],[239843798079287870,5021902985892894619],[9071432674597727163,2355002738045707979],[14131440324578863745,9014079831396927156],[7250062683967197158,14935583009751134816],[14571502160667941876,9603704700847490044]],"handle_primary":[[7117413478945421556,[0.0,0.0]],[7203043366367198812,[0.0,0.2962962962963047]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[14131440324578863745,[0.0,0.0]],[7250062683967197158,[0.0,0.0]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[14571502160667941876,[-0.5925925925926094,0.0]],[9071432674597727163,[4.345679012345499,-3.555555555555543]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]]],"handle_end":[[4499620435559196394,[8.59259259259261,5.629629629629619]],[7117413478945421556,[15.703703703703695,33.48148148148147]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[12687760936062936386,[0.0,0.0]],[14131440324578863745,[2.962962962963047,-3.259259259259238]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]],[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[7250062683967197158,[0.0,0.0]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[239843798079287870,[-21.502976534539364,2.3372800581021456]]],"stroke":[[9071432674597727163,0],[12687760936062936386,0],[7117413478945421556,0],[239843798079287870,0],[7203043366367198812,0],[4499620435559196394,0],[7655921914272804429,0],[14131440324578863745,0],[14571502160667941876,0],[7250062683967197158,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}]],"remove_g1_continuous":[[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}],[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[266134622800431246,[525.7325506063205,282.1042056224195]],[12075466065090700811,[877.0370370370372,136.5925925925926]],[9852238672814254137,[879.7947439326053,110.54094004739208]],[7115673652122600762,[646.5386352539062,343.99395751953125]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[3769008694104161528,13980530488817762548,10196443086284452827],"start_point":[[17255728395700231433,12075466065090700811],[10242199012993595528,266134622800431246],[3166693019207180063,7115673652122600762],[2159953159628520134,9852238672814254137]],"end_point":[[2159953159628520134,12075466065090700811],[10242199012993595528,9852238672814254137],[17255728395700231433,7115673652122600762],[3166693019207180063,266134622800431246]],"handle_primary":[[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[2159953159628520134,[0.0,0.0]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]],[10242199012993595528,[137.37856050479058,-43.88198340019727]]],"handle_end":[[3166693019207180063,[0.0,0.0]],[17255728395700231433,[165.46136474609386,67.5615980360243]],[2159953159628520134,[0.0,0.0]],[10242199012993595528,[-15.794743932605344,36.71831921186718]]],"stroke":[[2159953159628520134,0],[10242199012993595528,0],[3166693019207180063,0],[17255728395700231433,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}],[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}],[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[9969822516610975381,[0.0,0.0]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[16788403743390653241,[467.99999999999994,487.3333333333333]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[16808246968731723098,[891.5555555555554,768.0]],[16686047298905200065,[283.3333333333333,354.66666666666663]],[16995054111951247369,[0.0,768.0]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[6057321578372831916,[708.148148148148,616.2962962962962]],[18307826411292029066,[601.1756940654021,0.0]],[3124531241960914803,[589.9588477366256,64.65843621399176]],[87630150944518163,[879.1111111111111,595.8518518518517]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[515539069333222772,16686047298905200065],[9242150930423817167,15635903913637220842],[15885450050057549950,3124531241960914803],[8823161072525575433,8652457572576966876],[1662692131856898001,18307826411292029066],[16224358815792062223,16808246968731723098],[178608879920007638,9969822516610975381],[14715945740984195653,16788403743390653241],[5227512358023446442,87630150944518163],[17410347049685436697,8212340198835025146],[9544743211426701912,6057321578372831916],[14879480148926424885,8323145223085840944],[12162371359208565273,16995054111951247369]],"end_point":[[178608879920007638,16995054111951247369],[14715945740984195653,16686047298905200065],[14879480148926424885,87630150944518163],[16224358815792062223,8323145223085840944],[12162371359208565273,16808246968731723098],[5227512358023446442,8212340198835025146],[9242150930423817167,8652457572576966876],[17410347049685436697,6057321578372831916],[1662692131856898001,9969822516610975381],[8823161072525575433,3124531241960914803],[15885450050057549950,18307826411292029066],[9544743211426701912,16788403743390653241],[515539069333222772,15635903913637220842]],"handle_primary":[[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[515539069333222772,[48.66666666666663,-23.999999999999943]],[15885450050057549950,[11.193415637860312,-27.25925925925926]],[178608879920007638,[0.0,0.0]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[12162371359208565273,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[16224358815792062223,[0.0,0.0]],[8823161072525575433,[11.259252477575274,-22.666663275824646]],[14879480148926424885,[0.0,0.0]]],"handle_end":[[14715945740984195653,[0.0,0.0]],[12162371359208565273,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[15885450050057549950,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[515539069333222772,[-95.07216232621772,78.5378732260062]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[16224358815792062223,[0.0,0.0]],[17410347049685436697,[57.48148148148141,21.629629629629676]],[178608879920007638,[0.0,0.0]],[9544743211426701912,[92.66666666666656,80.66666666666669]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[5227512358023446442,[26.37037037037044,-2.3703703703704377]]],"stroke":[[14715945740984195653,0],[12162371359208565273,0],[9242150930423817167,0],[9544743211426701912,0],[515539069333222772,0],[5227512358023446442,0],[8823161072525575433,0],[178608879920007638,0],[14879480148926424885,0],[15885450050057549950,0],[1662692131856898001,0],[16224358815792062223,0],[17410347049685436697,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}],[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[17457877227823502997,[273.0,476.0]],[5992570223148766873,[-2.273736754432321e-13,768.0]],[13436129231170586617,[481.3333333333333,768.0]],[16608607268690234590,[0.0,340.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[13284808974014161135,16608607268690234590],[8776124420595946733,13436129231170586617],[4274372337254864190,5992570223148766873],[5472571334856691465,17457877227823502997]],"end_point":[[8776124420595946733,5992570223148766873],[4274372337254864190,16608607268690234590],[5472571334856691465,13436129231170586617],[13284808974014161135,17457877227823502997]],"handle_primary":[[4274372337254864190,[0.0,0.0]],[13284808974014161135,[161.73791370620617,43.57576470888159]],[5472571334856691465,[146.0,-13.0]],[8776124420595946733,[0.0,0.0]]],"handle_end":[[5472571334856691465,[0.4078646547782227,-253.307727480567]],[13284808974014161135,[-165.43581782916667,14.730586519035386]],[8776124420595946733,[0.0,0.0]],[4274372337254864190,[0.0,0.0]]],"stroke":[[4274372337254864190,0],[5472571334856691465,0],[13284808974014161135,0],[8776124420595946733,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}],[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[16332448509429125699,1009888023123207923],"delta":[[2904729023031858224,[491.3420376907663,506.7530051313737]],[4175610638601362388,[957.0,324.0]],[3507505346656189771,[552.0,768.0000000000001]],[2195807584570698921,[993.0,767.9999999999999]],[854708012647259796,[740.0,298.0]],[7821224334582795476,[1093.0,600.0]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[5710832026764395735,546565283439891712],"start_point":[[8570276641842028192,2195807584570698921],[17183285389582020412,7821224334582795476],[4553965744616493549,3507505346656189771],[17304574948462342226,4175610638601362388],[13993263006398686359,2904729023031858224],[6577640955869157325,854708012647259796]],"end_point":[[6577640955869157325,4175610638601362388],[17304574948462342226,7821224334582795476],[8570276641842028192,3507505346656189771],[17183285389582020412,2195807584570698921],[13993263006398686359,854708012647259796],[4553965744616493549,2904729023031858224]],"handle_primary":[[8570276641842028192,[0.0,0.0]],[4553965744616493549,[0.0,0.0]],[6577640955869157325,[102.0,-45.0]],[17183285389582020412,[-24.08196064282073,82.4624712920831]],[13993263006398686359,[0.0,-84.7537417270637]],[17304574948462342226,[50.35246044959922,33.38607084805801]]],"handle_end":[[13993263006398686359,[-102.0,45.0]],[17304574948462342226,[33.0,-113.0]],[17183285389582020412,[0.0,0.0]],[4553965744616493549,[0.0,135.2464055295568]],[8570276641842028192,[0.0,0.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]]],"stroke":[[17304574948462342226,0],[4553965744616493549,0],[6577640955869157325,0],[8570276641842028192,0],[13993263006398686359,0],[17183285389582020412,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}],[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}]],"remove_g1_continuous":[[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}],[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}],[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[16569120368910754547,[-43.0,0.0]],[2003133867055127539,[1011.111083984375,786.3993530273438]],[4648964341912884959,[324.66666666666646,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[3433930674303663828,6602880736207868665],"start_point":[[13431612844608018700,13758328146055368475],[7334532063810723038,16569120368910754547],[8214025514312603513,2003133867055127539]],"end_point":[[13431612844608018700,2003133867055127539],[8214025514312603513,4648964341912884959],[7334532063810723038,13758328146055368475]],"handle_primary":[[13431612844608018700,null],[9030015329489789075,[69.08057198853999,-80.19415805947563]],[7334532063810723038,null],[8214025514312603513,null]],"handle_end":[[7334532063810723038,null],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[13431612844608018700,null],[9030015329489789075,[0.0,0.0]],[8214025514312603513,null]],"stroke":[[8214025514312603513,0],[13431612844608018700,0],[7334532063810723038,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[15117515618866904690,[819.1111111111109,354.44444444444434]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[7025422618543191491,[911.5555555555554,345.3333333333333]],[10412162547161259027,[887.3333333333333,376.0]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[3831533579307185652,[880.4444444444443,357.3333333333333]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[7639287212006638253,[862.8888888888888,349.3333333333333]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[6952183320761642858,[933.9259259259262,324.3456790123457]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[10498175376126066982,13654185056786459919],[1241631398419524272,7639287212006638253],[9330486019469919863,5269777039739103358],[4069217348643062888,16937470333767479918],[15286139376878919277,15117515618866904690],[10426255560432238561,6952183320761642858],[11214998966879437330,2802617302192982616],[15838384105575178137,15750781936547583892],[379744301215040936,3831533579307185652],[12854270992100552972,7025422618543191491],[10438163357339042361,10412162547161259027]],"end_point":[[379744301215040936,16937470333767479918],[15838384105575178137,7025422618543191491],[11214998966879437330,7639287212006638253],[12854270992100552972,3831533579307185652],[10426255560432238561,2802617302192982616],[1241631398419524272,15117515618866904690],[9330486019469919863,13654185056786459919],[10498175376126066982,6952183320761642858],[15286139376878919277,15750781936547583892],[10438163357339042361,5269777039739103358],[4069217348643062888,10412162547161259027]],"handle_primary":[[15838384105575178137,[22.222222222222285,5.555555555555543]],[4069217348643062888,[0.0,0.0]],[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[379744301215040936,[-0.2222222222221717,0.0]],[10498175376126066982,[0.0,0.0]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[12854270992100552972,[-0.4444444444443434,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]]],"handle_end":[[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[11214998966879437330,[17.111111111111086,-12.888888888888856]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]],[379744301215040936,[0.0,0.0]],[12854270992100552972,[33.77777777777783,2.2222222222222285]],[9330486019469919863,[0.0,0.0]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]],[15838384105575178137,[-20.0,2.0]]],"stroke":[[10438163357339042361,0],[1241631398419524272,0],[4069217348643062888,0],[15286139376878919277,0],[15838384105575178137,0],[12854270992100552972,0],[9330486019469919863,0],[379744301215040936,0],[10426255560432238561,0],[11214998966879437330,0],[10498175376126066982,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[14760110820354327749,[614.8148148148148,129.1851851851852]],[9496337687212684441,[732.148148148148,57.18518518518518]],[13517856880347849115,[777.1851851851851,92.44444444444446]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[11696351847604335156,9496337687212684441],[3809009367670994230,13517856880347849115],[18226408581696793441,14760110820354327749],[10686631697241750410,2930103517622848405],[13496648265229692336,12398030966924498647],[16628058317667581864,9465415708990918986]],"end_point":[[10686631697241750410,9496337687212684441],[18226408581696793441,9465415708990918986],[3809009367670994230,12398030966924498647],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115],[13496648265229692336,2930103517622848405]],"handle_primary":[[10686631697241750410,[-13.037037037036953,-4.444444444444457]],[3809009367670994230,[21.33333333333337,4.740740740740733]],[11696351847604335156,[-29.333333333333258,11.55555555555555]],[16628058317667581864,[41.185185185185105,-9.7777777777778]],[18226408581696793441,[0.0,0.0]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]]],"handle_end":[[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[13496648265229692336,[13.037037037036953,4.444444444444457]],[18226408581696793441,[-41.185185185185105,9.7777777777778]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[11696351847604335156,[54.81481481481478,-42.37037037037035]],[10686631697241750410,[29.333333333333258,-11.55555555555555]]],"stroke":[[11696351847604335156,0],[16628058317667581864,0],[18226408581696793441,0],[3809009367670994230,0],[10686631697241750410,0],[13496648265229692336,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}],[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[12796056970187696453,[1418.0,0.0]],[12314285668680405002,[1085.0,181.0]],[5173348374891662425,[969.0,0.0]],[7388288026322342161,[1277.0,319.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[18091265337503274797,7388288026322342161],[10860608091363771974,5173348374891662425],[9065140293539496953,12796056970187696453],[9177623211202289793,12314285668680405002]],"end_point":[[10860608091363771974,12314285668680405002],[9177623211202289793,7388288026322342161],[9065140293539496953,5173348374891662425],[18091265337503274797,12796056970187696453]],"handle_primary":[[18091265337503274797,[178.0,-35.0]],[10860608091363771974,[0.0,0.0]],[9177623211202289793,[-33.0,137.0]],[9065140293539496953,[0.0,0.0]]],"handle_end":[[9177623211202289793,[-77.81941867085992,15.301571086966838]],[10860608091363771974,[25.066898104916696,-104.0656072840481]],[9065140293539496953,[0.0,0.0]],[18091265337503274797,[168.99998492988766,81.0]]],"stroke":[[10860608091363771974,0],[9065140293539496953,0],[18091265337503274797,0],[9177623211202289793,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}],[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[5664077098702810122,[686.5185185185185,191.1111111111111]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[12058665768506126331,[693.7283950617283,174.35390946502056]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[2189722519288419244,[796.0493827160494,202.2716049382716]],[15817054697695831753,[806.716049382716,206.22222222222223]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[13567509413382199058,[702.6831275720166,195.95061728395063]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[15744271344233846756,[785.7777777777777,205.62962962962965]],[13877679667762731651,[743.4074074074074,234.66666666666669]],[4854280308383915721,[813.9259259259259,200.2962962962963]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[13932755083907220179,17729943149159368459],[1639796012074210121,6802441093413090533],[5102625335252315850,15575201098426093294],[14941832641240060361,7436032950540776377],[3918280827204321712,4854280308383915721],[16261506098907231989,13567509413382199058],[94092576912261794,2189722519288419244],[18299135553255571870,15817054697695831753],[3109091330258982137,15744271344233846756],[2336956120616260883,12058665768506126331],[8279051592565434787,5664077098702810122],[2367379450383978497,14178520291283306679],[11037018395008586448,13877679667762731651]],"end_point":[[2336956120616260883,6802441093413090533],[94092576912261794,15817054697695831753],[3918280827204321712,17729943149159368459],[1639796012074210121,4854280308383915721],[3109091330258982137,13877679667762731651],[11037018395008586448,13567509413382199058],[5102625335252315850,12058665768506126331],[14941832641240060361,2189722519288419244],[13932755083907220179,7436032950540776377],[16261506098907231989,5664077098702810122],[2367379450383978497,15575201098426093294],[18299135553255571870,15744271344233846756],[8279051592565434787,14178520291283306679]],"handle_primary":[[13932755083907220179,[0.0,0.0]],[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[2336956120616260883,[0.0,0.0]],[94092576912261794,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[11037018395008586448,[0.0,0.0]],[16261506098907231989,[0.0,0.0]],[3109091330258982137,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[18299135553255571870,[0.0,0.0]],[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[14941832641240060361,[0.0,0.0]],[3918280827204321712,[0.0,0.0]]],"handle_end":[[2336956120616260883,[-65.77777777777783,13.333333333333314]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[14941832641240060361,[7.1111111111111995,1.7777777777778]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[94092576912261794,[0.0,0.0]],[16261506098907231989,[12.1395654462896,1.5502392023748983]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[3918280827204321712,[0.0,0.0]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[13932755083907220179,[0.0,0.0]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[1639796012074210121,[-19.259259259259352,-3.259259259259238]]],"stroke":[[2367379450383978497,0],[8279051592565434787,0],[3109091330258982137,0],[18299135553255571870,0],[2336956120616260883,0],[3918280827204321712,0],[13932755083907220179,0],[11037018395008586448,0],[94092576912261794,0],[1639796012074210121,0],[5102625335252315850,0],[16261506098907231989,0],[14941832641240060361,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]],[949359986970918930,[0.0,608.0]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[5480246971175127548,[364.0,767.9999999999999]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[6561081452252813685,11231973846952426191,15926511461198813522],"start_point":[[8951068186878308228,6461719056721357962],[9717584104793611782,949359986970918930],[15710828508798332384,5480246971175127548],[12480300844056666979,6265491311473200676]],"end_point":[[12480300844056666979,949359986970918930],[9717584104793611782,6461719056721357962],[15710828508798332384,6265491311473200676],[8951068186878308228,5480246971175127548]],"handle_primary":[[8951068186878308228,[121.00000000000006,-37.99999999999994]],[15710828508798332384,null],[9717584104793611782,[0.0,0.0]],[12480300844056666979,null]],"handle_end":[[15710828508798332384,null],[8951068186878308228,[-92.0,-81.99999999999989]],[12480300844056666979,null],[9717584104793611782,[-63.1770926995265,19.84073985604961]]],"stroke":[[15710828508798332384,0],[12480300844056666979,0],[9717584104793611782,0],[8951068186878308228,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}],[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}]],"remove_g1_continuous":[[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}],[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[3123395482103162919,[-2.273736754432321e-13,689.0]],[16723991032614525258,[553.0000000000001,768.0]],[2668496811386192321,[0.0,768.0]],[1623125309784127684,[643.9258958566198,633.6997633965701]],[7209807874503344461,[188.0,694.6666666666669]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[16287649713110748258,3123395482103162919],[3656277643115996070,16723991032614525258],[1652964032977338610,7209807874503344461],[6789459806904610761,1623125309784127684],[16456150086799119359,2668496811386192321]],"end_point":[[3656277643115996070,1623125309784127684],[16456150086799119359,16723991032614525258],[1652964032977338610,3123395482103162919],[16287649713110748258,2668496811386192321],[6789459806904610761,7209807874503344461]],"handle_primary":[[1652964032977338610,[-81.48609837852206,84.6759456460087]],[16287649713110748258,[0.0,0.0]],[16456150086799119359,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]]],"handle_end":[[16287649713110748258,[0.0,0.0]],[6789459806904610761,[187.33333333333343,-194.6666666666667]],[16456150086799119359,[0.0,0.0]],[1652964032977338610,[56.00000000000023,11.0]],[3656277643115996070,[0.0,0.0]]],"stroke":[[16287649713110748258,0],[6789459806904610761,0],[16456150086799119359,0],[3656277643115996070,0],[1652964032977338610,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}],[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}]],"remove_g1_continuous":[[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}],[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[4648964341912884959,[665.0000000000001,768.0]],[10156053545530752213,[1094.162353515625,594.2965698242188]],[16569120368910754547,[1361.0,768.0]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[9030015329489789075,4648964341912884959],[3433930674303663828,16569120368910754547],[2197140374690997530,10156053545530752213]],"end_point":[[3433930674303663828,4648964341912884959],[2197140374690997530,16569120368910754547],[9030015329489789075,10156053545530752213]],"handle_primary":[[2197140374690997530,[79.20069951994813,30.807024746222492]],[9030015329489789075,[32.66666666666663,-95.99999999999989]],[3433930674303663828,[0.0,0.0]]],"handle_end":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[9030015329489789075,[-238.88331323750492,-92.9194336284096]]],"stroke":[[2197140374690997530,0],[3433930674303663828,0],[9030015329489789075,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}],[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[6082833770141706533,[504.0987654320987,184.6255144032922]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[17147466439590042359,[526.0109927536641,282.1042175292969]],[7903705226822768120,[497.3827160493826,248.88888888888889]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[9659144961849433642,17147466439590042359],[801877719748058643,7903705226822768120],[14649965831690031908,6082833770141706533],[2255088856072565305,13341364271767916194]],"end_point":[[14649965831690031908,7903705226822768120],[9659144961849433642,13341364271767916194],[2255088856072565305,6082833770141706533],[801877719748058643,17147466439590042359]],"handle_primary":[[9659144961849433642,[0.0,0.0]],[14649965831690031908,[0.0,0.0]],[2255088856072565305,[0.0,0.0]],[801877719748058643,[13.173601585124231,23.615912208504938]]],"handle_end":[[2255088856072565305,[-112.09876543209862,43.81893004115227]],[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[801877719748058643,[0.0,0.0]],[9659144961849433642,[195.55555555555569,-16.14814814814804]]],"stroke":[[9659144961849433642,0],[2255088856072565305,0],[14649965831690031908,0],[801877719748058643,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}],[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[16005438712872589849,[817.1851851851852,94.61728395061728]],[4322398537034510509,[776.888888888889,117.53086419753087]],[9374180853656949931,[784.0000000000002,176.98765432098767]],[16958489363675356032,[658.172839506173,169.08641975308643]],[10491326691824745018,[811.851851851852,148.54320987654322]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[13358295350421759755,[778.4691358024693,177.1851851851852]],[15245407364463454564,[773.530864197531,141.4320987654321]],[1674257131044231065,[829.4320987654323,121.67901234567904]],[3438797896265725901,[795.4567901234569,94.41975308641976]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[12873317883441611394,15245407364463454564],[198953627342130434,7347160684180114694],[16846650637386857857,9374180853656949931],[3784798568712268630,13358295350421759755],[11663644781855838202,16958489363675356032],[3235570761188242773,1674257131044231065],[8528911024810728168,16005438712872589849],[13015157349146777770,3438797896265725901],[8327087349631976772,4322398537034510509],[16847383896493391194,10491326691824745018]],"end_point":[[8327087349631976772,3438797896265725901],[8528911024810728168,1674257131044231065],[13015157349146777770,16005438712872589849],[11663644781855838202,7347160684180114694],[3235570761188242773,10491326691824745018],[3784798568712268630,15245407364463454564],[12873317883441611394,16958489363675356032],[16847383896493391194,9374180853656949931],[198953627342130434,4322398537034510509],[16846650637386857857,13358295350421759755]],"handle_primary":[[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[13015157349146777770,[0.0,0.0]],[198953627342130434,[0.0,0.3950617283950635]],[16846650637386857857,[0.0,0.0]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[12873317883441611394,[-19.75308641975323,2.172839506172835]],[11663644781855838202,[0.0,0.0]],[16847383896493391194,[-17.185185185185105,13.234567901234584]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[8528911024810728168,[5.530864197530946,5.925925925925924]]],"handle_end":[[198953627342130434,[0.19753086419757435,13.82716049382715]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[3235570761188242773,[17.185185185185105,-13.234567901234584]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[16847383896493391194,[0.0,0.0]],[16846650637386857857,[0.0,0.0]],[8327087349631976772,[0.0,0.0]],[3784798568712268630,[2.9629629629629335,5.135802469135797]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]]],"stroke":[[16846650637386857857,0],[198953627342130434,0],[8528911024810728168,0],[3235570761188242773,0],[11663644781855838202,0],[12873317883441611394,0],[3784798568712268630,0],[8327087349631976772,0],[16847383896493391194,0],[13015157349146777770,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}],[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}]],"remove_g1_continuous":[[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}],[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[9403888920678312544,[1271.0,199.0]],[11163144542703672167,[763.0,0.0]],[9912917483675332510,[1536.0,254.00000000000009]],[7233902871991446034,[908.0,134.0]],[5714042674660607880,[1536.0,0.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[11879054056208937348,7233902871991446034],[3118709054343469746,9403888920678312544],[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880],[7099980686025805826,11163144542703672167]],"end_point":[[7099980686025805826,7233902871991446034],[12085471811343146506,5714042674660607880],[7804540624589615499,11163144542703672167],[11879054056208937348,9403888920678312544],[3118709054343469746,9912917483675332510]],"handle_primary":[[7099980686025805826,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[3118709054343469746,[191.0,-106.0]],[11879054056208937348,[68.41365603453937,54.51084151791355]],[12085471811343146506,[0.0,0.0]]],"handle_end":[[12085471811343146506,[0.0,0.0]],[3118709054343469746,[0.0,0.0]],[11879054056208937348,[-121.83694366711715,67.61631428646292]],[7804540624589615499,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]]],"stroke":[[7099980686025805826,0],[12085471811343146506,0],[7804540624589615499,0],[11879054056208937348,0],[3118709054343469746,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,65]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,113]}}},"network_metadata":null}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,118]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,113]}}},"network_metadata":null}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,45]}}},"network_metadata":null}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-64,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,104]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,80]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,54]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-8,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,45]}}},"network_metadata":null}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,71]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,62]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,56]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,50]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[592.0696649941159,-2529.6713086742443],"tilt":0.0,"zoom":1.3353790580762406},"node_graph_to_viewport":[1.3353790580762406,0.0,0.0,1.3353790580762406,1494.0,-2557.0],"node_graph_top_right":[1405.5999755859375,0.0]},"selection_undo_history":[[],[],[],[8566844905246185636],[],[17740496701763775226],[],[4328376070224119511],[],[8566844905246185636],[16999130951959724657],[],[12709602171929957216],[6468742191365679953],[],[18087203100637857224],[],[12004065064978143915],[10080296672372912698],[12004065064978143915],[],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"Painted Dreams","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-708.878066550151,-430.76433468972016],"tilt":0.0,"zoom":0.8728439370010537},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file diff --git a/libraries/bezier-rs/src/bezier/core.rs b/libraries/bezier-rs/src/bezier/core.rs index 35cb72b95c2..ea1930f667f 100644 --- a/libraries/bezier-rs/src/bezier/core.rs +++ b/libraries/bezier-rs/src/bezier/core.rs @@ -113,16 +113,9 @@ impl Bezier { /// Return the string argument used to create a curve in an SVG `path`, excluding the start point. pub fn svg_curve_argument(&self) -> String { - let handle_args = match self.handles { - BezierHandles::Linear => SVG_ARG_LINEAR.to_string(), - BezierHandles::Quadratic { handle } => { - format!("{SVG_ARG_QUADRATIC}{} {}", handle.x, handle.y) - } - BezierHandles::Cubic { handle_start, handle_end } => { - format!("{SVG_ARG_CUBIC}{} {} {} {}", handle_start.x, handle_start.y, handle_end.x, handle_end.y) - } - }; - format!("{handle_args} {} {}", self.end.x, self.end.y) + let mut out = String::new(); + self.write_curve_argument(&mut out).unwrap(); + out } /// Write the curve argument to the string diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 4c79b8afac7..38306c03409 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -193,7 +193,8 @@ mod test { } #[test] fn painted_dreams_5() { - let a = path_from_path_data("M889.000000,0.000000C889.000000,0.000000 889.000000,21.000000 898.000000,46.000000 C909.595887,78.210796 872.365858,104.085306 869.000000,147.000000 C865.000000,198.000000 915.000000,237.000000 933.000000,273.000000 C951.000000,309.000000 951.703704,335.407407 923.000000,349.000000 C898.996281,360.366922 881.000000,367.000000 902.000000,394.000000 C923.000000,421.000000 928.592593,431.407407 898.000000,468.000000 C912.888889,472.888889 929.333333,513.333333 896.000000,523.000000 C896.000000,523.000000 876.000000,533.333333 886.000000,572.000000 C896.458810,612.440732 873.333333,657.777778 802.666667,656.444444 C738.670245,655.236965 689.000000,643.000000 655.000000,636.000000 C621.000000,629.000000 604.000000,623.000000 585.000000,666.000000 C566.000000,709.000000 564.000000,768.000000 564.000000,768.000000 C564.000000,768.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 0.000000,0.000000 0.000000,0.000000 C0.000000,0.000000 889.000000,0.000000 889.000000,0.000000 Z"); + let a = path_from_path_data("M889.000000,0.000000C889.000000,0.000000 889.000000,21.000000 898.000000,46.000000 C909.595887,78.210796 872.365858,104.085306 869.000000,147.000000 C865.000000,198.000000 915.000000,237.000000 933.000000,273.000000 C951.000000,309.000000 951.703704,335.407407 923.000000,349.000000 C898.996281,360.366922 881.000000,367.000000 902.000000,394.000000 C923.000000,421.000000 928.592593,431.407407 898.000000,468.000000 C912.888889,472.888889 929.333333,513.333333 896.000000,523.000000 C896.000000,523.000000 876.000000,533.333333 886.000000,572.000000 C896.458810,612.440732 873.333333,657.777778 802.666667,656.444444 C738.670245,655.236965 689.000000,643.000000 655.000000,636.000000 C621.000000,629.000000 604.000000,623.000000 585.000000,666.000000 C566.000000,709.000000 564.000000,768.000000 564.000000,768.000000 C564.000000,768.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 0.000000,0.000000 0.000000,0.000000 C0.000000,0.000000 889.000000,0.000000 889.000000,0.000000 Z" + ); let b = path_from_path_data( "M891.555556,569.382716C891.555556,569.382716 883.555556,577.777778 879.111111,595.851852 C874.666667,613.925926 857.185185,631.407407 830.814815,633.777778 C804.444444,636.148148 765.629630,637.925926 708.148148,616.296296 C650.666667,594.666667 560.666667,568.000000 468.000000,487.333333 C375.333333,406.666667 283.333333,354.666667 283.333333,354.666667 C332.000000,330.666667 373.407788,298.323579 468.479950,219.785706 C495.739209,197.267187 505.084065,165.580817 514.452332,146.721008 C525.711584,124.054345 577.519713,94.951389 589.958848,64.658436 C601.152263,37.399177 601.175694,0.000010 601.175694,0.000000 C601.175694,0.000000 0.000000,0.000000 0.000000,0.000000 C0.000000,0.000000 0.000000,768.000000 0.000000,768.000000 C0.000000,768.000000 891.555556,768.000000 891.555556,768.000000 C891.555556,768.000000 891.555556,569.382716 891.555556,569.382716 Z", ); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 0896c0d2e3f..73ef6ca866a 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -46,7 +46,7 @@ const INTERSECTION_TREE_DEPTH: usize = 8; const POINT_TREE_DEPTH: usize = 8; pub const EPS: Epsilons = Epsilons { - point: 1e-6, + point: 1e-5, linear: 1e-4, param: 1e-8, }; @@ -253,7 +253,7 @@ fn segment_to_edge(parent: u8) -> impl Fn(&PathSegment) -> Option { let direction = sample_path_segment_at(seg, 0.1); - if (*end - *start).angle_to(direction - *start).abs() < EPS.param * 4. { + if (*end - *start).angle_to(direction - *start).abs() < EPS.point * 4. { Some((PathSegment::Line(*start, *end), parent)) } else { Some((*seg, parent)) diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index fdc8a5296a7..f8ef99742b6 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -72,6 +72,22 @@ impl PathSegment { PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_curvature(), } } + pub fn to_cubic(&self) -> [DVec2; 4] { + match *self { + PathSegment::Line(start, end) => [start, start, end, end], + PathSegment::Cubic(s, c1, c2, e) => [s, c1, c2, e], + PathSegment::Quadratic(start, control, end) => { + // C0 = Q0 + // C1 = Q0 + (2/3) (Q1 - Q0) + // C2 = Q2 + (2/3) (Q1 - Q2) + // C3 = Q2 + let d1 = control - start; + let d2 = control - end; + [start, start + (2. / 3.) * d1, end + (2. / 3.) * d2, end] + } + PathSegment::Arc(..) => unimplemented!(), + } + } } pub struct PathArcSegmentCenterParametrization { diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 1d405c605dd..650bbc8e2fc 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -8,6 +8,7 @@ use graphene_core::{Color, GraphicElement, GraphicGroup}; use glam::{DAffine2, DVec2}; use path_bool::PathBooleanOperation; +use resvg::tiny_skia::PathSegment; #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; @@ -60,8 +61,8 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) while let Some(lower_vector_data) = next_vector_data { let transform_of_lower_into_space_of_upper = result.transform.inverse() * lower_vector_data.transform; - let upper_path_string = to_svg_string(&result, DAffine2::IDENTITY); - let lower_path_string = to_svg_string(lower_vector_data, transform_of_lower_into_space_of_upper); + let upper_path_string = to_path(&result, DAffine2::IDENTITY); + let lower_path_string = to_path(lower_vector_data, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_subtract(upper_path_string, lower_path_string) }; @@ -89,8 +90,8 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) while let Some(lower_vector_data) = second_vector_data { let transform_of_lower_into_space_of_upper = result.transform.inverse() * lower_vector_data.transform; - let upper_path_string = to_svg_string(&result, DAffine2::IDENTITY); - let lower_path_string = to_svg_string(lower_vector_data, transform_of_lower_into_space_of_upper); + let upper_path_string = to_path(&result, DAffine2::IDENTITY); + let lower_path_string = to_path(lower_vector_data, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_union(upper_path_string, lower_path_string) }; @@ -115,8 +116,8 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) while let Some(lower_vector_data) = second_vector_data { let transform_of_lower_into_space_of_upper = result.transform.inverse() * lower_vector_data.transform; - let upper_path_string = to_svg_string(&result, DAffine2::IDENTITY); - let lower_path_string = to_svg_string(lower_vector_data, transform_of_lower_into_space_of_upper); + let upper_path_string = to_path(&result, DAffine2::IDENTITY); + let lower_path_string = to_path(lower_vector_data, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_intersect(upper_path_string, lower_path_string) }; @@ -141,8 +142,8 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) let transform_of_lower_into_space_of_upper = all_other_vector_data.transform.inverse() * lower_vector_data.transform; - let upper_path_string = to_svg_string(&all_other_vector_data, DAffine2::IDENTITY); - let lower_path_string = to_svg_string(lower_vector_data, transform_of_lower_into_space_of_upper); + let upper_path_string = to_path(&all_other_vector_data, DAffine2::IDENTITY); + let lower_path_string = to_path(lower_vector_data, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] let boolean_intersection_string = unsafe { boolean_intersect(upper_path_string, lower_path_string) }; @@ -154,8 +155,8 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) let transform_of_lower_into_space_of_upper = boolean_intersection_result.transform.inverse() * any_intersection.transform; - let upper_path_string = to_svg_string(&boolean_intersection_result, DAffine2::IDENTITY); - let lower_path_string = to_svg_string(&any_intersection, transform_of_lower_into_space_of_upper); + let upper_path_string = to_path(&boolean_intersection_result, DAffine2::IDENTITY); + let lower_path_string = to_path(&any_intersection, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] let union_result = from_svg_string(&unsafe { boolean_union(upper_path_string, lower_path_string) }); @@ -194,6 +195,52 @@ fn to_svg_string(vector: &VectorData, transform: DAffine2) -> String { path } +fn to_path(vector: &VectorData, transform: DAffine2) -> Vec { + let mut path = Vec::new(); + for subpath in vector.stroke_bezier_paths() { + to_path_segments(&mut path, &subpath, transform); + } + path +} + +fn to_path_segments(path: &mut Vec, subpath: &bezier_rs::Subpath, transform: DAffine2) { + use path_bool::PathSegment; + for bezier in subpath.iter() { + let transformed = bezier.apply_transformation(|pos| transform.transform_point2(pos)); + let start = transformed.start; + let end = transformed.end; + let segment = match transformed.handles { + bezier_rs::BezierHandles::Linear => PathSegment::Line(start, end), + bezier_rs::BezierHandles::Quadratic { handle } => PathSegment::Quadratic(start, handle, end), + bezier_rs::BezierHandles::Cubic { handle_start, handle_end } => PathSegment::Cubic(start, handle_start, handle_end, end), + }; + path.push(segment); + } +} +fn from_path(path_data: &[Path]) -> VectorData { + let subpaths = path_data.iter().filter(|path| !path.is_empty()).map(|path| { + let mut cubics: Vec<_> = path.iter().map(|segment| segment.to_cubic()).collect(); + if cubics.len() > 1 { + cubics.push(cubics[0]); + } + + let groups: Vec> = cubics + .windows(2) + .map(|window| { + let end = window[1][0]; + let in_handle = window[0][2]; + let out_handle = window[1][1]; + + ManipulatorGroup::new(end, Some(in_handle), Some(out_handle)) + }) + .collect(); + + // Create a Subpath from the groups + Subpath::new(groups, true) + }); + VectorData::from_subpaths(subpaths, false) +} + fn from_svg_string(svg_string: &str) -> VectorData { let svg = format!(r#""#, svg_string); let Some(tree) = usvg::Tree::from_str(&svg, &Default::default()).ok() else { @@ -261,29 +308,33 @@ pub fn convert_usvg_path(path: &usvg::Path) -> Vec> { // fn boolean_intersect(path1: String, path2: String) -> String; // } // #[cfg(not(target_arch = "wasm32"))] -fn boolean_union(a: String, b: String) -> String { + +type Path = Vec; +fn boolean_union(a: Path, b: Path) -> String { path_bool(a, b, PathBooleanOperation::Union) } -fn path_bool(a: String, b: String, op: PathBooleanOperation) -> String { +fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { use path_bool::FillRule; - let a_path = path_bool::path_from_path_data(&a); - let b_path = path_bool::path_from_path_data(&b); - let results = match path_bool::path_boolean(&a_path, FillRule::NonZero, &b_path, FillRule::NonZero, op) { + // let a_path = path_bool::path_from_path_data(&a); + // let b_path = path_bool::path_from_path_data(&b); + // log::error!("Boolean error encontered while processing {a}\n {op:?}\n {b}"); + let results = match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { Ok(results) => results, Err(e) => { - log::error!("Boolean error {e:?} encontered while processing {a} {op:?} {b}"); + // log::error!("Boolean error {e:?} encontered while processing {a}\n {op:?}\n {b}"); Vec::new() } }; - + //results results.iter().map(|result| path_bool::path_to_path_data(result, 0.00001)).fold(String::new(), |o, n| o + &n) } + // #[cfg(not(target_arch = "wasm32"))] -fn boolean_subtract(a: String, b: String) -> String { +fn boolean_subtract(a: Path, b: Path) -> String { path_bool(a, b, PathBooleanOperation::Difference) } // #[cfg(not(target_arch = "wasm32"))] -fn boolean_intersect(a: String, b: String) -> String { +fn boolean_intersect(a: Path, b: Path) -> String { path_bool(a, b, PathBooleanOperation::Intersection) } From a4c33d47c9a7c6f365006c8ddd7db8f8583b50ea Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 14:52:22 +0200 Subject: [PATCH 23/39] Round data before passing it to path_bool --- libraries/path-bool/src/lib.rs | 18 ++++++++++++++++++ node-graph/gstd/src/vector.rs | 24 +++++++++++++++++++----- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 38306c03409..7ff7eb4dba4 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -201,6 +201,24 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_6() { + let a = path_from_path_data( + "M 889.000000000000,0.000000000000 C 889.000000000000,0.000000000000 889.000000000000,21.000000000000 898.000000000000,46.000000000000 C 909.595886737767,78.210796493798 872.365858386032,104.085305578099 869.000000000000,147.000000000000 C 865.000000000000,198.000000000000 915.000000000000,237.000000000000 933.000000000000,273.000000000000 C 951.000000000000,309.000000000000 951.703703703704,335.407407407408 923.000000000000,349.000000000000 C 898.996280855823,360.366922485049 881.000000000000,367.000000000000 902.000000000000,394.000000000000 C 923.000000000000,421.000000000000 928.592592592593,431.407407407407 898.000000000000,468.000000000000 C 912.888888888889,472.888888888889 929.333333333333,513.333333333333 896.000000000000,523.000000000000 C 896.000000000000,523.000000000000 876.000000000000,533.333333333333 886.000000000000,572.000000000000 C 896.458809984598,612.440731940445 873.333333333333,657.777777777778 802.666666666667,656.444444444444 C 738.670244947304,655.236964789362 689.000000000000,643.000000000000 655.000000000000,636.000000000000 C 621.000000000000,629.000000000000 604.000000000000,623.000000000000 585.000000000000,666.000000000000 C 566.000000000000,709.000000000000 564.000000000000,768.000000000000 564.000000000000,768.000000000000 C 564.000000000000,768.000000000000 0.000000000000,768.000000000000 0.000000000000,768.000000000000 C 0.000000000000,768.000000000000 0.000000000000,0.000000000000 0.000000000000,0.000000000000 C 0.000000000000,0.000000000000 889.000000000000,0.000000000000 889.000000000000,0.000000000000 +" + ); + let b = path_from_path_data( + " M 552.000000000000,768.000000000000 C 552.000000000000,768.000000000000 993.000000000000,768.000000000000 993.000000000000,768.000000000000 C 993.000000000000,768.000000000000 1068.918039357179,682.462471292083 1093.000000000000,600.000000000000 C 1126.000000000000,487.000000000000 1007.352460449599,357.386070848058 957.000000000000,324.000000000000 C 906.647539550401,290.613929151942 842.000000000000,253.000000000000 740.000000000000,298.000000000000 C 638.000000000000,343.000000000000 491.342037690766,421.999263404310 491.342037690766,506.753005131374 C 491.342037690766,641.999410660930 552.000000000000,768.000000000000 552.000000000000,768.000000000000", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 650bbc8e2fc..1bd444f29bc 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -1,3 +1,5 @@ +use std::ops::{Div, Mul}; + use crate::Node; use bezier_rs::{ManipulatorGroup, Subpath}; @@ -206,7 +208,7 @@ fn to_path(vector: &VectorData, transform: DAffine2) -> Vec, subpath: &bezier_rs::Subpath, transform: DAffine2) { use path_bool::PathSegment; for bezier in subpath.iter() { - let transformed = bezier.apply_transformation(|pos| transform.transform_point2(pos)); + let transformed = bezier.apply_transformation(|pos| transform.transform_point2(pos).mul(10000.).round().div(10000.)); let start = transformed.start; let end = transformed.end; let segment = match transformed.handles { @@ -216,6 +218,12 @@ fn to_path_segments(path: &mut Vec, subpath: &bezier_rs: }; path.push(segment); } + if subpath.len() > 1 { + // TODO: make more efficient + let start = subpath.iter().next().unwrap().start; + let end = subpath.iter().last().unwrap().end; + path.push(PathSegment::Line(end, start)); + } } fn from_path(path_data: &[Path]) -> VectorData { let subpaths = path_data.iter().filter(|path| !path.is_empty()).map(|path| { @@ -316,9 +324,13 @@ fn boolean_union(a: Path, b: Path) -> String { fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { use path_bool::FillRule; - // let a_path = path_bool::path_from_path_data(&a); - // let b_path = path_bool::path_from_path_data(&b); - // log::error!("Boolean error encontered while processing {a}\n {op:?}\n {b}"); + let a_path = path_bool::path_to_path_data(&a, 0.001); + let b_path = path_bool::path_to_path_data(&b, 0.001); + // log::debug!("{:?}\n{:?}", a, b); + // let a = path_bool::path_from_path_data(&a_path); + // let b = path_bool::path_from_path_data(&b_path); + // log::debug!("{:?}\n{:?}", a, b); + // log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); let results = match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { Ok(results) => results, Err(e) => { @@ -327,7 +339,9 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { } }; //results - results.iter().map(|result| path_bool::path_to_path_data(result, 0.00001)).fold(String::new(), |o, n| o + &n) + let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); + // log::debug!("result: {}", string); + string } // #[cfg(not(target_arch = "wasm32"))] From 88c72ae44f8df4237733f8eb01fd0a0dccc0a5c4 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 15:55:29 +0200 Subject: [PATCH 24/39] Fix flag_faces traversal order --- libraries/path-bool/src/lib.rs | 5 ++--- libraries/path-bool/src/path_boolean.rs | 30 ++++++++++++++++++++++--- node-graph/gstd/src/vector.rs | 14 ++++-------- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 7ff7eb4dba4..7740bc1cafa 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -210,11 +210,10 @@ mod test { #[test] fn painted_dreams_6() { let a = path_from_path_data( - "M 889.000000000000,0.000000000000 C 889.000000000000,0.000000000000 889.000000000000,21.000000000000 898.000000000000,46.000000000000 C 909.595886737767,78.210796493798 872.365858386032,104.085305578099 869.000000000000,147.000000000000 C 865.000000000000,198.000000000000 915.000000000000,237.000000000000 933.000000000000,273.000000000000 C 951.000000000000,309.000000000000 951.703703703704,335.407407407408 923.000000000000,349.000000000000 C 898.996280855823,360.366922485049 881.000000000000,367.000000000000 902.000000000000,394.000000000000 C 923.000000000000,421.000000000000 928.592592592593,431.407407407407 898.000000000000,468.000000000000 C 912.888888888889,472.888888888889 929.333333333333,513.333333333333 896.000000000000,523.000000000000 C 896.000000000000,523.000000000000 876.000000000000,533.333333333333 886.000000000000,572.000000000000 C 896.458809984598,612.440731940445 873.333333333333,657.777777777778 802.666666666667,656.444444444444 C 738.670244947304,655.236964789362 689.000000000000,643.000000000000 655.000000000000,636.000000000000 C 621.000000000000,629.000000000000 604.000000000000,623.000000000000 585.000000000000,666.000000000000 C 566.000000000000,709.000000000000 564.000000000000,768.000000000000 564.000000000000,768.000000000000 C 564.000000000000,768.000000000000 0.000000000000,768.000000000000 0.000000000000,768.000000000000 C 0.000000000000,768.000000000000 0.000000000000,0.000000000000 0.000000000000,0.000000000000 C 0.000000000000,0.000000000000 889.000000000000,0.000000000000 889.000000000000,0.000000000000 -" + "M 969.000000000000,0.000000000000 C 969.000000000000,0.000000000000 1110.066900000000,76.934400000000 1085.000000000000,181.000000000000 C 1052.000000000000,318.000000000000 1199.180600000000,334.301600000000 1277.000000000000,319.000000000000 C 1455.000000000000,284.000000000000 1587.000000000000,81.000000000000 1418.000000000000,0.000000000000 C 1418.000000000000,0.000000000000 969.000000000000,0.000000000000 969.000000000000,0.000000000000 L 969.000000000000,0.000000000000" ); let b = path_from_path_data( - " M 552.000000000000,768.000000000000 C 552.000000000000,768.000000000000 993.000000000000,768.000000000000 993.000000000000,768.000000000000 C 993.000000000000,768.000000000000 1068.918039357179,682.462471292083 1093.000000000000,600.000000000000 C 1126.000000000000,487.000000000000 1007.352460449599,357.386070848058 957.000000000000,324.000000000000 C 906.647539550401,290.613929151942 842.000000000000,253.000000000000 740.000000000000,298.000000000000 C 638.000000000000,343.000000000000 491.342037690766,421.999263404310 491.342037690766,506.753005131374 C 491.342037690766,641.999410660930 552.000000000000,768.000000000000 552.000000000000,768.000000000000", + "M 763.000000000000,0.000000000000 C 763.000000000000,0.000000000000 1536.000000000000,0.000000000000 1536.000000000000,0.000000000000 C 1536.000000000000,0.000000000000 1536.000000000000,254.000000000000 1536.000000000000,254.000000000000 C 1536.000000000000,254.000000000000 1462.000000000000,93.000000000000 1271.000000000000,199.000000000000 C 1149.163100000000,266.616300000000 976.413700000000,188.510800000000 908.000000000000,134.000000000000 C 839.586300000000,79.489200000000 763.000000000000,0.000000000000 763.000000000000,0.000000000000 L 763.000000000000,0.000000000000", ); let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 73ef6ca866a..42e2f1ff03c 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -881,6 +881,12 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { eprintln!("faces: {}, dual-edges: {}, cycles: {}", new_vertices.len(), dual_edges.len(), minor_graph.cycles.len()) } + // This can be very useful for debugging: + // Copy the face outlines to a file called faces_combined.csv and then use this + // gnuplot command: + // `plot 'faces_combined.csv' i 0:99 w l, 'faces_combined.csv' index 0 w l lc 'red'` + // the first part of the command plots all faces to the graph and the second comand + // plots one surface, specifed by the index, in red. This allows you to check if all surfaces are closed paths and can be used in conjunction with the flag debugging to identify issues later down the line as well #[cfg(feature = "logging")] for (vertex_key, vertex) in &dual_vertices { eprintln!("\n\n#{:?}", vertex_key.0); @@ -965,12 +971,21 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { // return Err(BooleanError::MultipleOuterFaces); #[cfg(feature = "logging")] eprintln!("Found multiple outer faces: {areas:?}, falling back to area calculation"); - *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap().0 + let (key, area) = *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap(); + if area < 0. { + reverse_winding = true; + } + *key } else { *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0 }; #[cfg(feature = "logging")] dbg!(outer_face_key); + if reverse_winding { + for &edge in component_edges.iter() { + // dual_edges[edge].direction_flag = !dual_edges[edge].direction_flag; + } + } components.push(DualGraphComponent { vertices: component_vertices, @@ -1146,12 +1161,13 @@ fn flag_faces( let outer_face_key = current_tree.component.outer_face.expect("Component doesn't have an outer face."); face_stack.push_back((outer_face_key, a_running_count, b_running_count)); - while let Some((face_key, a_count, b_count)) = face_stack.pop_back() { + while let Some((face_key, a_count, b_count)) = face_stack.pop_front() { if visited_faces.contains(&face_key) { continue; } visited_faces.insert(face_key); + dbg!(face_key, a_count, b_count); let a_flag = get_flag(a_count, a_fill_rule); let b_flag = get_flag(b_count, b_fill_rule); *flags.entry(face_key).or_default() = a_flag | (b_flag << 1); @@ -1159,6 +1175,8 @@ fn flag_faces( for edge_key in &vertices[face_key].incident_edges { let edge = &edges[*edge_key]; let twin_key = edge.twin.expect("Edge doesn't have a twin"); + #[cfg(feature = "logging")] + eprintln!("Processing edge: {:?} to: {:?}", edge_key.0, edges[twin_key].incident_vertex.0); let mut next_a_count = a_count; if edge.parent & 1 != 0 { next_a_count += if edge.direction_flag.forward() { 1 } else { -1 }; @@ -1167,6 +1185,8 @@ fn flag_faces( if edge.parent & 2 != 0 { next_b_count += if edge.direction_flag.forward() { 1 } else { -1 }; } + #[cfg(feature = "logging")] + eprintln!("next_count a: {}, b:{}", next_a_count, next_b_count); face_stack.push_back((edges[twin_key].incident_vertex, next_a_count, next_b_count)); } @@ -1181,7 +1201,6 @@ fn flag_faces( } } -// TODO(@Truedoctor): Check if we can just iterate over the flags fn get_selected_faces<'a>(predicate: &'a impl Fn(u8) -> bool, flags: &'a HashMap) -> impl Iterator + 'a { flags.iter().filter_map(|(key, &flag)| predicate(flag).then_some(*key)) } @@ -1379,6 +1398,11 @@ pub fn path_boolean(a: &Path, a_fill_rule: FillRule, b: &Path, b_fill_rule: Fill let nesting_trees = compute_nesting_tree(&dual_graph); + #[cfg(feature = "logging")] + for tree in &nesting_trees { + eprintln!("nesting_trees: {:?}", tree); + } + let DualGraph { edges, vertices, .. } = &dual_graph; #[cfg(feature = "logging")] diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 1bd444f29bc..ff6cf44244f 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -218,12 +218,6 @@ fn to_path_segments(path: &mut Vec, subpath: &bezier_rs: }; path.push(segment); } - if subpath.len() > 1 { - // TODO: make more efficient - let start = subpath.iter().next().unwrap().start; - let end = subpath.iter().last().unwrap().end; - path.push(PathSegment::Line(end, start)); - } } fn from_path(path_data: &[Path]) -> VectorData { let subpaths = path_data.iter().filter(|path| !path.is_empty()).map(|path| { @@ -327,10 +321,10 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { let a_path = path_bool::path_to_path_data(&a, 0.001); let b_path = path_bool::path_to_path_data(&b, 0.001); // log::debug!("{:?}\n{:?}", a, b); - // let a = path_bool::path_from_path_data(&a_path); - // let b = path_bool::path_from_path_data(&b_path); + let a = path_bool::path_from_path_data(&a_path); + let b = path_bool::path_from_path_data(&b_path); // log::debug!("{:?}\n{:?}", a, b); - // log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); + log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); let results = match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { Ok(results) => results, Err(e) => { @@ -340,7 +334,7 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { }; //results let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); - // log::debug!("result: {}", string); + log::debug!("result: {}", string); string } From 3acce4ede5f08ad92200a3f7cb6fab595f4a3ecc Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 16:49:13 +0200 Subject: [PATCH 25/39] Add test for white dots in bottom right of painted dreams --- libraries/path-bool/src/lib.rs | 17 +++++++++++++++++ libraries/path-bool/src/path_boolean.rs | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 7740bc1cafa..e4e74956cd0 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -218,6 +218,23 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Intersection).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn painted_dreams_7() { + let a = path_from_path_data( + "M 989.666700000000,768.000000000000 C 989.666700000000,768.000000000000 1011.111100000000,786.399400000000 1011.111100000000,786.399400000000 C 1011.111100000000,786.399400000000 1299.306500000000,786.399400000000 1299.306500000000,786.399400000000 C 1299.306500000000,786.399400000000 1318.000000000000,768.000000000000 1318.000000000000,768.000000000000 C 1293.666700000000,681.000000000000 1173.363200000000,625.103600000000 1094.162400000000,594.296600000000 C 1094.162400000000,594.296600000000 1058.747200000000,687.805800000000 989.666700000000,768.000000000000" + ); + let b = path_from_path_data( + "M 983.155000000000,775.589300000000 L 1004.599400000000,793.988700000000 L 1007.409000000000,796.399400000000 L 1011.111100000000,796.399400000000 L 1299.306500000000,796.399400000000 L 1303.402200000000,796.399400000000 L 1306.321200000000,793.526300000000 L 1325.014800000000,775.126900000000 L 1329.236900000000,770.971200000000 L 1327.630400000000,765.306400000000 C 1302.280700000000,675.920800000000 1179.503900000000,617.211200000000 1097.787500000000,584.976800000000 L 1088.418100000000,581.280900000000 L 1084.806400000000,590.765700000000 C 1084.117400000000,592.575300000000 1049.449700000000,683.516200000000 982.090100000000,761.473400000000 L 975.539200000000,769.055000000000 L 983.155000000000,775.589300000000 M 1003.696800000000,766.861600000000 C 1068.901100000000,687.878900000000 1102.806400000000,599.696700000000 1103.497000000000,597.883400000000 L 1090.537200000000,603.616300000000 C 1165.521500000000,632.344400000000 1279.846400000000,683.736400000000 1306.585700000000,765.203400000000 L 1295.210700000000,776.399400000000 L 1014.813100000000,776.399400000000 L 1003.696800000000,766.861600000000", + ); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 42e2f1ff03c..eebed7a9ae9 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1167,7 +1167,7 @@ fn flag_faces( } visited_faces.insert(face_key); - dbg!(face_key, a_count, b_count); + // dbg!(face_key, a_count, b_count); let a_flag = get_flag(a_count, a_fill_rule); let b_flag = get_flag(b_count, b_fill_rule); *flags.entry(face_key).or_default() = a_flag | (b_flag << 1); From 2047c599eb065a5a903d13904782c498e48f139b Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 17:26:49 +0200 Subject: [PATCH 26/39] Make rounding configurable --- node-graph/gstd/src/vector.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index ff6cf44244f..5806a911cbe 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -208,7 +208,8 @@ fn to_path(vector: &VectorData, transform: DAffine2) -> Vec, subpath: &bezier_rs::Subpath, transform: DAffine2) { use path_bool::PathSegment; for bezier in subpath.iter() { - let transformed = bezier.apply_transformation(|pos| transform.transform_point2(pos).mul(10000.).round().div(10000.)); + const EPS: f64 = 1e-8; + let transformed = bezier.apply_transformation(|pos| transform.transform_point2(pos).mul(EPS.recip()).round().div(EPS.recip())); let start = transformed.start; let end = transformed.end; let segment = match transformed.handles { @@ -321,10 +322,10 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { let a_path = path_bool::path_to_path_data(&a, 0.001); let b_path = path_bool::path_to_path_data(&b, 0.001); // log::debug!("{:?}\n{:?}", a, b); - let a = path_bool::path_from_path_data(&a_path); - let b = path_bool::path_from_path_data(&b_path); + // let a = path_bool::path_from_path_data(&a_path); + // let b = path_bool::path_from_path_data(&b_path); // log::debug!("{:?}\n{:?}", a, b); - log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); + // log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); let results = match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { Ok(results) => results, Err(e) => { @@ -334,7 +335,7 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { }; //results let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); - log::debug!("result: {}", string); + // log::debug!("result: {}", string); string } From 50e2db0058c191b7a920e820a9c4c55d585fb227 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 17:31:58 +0200 Subject: [PATCH 27/39] Update demo artwork to remove manual path modifications --- demo-artwork/painted-dreams.graphite | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo-artwork/painted-dreams.graphite b/demo-artwork/painted-dreams.graphite index 5666a682244..b097d3fd981 100644 --- a/demo-artwork/painted-dreams.graphite +++ b/demo-artwork/painted-dreams.graphite @@ -1 +1 @@ -{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[301778328144628917,[493.5149940383244,200.29629629629628]],[13357220652574593654,[574.2222222222222,108.44444444444449]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[18118267825025549699,[642.0740740740741,0.0]],[533731991408535384,[501.6296296296296,175.40740740740742]],[6351696498298648253,[646.8148148148149,0.0]],[17863574903157697896,[606.8148151308641,95.19407372365433]],[15992617814592812350,[621.0370370370368,0.0]],[4691860614575868200,[528.2962962962963,283.8518518518518]],[10625296323957562985,[473.4814814814815,272.5925925925926]],[6379137305818664393,[625.4814814814813,0.0]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[3710133387837274291,15992617814592812350],[3384102572540409881,18442321214082298093],[3303411878775644985,301778328144628917],[11346538709718766144,13357220652574593654],[10146665273368938971,6351696498298648253],[8462655819889292900,4691860614575868200],[12035095010819582754,18118267825025549699],[13662059715350867364,6379137305818664393],[8661113083384527971,10625296323957562985],[318560030360358929,17863574903157697896],[2035327810332855521,533731991408535384]],"end_point":[[3384102572540409881,18118267825025549699],[10146665273368938971,17863574903157697896],[12035095010819582754,6351696498298648253],[3710133387837274291,6379137305818664393],[3303411878775644985,10625296323957562985],[318560030360358929,4691860614575868200],[8661113083384527971,533731991408535384],[8462655819889292900,301778328144628917],[13662059715350867364,18442321214082298093],[11346538709718766144,15992617814592812350],[2035327810332855521,13357220652574593654]],"handle_primary":[[8462655819889292900,[0.0,0.0]],[10146665273368938971,[0.0,0.0]],[318560030360358929,[-46.95465552079859,46.40007297527743]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[12035095010819582754,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[3384102572540409881,[0.0,0.0]],[3710133387837274291,[0.0,0.0]],[3303411878775644985,[0.0,0.0]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[13662059715350867364,[0.0,0.0]]],"handle_end":[[3710133387837274291,[0.0,0.0]],[8462655819889292900,[-21.74426522093495,47.99999999999997]],[318560030360358929,[-97.48148148148152,-81.18518518518522]],[3384102572540409881,[0.5807410754567854,77.36888852918523]],[12035095010819582754,[0.0,0.0]],[11346538709718766144,[1.1377781018271662,63.71555518874077]],[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[13662059715350867364,[68.68148181185177,-54.8859262904691]]],"stroke":[[11346538709718766144,0],[10146665273368938971,0],[12035095010819582754,0],[3710133387837274291,0],[3303411878775644985,0],[3384102572540409881,0],[13662059715350867364,0],[318560030360358929,0],[8462655819889292900,0],[8661113083384527971,0],[2035327810332855521,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}],[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}],[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[17520941196305861319,[889.0,0.0]],[6029995238423674441,[898.0,46.0]],[17339925811006567497,[898.0,468.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[4723170318056755559,[923.0,349.0]],[13279221198527484331,[564.0,768.0]],[1541401134848201833,[886.0,572.0]],[11084016020553554647,[655.0,636.0]],[15701538241214188894,[0.0,0.0]],[12817219955590128894,[933.0,273.0]],[9729762716079513741,[585.0,666.0]],[16590926169549948521,[869.0,147.0]],[12317789037775437786,[902.0,394.0]],[4659274885664969740,[896.0,523.0]],[7727030009292816503,[0.0,768.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[8832757535144158913,17339925811006567497],[4806484166818510930,6029995238423674441],[862900208337901235,17520941196305861319],[3307452201570141575,7727030009292816503],[9730229894941201870,4723170318056755559],[16631919016540861133,17321098837874422287],[9808624553037921371,12817219955590128894],[9314952320711038398,11084016020553554647],[14740183693208469558,13279221198527484331],[15056691877609602335,4659274885664969740],[10137845066833192587,9729762716079513741],[8919277736361106420,1541401134848201833],[3876401232874291775,15701538241214188894],[11569179934425192262,16590926169549948521],[1248401493076165062,12317789037775437786]],"end_point":[[9314952320711038398,9729762716079513741],[9808624553037921371,4723170318056755559],[14740183693208469558,7727030009292816503],[8832757535144158913,4659274885664969740],[10137845066833192587,13279221198527484331],[862900208337901235,6029995238423674441],[11569179934425192262,12817219955590128894],[4806484166818510930,16590926169549948521],[15056691877609602335,1541401134848201833],[16631919016540861133,11084016020553554647],[3876401232874291775,17520941196305861319],[3307452201570141575,15701538241214188894],[8919277736361106420,17321098837874422287],[1248401493076165062,17339925811006567497],[9730229894941201870,12317789037775437786]],"handle_primary":[[4806484166818510930,[11.595886737767424,32.210796493798]],[9730229894941201870,[-24.00371914417652,11.366922485048674]],[9808624553037921371,[18.0,36.0]],[15056691877609602335,[0.0,0.0]],[9314952320711038398,[-34.0,-7.0]],[3876401232874291775,[0.0,0.0]],[14740183693208469558,[0.0,0.0]],[10137845066833192587,[-19.0,43.0]],[11569179934425192262,[-4.0,51.0]],[8832757535144158913,[14.888888888888914,4.8888888888888005]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[3307452201570141575,[0.0,0.0]],[862900208337901235,[0.0,0.0]],[1248401493076165062,[21.0,27.0]],[8919277736361106420,[10.458809984597837,40.44073194044492]]],"handle_end":[[862900208337901235,[-9.000000000000114,-25.0]],[14740183693208469558,[0.0,0.0]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[3876401232874291775,[0.0,0.0]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[10137845066833192587,[0.0,0.0]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[3307452201570141575,[0.0,0.0]],[9314952320711038398,[19.0,-43.0]],[16631919016540861133,[34.0,7.0]],[15056691877609602335,[-10.0,-38.66666666666663]],[9808624553037921371,[28.703703703703695,-13.592592592592496]],[11569179934425192262,[-18.0,-36.0]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[9730229894941201870,[-21.0,-27.0]]],"stroke":[[3307452201570141575,0],[10137845066833192587,0],[862900208337901235,0],[8832757535144158913,0],[8919277736361106420,0],[14740183693208469558,0],[9314952320711038398,0],[4806484166818510930,0],[16631919016540861133,0],[1248401493076165062,0],[15056691877609602335,0],[11569179934425192262,0],[3876401232874291775,0],[9808624553037921371,0],[9730229894941201870,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9577388580635291078,[1536.0,0.0]],[3249248431686392864,[1536.0,95.0]],[9346093213164033195,[1211.0,0.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[9585086796709645600,9346093213164033195],[1147165232046305110,9577388580635291078],[13980191878100735848,3249248431686392864]],"end_point":[[1147165232046305110,9346093213164033195],[9585086796709645600,3249248431686392864],[13980191878100735848,9577388580635291078]],"handle_primary":[[9585086796709645600,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]],[1147165232046305110,[0.0,0.0]]],"handle_end":[[9585086796709645600,[-281.0,-17.00000000000003]],[13980191878100735848,[0.0,0.0]],[1147165232046305110,[0.0,0.0]]],"stroke":[[1147165232046305110,0],[13980191878100735848,0],[9585086796709645600,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[1078998931754662073,[942.0246913580248,264.2962962962963]],[8048619563638005414,[944.0577392578124,302.0703430175781]],[3251241957527197760,[875.8001811251517,185.6784024477276]],[11100418327549747778,[910.880658436214,243.0946502057613]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[10795897848378052161,11100418327549747778],[6165219920202055745,3251241957527197760],[12551435438068218604,1078998931754662073],[3439025775805007707,8048619563638005414]],"end_point":[[6165219920202055745,11100418327549747778],[10795897848378052161,8048619563638005414],[3439025775805007707,1078998931754662073],[12551435438068218604,3251241957527197760]],"handle_primary":[[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[6165219920202055745,[0.0,0.0]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]],[10795897848378052161,[11.46027223334628,13.82427457744465]]],"handle_end":[[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[12551435438068218604,[23.33217876876199,5.204454965879364]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]],[3439025775805007707,[14.61728395061732,27.456790123456813]]],"stroke":[[12551435438068218604,0],[10795897848378052161,0],[3439025775805007707,0],[6165219920202055745,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}],[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[4481635366652149569,[684.8888888888889,395.55555555555554]],[4765910415851982345,[283.33331298828125,354.6666564941406]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[1608608093193158603,[609.7777777777777,620.0]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[3983292299330016176,1608608093193158603],[8024777209266880257,4481635366652149569],[3045825504718908919,4475009837548700636],[11103925991989272298,4765910415851982345]],"end_point":[[3045825504718908919,4481635366652149569],[3983292299330016176,4765910415851982345],[11103925991989272298,4475009837548700636],[8024777209266880257,1608608093193158603]],"handle_primary":[[3045825504718908919,[62.22222222222217,43.111111111111086]],[3983292299330016176,[0.0,0.0]],[11103925991989272298,[0.0,0.0]],[8024777209266880257,[11.111111111111086,62.22222222222217]]],"handle_end":[[11103925991989272298,[-113.5844024581724,39.08097956276566]],[3983292299330016176,[0.0,0.0]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]],[8024777209266880257,[34.66666666666674,-85.33333333333337]]],"stroke":[[8024777209266880257,0],[11103925991989272298,0],[3983292299330016176,0],[3045825504718908919,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}],[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}]],"remove_g1_continuous":[[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[425878374398720476,[898.633744855967,207.99999999999997]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[9658821733796680583,[920.5925925925926,208.0]],[5496457317579994340,[929.3607681755832,198.40877914951983]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[10872099980755217048,[889.0,0.0]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[13961346931609713434,13049263474526562389],[9187894839116405225,9658821733796680583],[6443321953815072406,2409359561719399794],[6545223889678917273,14263506369487797530],[16241193756011776206,10872099980755217048],[9745298522639115232,5496457317579994340],[13223251807271379465,9175973472325454282],[8058164935346100149,7125168137854779179],[5210886161307886529,425878374398720476],[11050813873332011119,5252668597335249558]],"end_point":[[11050813873332011119,10872099980755217048],[6443321953815072406,9175973472325454282],[9187894839116405225,425878374398720476],[13223251807271379465,14263506369487797530],[9745298522639115232,7125168137854779179],[5210886161307886529,5252668597335249558],[16241193756011776206,13049263474526562389],[6545223889678917273,5496457317579994340],[8058164935346100149,9658821733796680583],[13961346931609713434,2409359561719399794]],"handle_primary":[[16241193756011776206,[0.0,0.0]],[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[8058164935346100149,[0.0,0.0]],[9187894839116405225,[-8.263374485596842,1.880201188843188]],[9745298522639115232,[0.0,0.0]],[6545223889678917273,[0.0,0.0]],[6443321953815072406,[-9.144953020396894,24.145964868041293]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]]],"handle_end":[[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]],[9745298522639115232,[7.703703703703695,-2.074074074074076]],[13961346931609713434,[10.984910836762538,-29.00411522633746]]],"stroke":[[9745298522639115232,0],[13961346931609713434,0],[9187894839116405225,0],[6545223889678917273,0],[13223251807271379465,0],[11050813873332011119,0],[8058164935346100149,0],[16241193756011776206,0],[5210886161307886529,0],[6443321953815072406,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}],[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}],[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[3749627916562964805,[866.172839506173,558.2222222222224]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[15695128662656633322,[825.6790123456792,509.4320987654323]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[6781153531246981076,[872.6913580246915,513.7777777777779]],[2535476870476707501,[887.5061728395062,568.6913580246915]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[12599396287665855262,[902.5185185185188,498.56790123456807]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[17761347836385237495,6164201091766276213],[14847678502054094837,10333377922713208038],[14489254209548096966,15695128662656633322],[264894972572137143,2535476870476707501],[15700595221504820396,10786213048155734586],[14515109677644612103,3749627916562964805],[3021925106447084698,6781153531246981076],[6369399239389505343,12599396287665855262],[3461110970422306113,8241402276734357681]],"end_point":[[3021925106447084698,15695128662656633322],[6369399239389505343,6164201091766276213],[14847678502054094837,3749627916562964805],[14515109677644612103,2535476870476707501],[14489254209548096966,8241402276734357681],[3461110970422306113,10333377922713208038],[264894972572137143,10786213048155734586],[15700595221504820396,12599396287665855262],[17761347836385237495,6781153531246981076]],"handle_primary":[[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[3461110970422306113,[0.38915905346209456,1.493515242756871]],[3021925106447084698,[-16.59259259259261,2.370370370370324]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[264894972572137143,[0.0,0.0]],[17761347836385237495,[0.0,0.0]],[14515109677644612103,[8.888888888888914,0.0]],[15700595221504820396,[0.0,0.0]]],"handle_end":[[264894972572137143,[3.753086419753003,37.1358024691358]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]],[14515109677644612103,[0.0,0.0]],[6369399239389505343,[0.0,0.0]],[15700595221504820396,[7.1111111111111995,5.530864197530889]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[17761347836385237495,[16.59259259259261,-2.370370370370324]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[14847678502054094837,[-8.888888888888914,0.0]]],"stroke":[[17761347836385237495,0],[15700595221504820396,0],[14847678502054094837,0],[14489254209548096966,0],[6369399239389505343,0],[264894972572137143,0],[3461110970422306113,0],[14515109677644612103,0],[3021925106447084698,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}],[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[8055802412900565217,[480.4444444444445,219.7777777777778]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[13416153271806375161,[531.8518518518517,131.2592592592593]],[4609870404630548899,[589.432098765432,64.79012345679011]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[177515045030371783,[604.2883706752018,0.0]],[2492294980235986276,[604.4434936307387,42.970116997735616]],[16230687409600568539,[491.55555555555554,311.55555555555566]],[12909592102393222573,[607.8024691358027,0.0]],[12390708657704154619,[596.6748971193416,72.42798353909465]],[6873550371723398444,[538.6666666666667,136.0]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[5057709998225566481,17843645051722826880,11060716078587457450,17799038492181728804,16939098306153440303],"start_point":[[921651403153242564,4609870404630548899],[12529947318087068663,177515045030371783],[2463526518527501592,8055802412900565217],[3818841110886669992,7624137673235413199],[4341232355541306629,12390708657704154619],[9825559201153691780,13416153271806375161],[15749222431214672690,2492294980235986276],[9361245670457788924,6873550371723398444],[5578827639764758986,1458337690478625792],[14294722277069184337,12448133448335459077],[1705877195608053135,16230687409600568539]],"end_point":[[9361245670457788924,12390708657704154619],[12529947318087068663,4609870404630548899],[1705877195608053135,8055802412900565217],[921651403153242564,13416153271806375161],[15749222431214672690,12909592102393222573],[3818841110886669992,12448133448335459077],[4341232355541306629,7624137673235413199],[5578827639764758986,16230687409600568539],[14294722277069184337,2492294980235986276],[2463526518527501592,6873550371723398444],[9825559201153691780,1458337690478625792]],"handle_primary":[[14294722277069184337,[-0.2633744855968416,28.576131687242796]],[15749222431214672690,[3.877242131088792,-22.333682252383095]],[1705877195608053135,[0.0,0.0]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[5578827639764758986,[-19.25925925925924,60.44444444444443]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[3818841110886669992,[0.0,0.0]],[12529947318087068663,[0.0,0.0]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[9825559201153691780,[-30.00610951685011,28.39287782239575]]],"handle_end":[[9825559201153691780,[6.194184133897295,-19.440208666385132]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[921651403153242564,[27.555555555555657,-26.07407407407412]],[4341232355541306629,[0.0,0.0]],[3818841110886669992,[0.0,0.0]],[15749222431214672690,[0.0,0.0]],[2463526518527501592,[-34.96296296296305,33.481481481481495]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[5578827639764758986,[0.0,0.0]],[14294722277069184337,[0.0,0.0]],[9361245670457788924,[-16.14969885498249,21.855925783742933]]],"stroke":[[9361245670457788924,0],[2463526518527501592,0],[3818841110886669992,0],[14294722277069184337,0],[9825559201153691780,0],[12529947318087068663,0],[4341232355541306629,0],[921651403153242564,0],[15749222431214672690,0],[1705877195608053135,0],[5578827639764758986,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}]],"remove_g1_continuous":[[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}],[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[14935583009751134816,[914.9629629629628,418.3703703703703]],[5995306636877552,[912.8888888888888,479.7037037037037]],[5138872293174440313,[922.9629629629628,422.22222222222223]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[7238075805746621699,[798.6831275720165,497.9094650205762]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[17629528758352690600,[892.148148148148,480.2962962962963]],[5021902985892894619,[857.679012345679,478.2880658436215]],[9603704700847490044,[821.037037037037,464.2962962962963]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[9071432674597727163,7238075805746621699],[7250062683967197158,5138872293174440313],[7117413478945421556,5995306636877552],[14571502160667941876,7008812441195504980],[14131440324578863745,14935583009751134816],[4499620435559196394,9014079831396927156],[239843798079287870,2355002738045707979],[7655921914272804429,5021902985892894619],[7203043366367198812,9603704700847490044],[12687760936062936386,17629528758352690600]],"end_point":[[7117413478945421556,5138872293174440313],[12687760936062936386,5995306636877552],[4499620435559196394,7008812441195504980],[7203043366367198812,7238075805746621699],[7655921914272804429,17629528758352690600],[239843798079287870,5021902985892894619],[9071432674597727163,2355002738045707979],[14131440324578863745,9014079831396927156],[7250062683967197158,14935583009751134816],[14571502160667941876,9603704700847490044]],"handle_primary":[[7117413478945421556,[0.0,0.0]],[7203043366367198812,[0.0,0.2962962962963047]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[14131440324578863745,[0.0,0.0]],[7250062683967197158,[0.0,0.0]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[14571502160667941876,[-0.5925925925926094,0.0]],[9071432674597727163,[4.345679012345499,-3.555555555555543]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]]],"handle_end":[[4499620435559196394,[8.59259259259261,5.629629629629619]],[7117413478945421556,[15.703703703703695,33.48148148148147]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[12687760936062936386,[0.0,0.0]],[14131440324578863745,[2.962962962963047,-3.259259259259238]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]],[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[7250062683967197158,[0.0,0.0]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[239843798079287870,[-21.502976534539364,2.3372800581021456]]],"stroke":[[9071432674597727163,0],[12687760936062936386,0],[7117413478945421556,0],[239843798079287870,0],[7203043366367198812,0],[4499620435559196394,0],[7655921914272804429,0],[14131440324578863745,0],[14571502160667941876,0],[7250062683967197158,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}]],"remove_g1_continuous":[[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}],[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[266134622800431246,[525.7325506063205,282.1042056224195]],[12075466065090700811,[877.0370370370372,136.5925925925926]],[9852238672814254137,[879.7947439326053,110.54094004739208]],[7115673652122600762,[646.5386352539062,343.99395751953125]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[3769008694104161528,13980530488817762548,10196443086284452827],"start_point":[[17255728395700231433,12075466065090700811],[10242199012993595528,266134622800431246],[3166693019207180063,7115673652122600762],[2159953159628520134,9852238672814254137]],"end_point":[[2159953159628520134,12075466065090700811],[10242199012993595528,9852238672814254137],[17255728395700231433,7115673652122600762],[3166693019207180063,266134622800431246]],"handle_primary":[[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[2159953159628520134,[0.0,0.0]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]],[10242199012993595528,[137.37856050479058,-43.88198340019727]]],"handle_end":[[3166693019207180063,[0.0,0.0]],[17255728395700231433,[165.46136474609386,67.5615980360243]],[2159953159628520134,[0.0,0.0]],[10242199012993595528,[-15.794743932605344,36.71831921186718]]],"stroke":[[2159953159628520134,0],[10242199012993595528,0],[3166693019207180063,0],[17255728395700231433,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}],[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}],[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[9969822516610975381,[0.0,0.0]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[16788403743390653241,[467.99999999999994,487.3333333333333]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[16808246968731723098,[891.5555555555554,768.0]],[16686047298905200065,[283.3333333333333,354.66666666666663]],[16995054111951247369,[0.0,768.0]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[6057321578372831916,[708.148148148148,616.2962962962962]],[18307826411292029066,[601.1756940654021,0.0]],[3124531241960914803,[589.9588477366256,64.65843621399176]],[87630150944518163,[879.1111111111111,595.8518518518517]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[515539069333222772,16686047298905200065],[9242150930423817167,15635903913637220842],[15885450050057549950,3124531241960914803],[8823161072525575433,8652457572576966876],[1662692131856898001,18307826411292029066],[16224358815792062223,16808246968731723098],[178608879920007638,9969822516610975381],[14715945740984195653,16788403743390653241],[5227512358023446442,87630150944518163],[17410347049685436697,8212340198835025146],[9544743211426701912,6057321578372831916],[14879480148926424885,8323145223085840944],[12162371359208565273,16995054111951247369]],"end_point":[[178608879920007638,16995054111951247369],[14715945740984195653,16686047298905200065],[14879480148926424885,87630150944518163],[16224358815792062223,8323145223085840944],[12162371359208565273,16808246968731723098],[5227512358023446442,8212340198835025146],[9242150930423817167,8652457572576966876],[17410347049685436697,6057321578372831916],[1662692131856898001,9969822516610975381],[8823161072525575433,3124531241960914803],[15885450050057549950,18307826411292029066],[9544743211426701912,16788403743390653241],[515539069333222772,15635903913637220842]],"handle_primary":[[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[515539069333222772,[48.66666666666663,-23.999999999999943]],[15885450050057549950,[11.193415637860312,-27.25925925925926]],[178608879920007638,[0.0,0.0]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[12162371359208565273,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[16224358815792062223,[0.0,0.0]],[8823161072525575433,[11.259252477575274,-22.666663275824646]],[14879480148926424885,[0.0,0.0]]],"handle_end":[[14715945740984195653,[0.0,0.0]],[12162371359208565273,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[15885450050057549950,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[515539069333222772,[-95.07216232621772,78.5378732260062]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[16224358815792062223,[0.0,0.0]],[17410347049685436697,[57.48148148148141,21.629629629629676]],[178608879920007638,[0.0,0.0]],[9544743211426701912,[92.66666666666656,80.66666666666669]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[5227512358023446442,[26.37037037037044,-2.3703703703704377]]],"stroke":[[14715945740984195653,0],[12162371359208565273,0],[9242150930423817167,0],[9544743211426701912,0],[515539069333222772,0],[5227512358023446442,0],[8823161072525575433,0],[178608879920007638,0],[14879480148926424885,0],[15885450050057549950,0],[1662692131856898001,0],[16224358815792062223,0],[17410347049685436697,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}],[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[17457877227823502997,[273.0,476.0]],[5992570223148766873,[-2.273736754432321e-13,768.0]],[13436129231170586617,[481.3333333333333,768.0]],[16608607268690234590,[0.0,340.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[13284808974014161135,16608607268690234590],[8776124420595946733,13436129231170586617],[4274372337254864190,5992570223148766873],[5472571334856691465,17457877227823502997]],"end_point":[[8776124420595946733,5992570223148766873],[4274372337254864190,16608607268690234590],[5472571334856691465,13436129231170586617],[13284808974014161135,17457877227823502997]],"handle_primary":[[4274372337254864190,[0.0,0.0]],[13284808974014161135,[161.73791370620617,43.57576470888159]],[5472571334856691465,[146.0,-13.0]],[8776124420595946733,[0.0,0.0]]],"handle_end":[[5472571334856691465,[0.4078646547782227,-253.307727480567]],[13284808974014161135,[-165.43581782916667,14.730586519035386]],[8776124420595946733,[0.0,0.0]],[4274372337254864190,[0.0,0.0]]],"stroke":[[4274372337254864190,0],[5472571334856691465,0],[13284808974014161135,0],[8776124420595946733,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}],[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[16332448509429125699,1009888023123207923],"delta":[[2904729023031858224,[491.3420376907663,506.7530051313737]],[4175610638601362388,[957.0,324.0]],[3507505346656189771,[552.0,768.0000000000001]],[2195807584570698921,[993.0,767.9999999999999]],[854708012647259796,[740.0,298.0]],[7821224334582795476,[1093.0,600.0]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[5710832026764395735,546565283439891712],"start_point":[[8570276641842028192,2195807584570698921],[17183285389582020412,7821224334582795476],[4553965744616493549,3507505346656189771],[17304574948462342226,4175610638601362388],[13993263006398686359,2904729023031858224],[6577640955869157325,854708012647259796]],"end_point":[[6577640955869157325,4175610638601362388],[17304574948462342226,7821224334582795476],[8570276641842028192,3507505346656189771],[17183285389582020412,2195807584570698921],[13993263006398686359,854708012647259796],[4553965744616493549,2904729023031858224]],"handle_primary":[[8570276641842028192,[0.0,0.0]],[4553965744616493549,[0.0,0.0]],[6577640955869157325,[102.0,-45.0]],[17183285389582020412,[-24.08196064282073,82.4624712920831]],[13993263006398686359,[0.0,-84.7537417270637]],[17304574948462342226,[50.35246044959922,33.38607084805801]]],"handle_end":[[13993263006398686359,[-102.0,45.0]],[17304574948462342226,[33.0,-113.0]],[17183285389582020412,[0.0,0.0]],[4553965744616493549,[0.0,135.2464055295568]],[8570276641842028192,[0.0,0.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]]],"stroke":[[17304574948462342226,0],[4553965744616493549,0],[6577640955869157325,0],[8570276641842028192,0],[13993263006398686359,0],[17183285389582020412,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}],[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}]],"remove_g1_continuous":[[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}],[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}],[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[16569120368910754547,[-43.0,0.0]],[2003133867055127539,[1011.111083984375,786.3993530273438]],[4648964341912884959,[324.66666666666646,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[3433930674303663828,6602880736207868665],"start_point":[[13431612844608018700,13758328146055368475],[7334532063810723038,16569120368910754547],[8214025514312603513,2003133867055127539]],"end_point":[[13431612844608018700,2003133867055127539],[8214025514312603513,4648964341912884959],[7334532063810723038,13758328146055368475]],"handle_primary":[[13431612844608018700,null],[9030015329489789075,[69.08057198853999,-80.19415805947563]],[7334532063810723038,null],[8214025514312603513,null]],"handle_end":[[7334532063810723038,null],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[13431612844608018700,null],[9030015329489789075,[0.0,0.0]],[8214025514312603513,null]],"stroke":[[8214025514312603513,0],[13431612844608018700,0],[7334532063810723038,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[15117515618866904690,[819.1111111111109,354.44444444444434]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[7025422618543191491,[911.5555555555554,345.3333333333333]],[10412162547161259027,[887.3333333333333,376.0]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[3831533579307185652,[880.4444444444443,357.3333333333333]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[7639287212006638253,[862.8888888888888,349.3333333333333]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[6952183320761642858,[933.9259259259262,324.3456790123457]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[10498175376126066982,13654185056786459919],[1241631398419524272,7639287212006638253],[9330486019469919863,5269777039739103358],[4069217348643062888,16937470333767479918],[15286139376878919277,15117515618866904690],[10426255560432238561,6952183320761642858],[11214998966879437330,2802617302192982616],[15838384105575178137,15750781936547583892],[379744301215040936,3831533579307185652],[12854270992100552972,7025422618543191491],[10438163357339042361,10412162547161259027]],"end_point":[[379744301215040936,16937470333767479918],[15838384105575178137,7025422618543191491],[11214998966879437330,7639287212006638253],[12854270992100552972,3831533579307185652],[10426255560432238561,2802617302192982616],[1241631398419524272,15117515618866904690],[9330486019469919863,13654185056786459919],[10498175376126066982,6952183320761642858],[15286139376878919277,15750781936547583892],[10438163357339042361,5269777039739103358],[4069217348643062888,10412162547161259027]],"handle_primary":[[15838384105575178137,[22.222222222222285,5.555555555555543]],[4069217348643062888,[0.0,0.0]],[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[379744301215040936,[-0.2222222222221717,0.0]],[10498175376126066982,[0.0,0.0]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[12854270992100552972,[-0.4444444444443434,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]]],"handle_end":[[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[11214998966879437330,[17.111111111111086,-12.888888888888856]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]],[379744301215040936,[0.0,0.0]],[12854270992100552972,[33.77777777777783,2.2222222222222285]],[9330486019469919863,[0.0,0.0]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]],[15838384105575178137,[-20.0,2.0]]],"stroke":[[10438163357339042361,0],[1241631398419524272,0],[4069217348643062888,0],[15286139376878919277,0],[15838384105575178137,0],[12854270992100552972,0],[9330486019469919863,0],[379744301215040936,0],[10426255560432238561,0],[11214998966879437330,0],[10498175376126066982,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[14760110820354327749,[614.8148148148148,129.1851851851852]],[9496337687212684441,[732.148148148148,57.18518518518518]],[13517856880347849115,[777.1851851851851,92.44444444444446]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[11696351847604335156,9496337687212684441],[3809009367670994230,13517856880347849115],[18226408581696793441,14760110820354327749],[10686631697241750410,2930103517622848405],[13496648265229692336,12398030966924498647],[16628058317667581864,9465415708990918986]],"end_point":[[10686631697241750410,9496337687212684441],[18226408581696793441,9465415708990918986],[3809009367670994230,12398030966924498647],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115],[13496648265229692336,2930103517622848405]],"handle_primary":[[10686631697241750410,[-13.037037037036953,-4.444444444444457]],[3809009367670994230,[21.33333333333337,4.740740740740733]],[11696351847604335156,[-29.333333333333258,11.55555555555555]],[16628058317667581864,[41.185185185185105,-9.7777777777778]],[18226408581696793441,[0.0,0.0]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]]],"handle_end":[[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[13496648265229692336,[13.037037037036953,4.444444444444457]],[18226408581696793441,[-41.185185185185105,9.7777777777778]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[11696351847604335156,[54.81481481481478,-42.37037037037035]],[10686631697241750410,[29.333333333333258,-11.55555555555555]]],"stroke":[[11696351847604335156,0],[16628058317667581864,0],[18226408581696793441,0],[3809009367670994230,0],[10686631697241750410,0],[13496648265229692336,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}],[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[12796056970187696453,[1418.0,0.0]],[12314285668680405002,[1085.0,181.0]],[5173348374891662425,[969.0,0.0]],[7388288026322342161,[1277.0,319.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[18091265337503274797,7388288026322342161],[10860608091363771974,5173348374891662425],[9065140293539496953,12796056970187696453],[9177623211202289793,12314285668680405002]],"end_point":[[10860608091363771974,12314285668680405002],[9177623211202289793,7388288026322342161],[9065140293539496953,5173348374891662425],[18091265337503274797,12796056970187696453]],"handle_primary":[[18091265337503274797,[178.0,-35.0]],[10860608091363771974,[0.0,0.0]],[9177623211202289793,[-33.0,137.0]],[9065140293539496953,[0.0,0.0]]],"handle_end":[[9177623211202289793,[-77.81941867085992,15.301571086966838]],[10860608091363771974,[25.066898104916696,-104.0656072840481]],[9065140293539496953,[0.0,0.0]],[18091265337503274797,[168.99998492988766,81.0]]],"stroke":[[10860608091363771974,0],[9065140293539496953,0],[18091265337503274797,0],[9177623211202289793,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}],[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[5664077098702810122,[686.5185185185185,191.1111111111111]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[12058665768506126331,[693.7283950617283,174.35390946502056]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[2189722519288419244,[796.0493827160494,202.2716049382716]],[15817054697695831753,[806.716049382716,206.22222222222223]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[13567509413382199058,[702.6831275720166,195.95061728395063]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[15744271344233846756,[785.7777777777777,205.62962962962965]],[13877679667762731651,[743.4074074074074,234.66666666666669]],[4854280308383915721,[813.9259259259259,200.2962962962963]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[13932755083907220179,17729943149159368459],[1639796012074210121,6802441093413090533],[5102625335252315850,15575201098426093294],[14941832641240060361,7436032950540776377],[3918280827204321712,4854280308383915721],[16261506098907231989,13567509413382199058],[94092576912261794,2189722519288419244],[18299135553255571870,15817054697695831753],[3109091330258982137,15744271344233846756],[2336956120616260883,12058665768506126331],[8279051592565434787,5664077098702810122],[2367379450383978497,14178520291283306679],[11037018395008586448,13877679667762731651]],"end_point":[[2336956120616260883,6802441093413090533],[94092576912261794,15817054697695831753],[3918280827204321712,17729943149159368459],[1639796012074210121,4854280308383915721],[3109091330258982137,13877679667762731651],[11037018395008586448,13567509413382199058],[5102625335252315850,12058665768506126331],[14941832641240060361,2189722519288419244],[13932755083907220179,7436032950540776377],[16261506098907231989,5664077098702810122],[2367379450383978497,15575201098426093294],[18299135553255571870,15744271344233846756],[8279051592565434787,14178520291283306679]],"handle_primary":[[13932755083907220179,[0.0,0.0]],[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[2336956120616260883,[0.0,0.0]],[94092576912261794,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[11037018395008586448,[0.0,0.0]],[16261506098907231989,[0.0,0.0]],[3109091330258982137,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[18299135553255571870,[0.0,0.0]],[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[14941832641240060361,[0.0,0.0]],[3918280827204321712,[0.0,0.0]]],"handle_end":[[2336956120616260883,[-65.77777777777783,13.333333333333314]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[14941832641240060361,[7.1111111111111995,1.7777777777778]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[94092576912261794,[0.0,0.0]],[16261506098907231989,[12.1395654462896,1.5502392023748983]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[3918280827204321712,[0.0,0.0]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[13932755083907220179,[0.0,0.0]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[1639796012074210121,[-19.259259259259352,-3.259259259259238]]],"stroke":[[2367379450383978497,0],[8279051592565434787,0],[3109091330258982137,0],[18299135553255571870,0],[2336956120616260883,0],[3918280827204321712,0],[13932755083907220179,0],[11037018395008586448,0],[94092576912261794,0],[1639796012074210121,0],[5102625335252315850,0],[16261506098907231989,0],[14941832641240060361,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]],[949359986970918930,[0.0,608.0]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[5480246971175127548,[364.0,767.9999999999999]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[6561081452252813685,11231973846952426191,15926511461198813522],"start_point":[[8951068186878308228,6461719056721357962],[9717584104793611782,949359986970918930],[15710828508798332384,5480246971175127548],[12480300844056666979,6265491311473200676]],"end_point":[[12480300844056666979,949359986970918930],[9717584104793611782,6461719056721357962],[15710828508798332384,6265491311473200676],[8951068186878308228,5480246971175127548]],"handle_primary":[[8951068186878308228,[121.00000000000006,-37.99999999999994]],[15710828508798332384,null],[9717584104793611782,[0.0,0.0]],[12480300844056666979,null]],"handle_end":[[15710828508798332384,null],[8951068186878308228,[-92.0,-81.99999999999989]],[12480300844056666979,null],[9717584104793611782,[-63.1770926995265,19.84073985604961]]],"stroke":[[15710828508798332384,0],[12480300844056666979,0],[9717584104793611782,0],[8951068186878308228,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}],[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}]],"remove_g1_continuous":[[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}],[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[3123395482103162919,[-2.273736754432321e-13,689.0]],[16723991032614525258,[553.0000000000001,768.0]],[2668496811386192321,[0.0,768.0]],[1623125309784127684,[643.9258958566198,633.6997633965701]],[7209807874503344461,[188.0,694.6666666666669]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[16287649713110748258,3123395482103162919],[3656277643115996070,16723991032614525258],[1652964032977338610,7209807874503344461],[6789459806904610761,1623125309784127684],[16456150086799119359,2668496811386192321]],"end_point":[[3656277643115996070,1623125309784127684],[16456150086799119359,16723991032614525258],[1652964032977338610,3123395482103162919],[16287649713110748258,2668496811386192321],[6789459806904610761,7209807874503344461]],"handle_primary":[[1652964032977338610,[-81.48609837852206,84.6759456460087]],[16287649713110748258,[0.0,0.0]],[16456150086799119359,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]]],"handle_end":[[16287649713110748258,[0.0,0.0]],[6789459806904610761,[187.33333333333343,-194.6666666666667]],[16456150086799119359,[0.0,0.0]],[1652964032977338610,[56.00000000000023,11.0]],[3656277643115996070,[0.0,0.0]]],"stroke":[[16287649713110748258,0],[6789459806904610761,0],[16456150086799119359,0],[3656277643115996070,0],[1652964032977338610,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}],[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}]],"remove_g1_continuous":[[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}],[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[4648964341912884959,[665.0000000000001,768.0]],[10156053545530752213,[1094.162353515625,594.2965698242188]],[16569120368910754547,[1361.0,768.0]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[9030015329489789075,4648964341912884959],[3433930674303663828,16569120368910754547],[2197140374690997530,10156053545530752213]],"end_point":[[3433930674303663828,4648964341912884959],[2197140374690997530,16569120368910754547],[9030015329489789075,10156053545530752213]],"handle_primary":[[2197140374690997530,[79.20069951994813,30.807024746222492]],[9030015329489789075,[32.66666666666663,-95.99999999999989]],[3433930674303663828,[0.0,0.0]]],"handle_end":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[9030015329489789075,[-238.88331323750492,-92.9194336284096]]],"stroke":[[2197140374690997530,0],[3433930674303663828,0],[9030015329489789075,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}],[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[6082833770141706533,[504.0987654320987,184.6255144032922]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[17147466439590042359,[526.0109927536641,282.1042175292969]],[7903705226822768120,[497.3827160493826,248.88888888888889]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[9659144961849433642,17147466439590042359],[801877719748058643,7903705226822768120],[14649965831690031908,6082833770141706533],[2255088856072565305,13341364271767916194]],"end_point":[[14649965831690031908,7903705226822768120],[9659144961849433642,13341364271767916194],[2255088856072565305,6082833770141706533],[801877719748058643,17147466439590042359]],"handle_primary":[[9659144961849433642,[0.0,0.0]],[14649965831690031908,[0.0,0.0]],[2255088856072565305,[0.0,0.0]],[801877719748058643,[13.173601585124231,23.615912208504938]]],"handle_end":[[2255088856072565305,[-112.09876543209862,43.81893004115227]],[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[801877719748058643,[0.0,0.0]],[9659144961849433642,[195.55555555555569,-16.14814814814804]]],"stroke":[[9659144961849433642,0],[2255088856072565305,0],[14649965831690031908,0],[801877719748058643,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}],[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[16005438712872589849,[817.1851851851852,94.61728395061728]],[4322398537034510509,[776.888888888889,117.53086419753087]],[9374180853656949931,[784.0000000000002,176.98765432098767]],[16958489363675356032,[658.172839506173,169.08641975308643]],[10491326691824745018,[811.851851851852,148.54320987654322]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[13358295350421759755,[778.4691358024693,177.1851851851852]],[15245407364463454564,[773.530864197531,141.4320987654321]],[1674257131044231065,[829.4320987654323,121.67901234567904]],[3438797896265725901,[795.4567901234569,94.41975308641976]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[12873317883441611394,15245407364463454564],[198953627342130434,7347160684180114694],[16846650637386857857,9374180853656949931],[3784798568712268630,13358295350421759755],[11663644781855838202,16958489363675356032],[3235570761188242773,1674257131044231065],[8528911024810728168,16005438712872589849],[13015157349146777770,3438797896265725901],[8327087349631976772,4322398537034510509],[16847383896493391194,10491326691824745018]],"end_point":[[8327087349631976772,3438797896265725901],[8528911024810728168,1674257131044231065],[13015157349146777770,16005438712872589849],[11663644781855838202,7347160684180114694],[3235570761188242773,10491326691824745018],[3784798568712268630,15245407364463454564],[12873317883441611394,16958489363675356032],[16847383896493391194,9374180853656949931],[198953627342130434,4322398537034510509],[16846650637386857857,13358295350421759755]],"handle_primary":[[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[13015157349146777770,[0.0,0.0]],[198953627342130434,[0.0,0.3950617283950635]],[16846650637386857857,[0.0,0.0]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[12873317883441611394,[-19.75308641975323,2.172839506172835]],[11663644781855838202,[0.0,0.0]],[16847383896493391194,[-17.185185185185105,13.234567901234584]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[8528911024810728168,[5.530864197530946,5.925925925925924]]],"handle_end":[[198953627342130434,[0.19753086419757435,13.82716049382715]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[3235570761188242773,[17.185185185185105,-13.234567901234584]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[16847383896493391194,[0.0,0.0]],[16846650637386857857,[0.0,0.0]],[8327087349631976772,[0.0,0.0]],[3784798568712268630,[2.9629629629629335,5.135802469135797]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]]],"stroke":[[16846650637386857857,0],[198953627342130434,0],[8528911024810728168,0],[3235570761188242773,0],[11663644781855838202,0],[12873317883441611394,0],[3784798568712268630,0],[8327087349631976772,0],[16847383896493391194,0],[13015157349146777770,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}],[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}]],"remove_g1_continuous":[[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}],[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[9403888920678312544,[1271.0,199.0]],[11163144542703672167,[763.0,0.0]],[9912917483675332510,[1536.0,254.00000000000009]],[7233902871991446034,[908.0,134.0]],[5714042674660607880,[1536.0,0.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[11879054056208937348,7233902871991446034],[3118709054343469746,9403888920678312544],[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880],[7099980686025805826,11163144542703672167]],"end_point":[[7099980686025805826,7233902871991446034],[12085471811343146506,5714042674660607880],[7804540624589615499,11163144542703672167],[11879054056208937348,9403888920678312544],[3118709054343469746,9912917483675332510]],"handle_primary":[[7099980686025805826,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[3118709054343469746,[191.0,-106.0]],[11879054056208937348,[68.41365603453937,54.51084151791355]],[12085471811343146506,[0.0,0.0]]],"handle_end":[[12085471811343146506,[0.0,0.0]],[3118709054343469746,[0.0,0.0]],[11879054056208937348,[-121.83694366711715,67.61631428646292]],[7804540624589615499,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]]],"stroke":[[7099980686025805826,0],[12085471811343146506,0],[7804540624589615499,0],[11879054056208937348,0],[3118709054343469746,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,65]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,113]}}},"network_metadata":null}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,118]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,113]}}},"network_metadata":null}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,45]}}},"network_metadata":null}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-64,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,104]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,80]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,54]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-8,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,45]}}},"network_metadata":null}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,71]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,62]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,56]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,50]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[592.0696649941159,-2529.6713086742443],"tilt":0.0,"zoom":1.3353790580762406},"node_graph_to_viewport":[1.3353790580762406,0.0,0.0,1.3353790580762406,1494.0,-2557.0],"node_graph_top_right":[1405.5999755859375,0.0]},"selection_undo_history":[[],[],[],[8566844905246185636],[],[17740496701763775226],[],[4328376070224119511],[],[8566844905246185636],[16999130951959724657],[],[12709602171929957216],[6468742191365679953],[],[18087203100637857224],[],[12004065064978143915],[10080296672372912698],[12004065064978143915],[],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"Painted Dreams","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-708.878066550151,-430.76433468972016],"tilt":0.0,"zoom":0.8728439370010537},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file +{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[6351696498298648253,[646.8148148148149,0.0]],[10625296323957562985,[473.4814814814815,272.5925925925926]],[15992617814592812350,[621.0370370370368,0.0]],[6379137305818664393,[625.4814814814813,0.0]],[301778328144628917,[493.5149940383244,200.29629629629628]],[4691860614575868200,[528.2962962962963,283.8518518518518]],[533731991408535384,[501.6296296296296,175.40740740740742]],[18118267825025549699,[642.0740740740741,0.0]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[17863574903157697896,[606.8148151308641,95.19407372365433]],[13357220652574593654,[574.2222222222222,108.44444444444449]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[3710133387837274291,15992617814592812350],[12035095010819582754,18118267825025549699],[8462655819889292900,4691860614575868200],[318560030360358929,17863574903157697896],[2035327810332855521,533731991408535384],[11346538709718766144,13357220652574593654],[13662059715350867364,6379137305818664393],[3384102572540409881,18442321214082298093],[3303411878775644985,301778328144628917],[10146665273368938971,6351696498298648253],[8661113083384527971,10625296323957562985]],"end_point":[[3710133387837274291,6379137305818664393],[10146665273368938971,17863574903157697896],[11346538709718766144,15992617814592812350],[2035327810332855521,13357220652574593654],[8462655819889292900,301778328144628917],[3384102572540409881,18118267825025549699],[13662059715350867364,18442321214082298093],[3303411878775644985,10625296323957562985],[8661113083384527971,533731991408535384],[318560030360358929,4691860614575868200],[12035095010819582754,6351696498298648253]],"handle_primary":[[318560030360358929,[-46.95465552079859,46.40007297527743]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[3710133387837274291,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[10146665273368938971,[0.0,0.0]],[12035095010819582754,[0.0,0.0]],[13662059715350867364,[0.0,0.0]],[8462655819889292900,[0.0,0.0]],[3384102572540409881,[0.0,0.0]],[3303411878775644985,[0.0,0.0]]],"handle_end":[[3384102572540409881,[0.5807410754567854,77.36888852918523]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[11346538709718766144,[1.1377781018271662,63.71555518874077]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[13662059715350867364,[68.68148181185177,-54.8859262904691]],[8462655819889292900,[-21.74426522093495,47.99999999999997]],[12035095010819582754,[0.0,0.0]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[3710133387837274291,[0.0,0.0]],[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[318560030360358929,[-97.48148148148152,-81.18518518518522]]],"stroke":[[3303411878775644985,0],[3384102572540409881,0],[2035327810332855521,0],[318560030360358929,0],[3710133387837274291,0],[8661113083384527971,0],[8462655819889292900,0],[12035095010819582754,0],[13662059715350867364,0],[11346538709718766144,0],[10146665273368938971,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}],[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}],[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[17520941196305861319,[889.0,0.0]],[1541401134848201833,[886.0,572.0]],[7727030009292816503,[0.0,768.0]],[4659274885664969740,[896.0,523.0]],[4723170318056755559,[923.0,349.0]],[15701538241214188894,[0.0,0.0]],[6029995238423674441,[898.0,46.0]],[16590926169549948521,[869.0,147.0]],[13279221198527484331,[564.0,768.0]],[11084016020553554647,[655.0,636.0]],[17339925811006567497,[898.0,468.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[12817219955590128894,[933.0,273.0]],[9729762716079513741,[585.0,666.0]],[12317789037775437786,[902.0,394.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[15056691877609602335,4659274885664969740],[1248401493076165062,12317789037775437786],[3307452201570141575,7727030009292816503],[9730229894941201870,4723170318056755559],[16631919016540861133,17321098837874422287],[8919277736361106420,1541401134848201833],[11569179934425192262,16590926169549948521],[8832757535144158913,17339925811006567497],[10137845066833192587,9729762716079513741],[9314952320711038398,11084016020553554647],[862900208337901235,17520941196305861319],[14740183693208469558,13279221198527484331],[4806484166818510930,6029995238423674441],[9808624553037921371,12817219955590128894],[3876401232874291775,15701538241214188894]],"end_point":[[14740183693208469558,7727030009292816503],[9730229894941201870,12317789037775437786],[10137845066833192587,13279221198527484331],[3307452201570141575,15701538241214188894],[16631919016540861133,11084016020553554647],[15056691877609602335,1541401134848201833],[9314952320711038398,9729762716079513741],[9808624553037921371,4723170318056755559],[8832757535144158913,4659274885664969740],[11569179934425192262,12817219955590128894],[862900208337901235,6029995238423674441],[8919277736361106420,17321098837874422287],[3876401232874291775,17520941196305861319],[4806484166818510930,16590926169549948521],[1248401493076165062,17339925811006567497]],"handle_primary":[[8832757535144158913,[14.888888888888914,4.8888888888888005]],[8919277736361106420,[10.458809984597837,40.44073194044492]],[14740183693208469558,[0.0,0.0]],[3307452201570141575,[0.0,0.0]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[862900208337901235,[0.0,0.0]],[11569179934425192262,[-4.0,51.0]],[10137845066833192587,[-19.0,43.0]],[9314952320711038398,[-34.0,-7.0]],[15056691877609602335,[0.0,0.0]],[3876401232874291775,[0.0,0.0]],[9808624553037921371,[18.0,36.0]],[4806484166818510930,[11.595886737767424,32.210796493798]],[1248401493076165062,[21.0,27.0]],[9730229894941201870,[-24.00371914417652,11.366922485048674]]],"handle_end":[[862900208337901235,[-9.000000000000114,-25.0]],[14740183693208469558,[0.0,0.0]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[9730229894941201870,[-21.0,-27.0]],[3876401232874291775,[0.0,0.0]],[10137845066833192587,[0.0,0.0]],[11569179934425192262,[-18.0,-36.0]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[9314952320711038398,[19.0,-43.0]],[9808624553037921371,[28.703703703703695,-13.592592592592496]],[15056691877609602335,[-10.0,-38.66666666666663]],[16631919016540861133,[34.0,7.0]],[3307452201570141575,[0.0,0.0]]],"stroke":[[862900208337901235,0],[10137845066833192587,0],[16631919016540861133,0],[9730229894941201870,0],[3307452201570141575,0],[3876401232874291775,0],[8919277736361106420,0],[14740183693208469558,0],[11569179934425192262,0],[9808624553037921371,0],[9314952320711038398,0],[8832757535144158913,0],[4806484166818510930,0],[1248401493076165062,0],[15056691877609602335,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9577388580635291078,[1536.0,0.0]],[9346093213164033195,[1211.0,0.0]],[3249248431686392864,[1536.0,95.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[9585086796709645600,9346093213164033195],[13980191878100735848,3249248431686392864],[1147165232046305110,9577388580635291078]],"end_point":[[1147165232046305110,9346093213164033195],[13980191878100735848,9577388580635291078],[9585086796709645600,3249248431686392864]],"handle_primary":[[1147165232046305110,[0.0,0.0]],[9585086796709645600,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]]],"handle_end":[[13980191878100735848,[0.0,0.0]],[9585086796709645600,[-281.0,-17.00000000000003]],[1147165232046305110,[0.0,0.0]]],"stroke":[[9585086796709645600,0],[1147165232046305110,0],[13980191878100735848,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[3251241957527197760,[875.8001811251517,185.6784024477276]],[8048619563638005414,[944.0577392578124,302.0703430175781]],[11100418327549747778,[910.880658436214,243.0946502057613]],[1078998931754662073,[942.0246913580248,264.2962962962963]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[6165219920202055745,3251241957527197760],[3439025775805007707,8048619563638005414],[10795897848378052161,11100418327549747778],[12551435438068218604,1078998931754662073]],"end_point":[[10795897848378052161,8048619563638005414],[3439025775805007707,1078998931754662073],[6165219920202055745,11100418327549747778],[12551435438068218604,3251241957527197760]],"handle_primary":[[10795897848378052161,[11.46027223334628,13.82427457744465]],[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[6165219920202055745,[0.0,0.0]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]]],"handle_end":[[3439025775805007707,[14.61728395061732,27.456790123456813]],[12551435438068218604,[23.33217876876199,5.204454965879364]],[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]]],"stroke":[[12551435438068218604,0],[10795897848378052161,0],[6165219920202055745,0],[3439025775805007707,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}],[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[4481635366652149569,[684.8888888888889,395.55555555555554]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[4765910415851982345,[283.33331298828125,354.6666564941406]],[1608608093193158603,[609.7777777777777,620.0]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[3045825504718908919,4475009837548700636],[11103925991989272298,4765910415851982345],[3983292299330016176,1608608093193158603],[8024777209266880257,4481635366652149569]],"end_point":[[11103925991989272298,4475009837548700636],[3045825504718908919,4481635366652149569],[8024777209266880257,1608608093193158603],[3983292299330016176,4765910415851982345]],"handle_primary":[[3045825504718908919,[62.22222222222217,43.111111111111086]],[8024777209266880257,[11.111111111111086,62.22222222222217]],[11103925991989272298,[0.0,0.0]],[3983292299330016176,[0.0,0.0]]],"handle_end":[[11103925991989272298,[-113.5844024581724,39.08097956276566]],[8024777209266880257,[34.66666666666674,-85.33333333333337]],[3983292299330016176,[0.0,0.0]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]]],"stroke":[[3983292299330016176,0],[3045825504718908919,0],[11103925991989272298,0],[8024777209266880257,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}],[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}]],"remove_g1_continuous":[[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[9658821733796680583,[920.5925925925926,208.0]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[425878374398720476,[898.633744855967,207.99999999999997]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[5496457317579994340,[929.3607681755832,198.40877914951983]],[10872099980755217048,[889.0,0.0]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[13223251807271379465,9175973472325454282],[6443321953815072406,2409359561719399794],[13961346931609713434,13049263474526562389],[6545223889678917273,14263506369487797530],[16241193756011776206,10872099980755217048],[5210886161307886529,425878374398720476],[9187894839116405225,9658821733796680583],[9745298522639115232,5496457317579994340],[8058164935346100149,7125168137854779179],[11050813873332011119,5252668597335249558]],"end_point":[[13223251807271379465,14263506369487797530],[6545223889678917273,5496457317579994340],[8058164935346100149,9658821733796680583],[13961346931609713434,2409359561719399794],[6443321953815072406,9175973472325454282],[11050813873332011119,10872099980755217048],[16241193756011776206,13049263474526562389],[9745298522639115232,7125168137854779179],[9187894839116405225,425878374398720476],[5210886161307886529,5252668597335249558]],"handle_primary":[[6443321953815072406,[-9.144953020396894,24.145964868041293]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]],[9745298522639115232,[0.0,0.0]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[16241193756011776206,[0.0,0.0]],[9187894839116405225,[-8.263374485596842,1.880201188843188]],[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[6545223889678917273,[0.0,0.0]],[8058164935346100149,[0.0,0.0]]],"handle_end":[[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9745298522639115232,[7.703703703703695,-2.074074074074076]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]],[13961346931609713434,[10.984910836762538,-29.00411522633746]]],"stroke":[[9187894839116405225,0],[16241193756011776206,0],[13223251807271379465,0],[9745298522639115232,0],[13961346931609713434,0],[6545223889678917273,0],[6443321953815072406,0],[5210886161307886529,0],[8058164935346100149,0],[11050813873332011119,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}],[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}],[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[6781153531246981076,[872.6913580246915,513.7777777777779]],[15695128662656633322,[825.6790123456792,509.4320987654323]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[3749627916562964805,[866.172839506173,558.2222222222224]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[12599396287665855262,[902.5185185185188,498.56790123456807]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[2535476870476707501,[887.5061728395062,568.6913580246915]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[15700595221504820396,10786213048155734586],[264894972572137143,2535476870476707501],[3021925106447084698,6781153531246981076],[3461110970422306113,8241402276734357681],[17761347836385237495,6164201091766276213],[14489254209548096966,15695128662656633322],[14515109677644612103,3749627916562964805],[6369399239389505343,12599396287665855262],[14847678502054094837,10333377922713208038]],"end_point":[[14515109677644612103,2535476870476707501],[264894972572137143,10786213048155734586],[6369399239389505343,6164201091766276213],[3021925106447084698,15695128662656633322],[15700595221504820396,12599396287665855262],[14489254209548096966,8241402276734357681],[14847678502054094837,3749627916562964805],[17761347836385237495,6781153531246981076],[3461110970422306113,10333377922713208038]],"handle_primary":[[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[15700595221504820396,[0.0,0.0]],[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[3021925106447084698,[-16.59259259259261,2.370370370370324]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[14515109677644612103,[8.888888888888914,0.0]],[17761347836385237495,[0.0,0.0]],[264894972572137143,[0.0,0.0]],[3461110970422306113,[0.38915905346209456,1.493515242756871]]],"handle_end":[[17761347836385237495,[16.59259259259261,-2.370370370370324]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[15700595221504820396,[7.1111111111111995,5.530864197530889]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[14515109677644612103,[0.0,0.0]],[264894972572137143,[3.753086419753003,37.1358024691358]],[6369399239389505343,[0.0,0.0]],[14847678502054094837,[-8.888888888888914,0.0]]],"stroke":[[14847678502054094837,0],[3461110970422306113,0],[264894972572137143,0],[15700595221504820396,0],[17761347836385237495,0],[14515109677644612103,0],[6369399239389505343,0],[14489254209548096966,0],[3021925106447084698,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}],[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[4609870404630548899,[589.432098765432,64.79012345679011]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[16230687409600568539,[491.55555555555554,311.55555555555566]],[2492294980235986276,[604.4434936307387,42.970116997735616]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[12909592102393222573,[607.8024691358027,0.0]],[177515045030371783,[604.2883706752018,0.0]],[12390708657704154619,[596.6748971193416,72.42798353909465]],[8055802412900565217,[480.4444444444445,219.7777777777778]],[6873550371723398444,[538.6666666666667,136.0]],[13416153271806375161,[531.8518518518517,131.2592592592593]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[17799038492181728804,17843645051722826880,11060716078587457450,5057709998225566481,16939098306153440303],"start_point":[[5578827639764758986,1458337690478625792],[921651403153242564,4609870404630548899],[4341232355541306629,12390708657704154619],[3818841110886669992,7624137673235413199],[1705877195608053135,16230687409600568539],[9825559201153691780,13416153271806375161],[12529947318087068663,177515045030371783],[15749222431214672690,2492294980235986276],[14294722277069184337,12448133448335459077],[9361245670457788924,6873550371723398444],[2463526518527501592,8055802412900565217]],"end_point":[[15749222431214672690,12909592102393222573],[921651403153242564,13416153271806375161],[3818841110886669992,12448133448335459077],[9361245670457788924,12390708657704154619],[2463526518527501592,6873550371723398444],[14294722277069184337,2492294980235986276],[12529947318087068663,4609870404630548899],[9825559201153691780,1458337690478625792],[1705877195608053135,8055802412900565217],[4341232355541306629,7624137673235413199],[5578827639764758986,16230687409600568539]],"handle_primary":[[9825559201153691780,[-30.00610951685011,28.39287782239575]],[5578827639764758986,[-19.25925925925924,60.44444444444443]],[3818841110886669992,[0.0,0.0]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[12529947318087068663,[0.0,0.0]],[1705877195608053135,[0.0,0.0]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[15749222431214672690,[3.877242131088792,-22.333682252383095]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[14294722277069184337,[-0.2633744855968416,28.576131687242796]]],"handle_end":[[921651403153242564,[27.555555555555657,-26.07407407407412]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[14294722277069184337,[0.0,0.0]],[9361245670457788924,[-16.14969885498249,21.855925783742933]],[15749222431214672690,[0.0,0.0]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[9825559201153691780,[6.194184133897295,-19.440208666385132]],[2463526518527501592,[-34.96296296296305,33.481481481481495]],[5578827639764758986,[0.0,0.0]],[4341232355541306629,[0.0,0.0]],[3818841110886669992,[0.0,0.0]]],"stroke":[[2463526518527501592,0],[1705877195608053135,0],[12529947318087068663,0],[14294722277069184337,0],[9825559201153691780,0],[921651403153242564,0],[4341232355541306629,0],[15749222431214672690,0],[5578827639764758986,0],[3818841110886669992,0],[9361245670457788924,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}]],"remove_g1_continuous":[[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[5995306636877552,[912.8888888888888,479.7037037037037]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[5021902985892894619,[857.679012345679,478.2880658436215]],[14935583009751134816,[914.9629629629628,418.3703703703703]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[7238075805746621699,[798.6831275720165,497.9094650205762]],[9603704700847490044,[821.037037037037,464.2962962962963]],[5138872293174440313,[922.9629629629628,422.22222222222223]],[17629528758352690600,[892.148148148148,480.2962962962963]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[7203043366367198812,9603704700847490044],[239843798079287870,2355002738045707979],[12687760936062936386,17629528758352690600],[4499620435559196394,9014079831396927156],[9071432674597727163,7238075805746621699],[14131440324578863745,14935583009751134816],[7117413478945421556,5995306636877552],[7250062683967197158,5138872293174440313],[7655921914272804429,5021902985892894619],[14571502160667941876,7008812441195504980]],"end_point":[[7117413478945421556,5138872293174440313],[12687760936062936386,5995306636877552],[14131440324578863745,9014079831396927156],[14571502160667941876,9603704700847490044],[4499620435559196394,7008812441195504980],[7655921914272804429,17629528758352690600],[7250062683967197158,14935583009751134816],[239843798079287870,5021902985892894619],[7203043366367198812,7238075805746621699],[9071432674597727163,2355002738045707979]],"handle_primary":[[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[7117413478945421556,[0.0,0.0]],[14131440324578863745,[0.0,0.0]],[9071432674597727163,[4.345679012345499,-3.555555555555543]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[7203043366367198812,[0.0,0.2962962962963047]],[7250062683967197158,[0.0,0.0]],[14571502160667941876,[-0.5925925925926094,0.0]]],"handle_end":[[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[7117413478945421556,[15.703703703703695,33.48148148148147]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[14131440324578863745,[2.962962962963047,-3.259259259259238]],[239843798079287870,[-21.502976534539364,2.3372800581021456]],[7250062683967197158,[0.0,0.0]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]],[12687760936062936386,[0.0,0.0]],[4499620435559196394,[8.59259259259261,5.629629629629619]]],"stroke":[[239843798079287870,0],[9071432674597727163,0],[7655921914272804429,0],[14571502160667941876,0],[12687760936062936386,0],[14131440324578863745,0],[4499620435559196394,0],[7203043366367198812,0],[7250062683967197158,0],[7117413478945421556,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}]],"remove_g1_continuous":[[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}],[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[266134622800431246,[525.7325506063205,282.1042056224195]],[7115673652122600762,[646.5386352539062,343.99395751953125]],[9852238672814254137,[879.7947439326053,110.54094004739208]],[12075466065090700811,[877.0370370370372,136.5925925925926]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[10196443086284452827,3769008694104161528,13980530488817762548],"start_point":[[2159953159628520134,9852238672814254137],[3166693019207180063,7115673652122600762],[17255728395700231433,12075466065090700811],[10242199012993595528,266134622800431246]],"end_point":[[10242199012993595528,9852238672814254137],[3166693019207180063,266134622800431246],[2159953159628520134,12075466065090700811],[17255728395700231433,7115673652122600762]],"handle_primary":[[2159953159628520134,[0.0,0.0]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]],[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[10242199012993595528,[137.37856050479058,-43.88198340019727]]],"handle_end":[[3166693019207180063,[0.0,0.0]],[2159953159628520134,[0.0,0.0]],[17255728395700231433,[165.46136474609386,67.5615980360243]],[10242199012993595528,[-15.794743932605344,36.71831921186718]]],"stroke":[[3166693019207180063,0],[2159953159628520134,0],[10242199012993595528,0],[17255728395700231433,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}],[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}],[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[9969822516610975381,[0.0,0.0]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[3124531241960914803,[589.9588477366256,64.65843621399176]],[18307826411292029066,[601.1756940654021,0.0]],[16686047298905200065,[283.3333333333333,354.66666666666663]],[16995054111951247369,[0.0,768.0]],[6057321578372831916,[708.148148148148,616.2962962962962]],[87630150944518163,[879.1111111111111,595.8518518518517]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[16788403743390653241,[467.99999999999994,487.3333333333333]],[16808246968731723098,[891.5555555555554,768.0]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[15885450050057549950,3124531241960914803],[9242150930423817167,15635903913637220842],[16224358815792062223,16808246968731723098],[515539069333222772,16686047298905200065],[12162371359208565273,16995054111951247369],[14879480148926424885,8323145223085840944],[5227512358023446442,87630150944518163],[17410347049685436697,8212340198835025146],[14715945740984195653,16788403743390653241],[9544743211426701912,6057321578372831916],[1662692131856898001,18307826411292029066],[8823161072525575433,8652457572576966876],[178608879920007638,9969822516610975381]],"end_point":[[8823161072525575433,3124531241960914803],[14879480148926424885,87630150944518163],[15885450050057549950,18307826411292029066],[17410347049685436697,6057321578372831916],[9544743211426701912,16788403743390653241],[1662692131856898001,9969822516610975381],[12162371359208565273,16808246968731723098],[515539069333222772,15635903913637220842],[16224358815792062223,8323145223085840944],[14715945740984195653,16686047298905200065],[9242150930423817167,8652457572576966876],[178608879920007638,16995054111951247369],[5227512358023446442,8212340198835025146]],"handle_primary":[[515539069333222772,[48.66666666666663,-23.999999999999943]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[16224358815792062223,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[8823161072525575433,[11.259252477575274,-22.666663275824646]],[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[12162371359208565273,[0.0,0.0]],[15885450050057549950,[11.193415637860312,-27.25925925925926]],[14879480148926424885,[0.0,0.0]]],"handle_end":[[14715945740984195653,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[5227512358023446442,[26.37037037037044,-2.3703703703704377]],[12162371359208565273,[0.0,0.0]],[9544743211426701912,[92.66666666666656,80.66666666666669]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[57.48148148148141,21.629629629629676]],[16224358815792062223,[0.0,0.0]],[15885450050057549950,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[515539069333222772,[-95.07216232621772,78.5378732260062]]],"stroke":[[178608879920007638,0],[15885450050057549950,0],[515539069333222772,0],[12162371359208565273,0],[17410347049685436697,0],[16224358815792062223,0],[5227512358023446442,0],[14879480148926424885,0],[14715945740984195653,0],[1662692131856898001,0],[9242150930423817167,0],[8823161072525575433,0],[9544743211426701912,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}],[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[17457877227823502997,[273.0,476.0]],[13436129231170586617,[481.3333333333333,768.0]],[16608607268690234590,[0.0,340.0]],[5992570223148766873,[-2.273736754432321e-13,768.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[5472571334856691465,17457877227823502997],[13284808974014161135,16608607268690234590],[4274372337254864190,5992570223148766873],[8776124420595946733,13436129231170586617]],"end_point":[[13284808974014161135,17457877227823502997],[5472571334856691465,13436129231170586617],[8776124420595946733,5992570223148766873],[4274372337254864190,16608607268690234590]],"handle_primary":[[5472571334856691465,[146.0,-13.0]],[8776124420595946733,[0.0,0.0]],[13284808974014161135,[161.73791370620617,43.57576470888159]],[4274372337254864190,[0.0,0.0]]],"handle_end":[[4274372337254864190,[0.0,0.0]],[5472571334856691465,[0.4078646547782227,-253.307727480567]],[8776124420595946733,[0.0,0.0]],[13284808974014161135,[-165.43581782916667,14.730586519035386]]],"stroke":[[13284808974014161135,0],[5472571334856691465,0],[4274372337254864190,0],[8776124420595946733,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}],[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[1009888023123207923,16332448509429125699],"delta":[[2904729023031858224,[491.3420376907663,506.7530051313737]],[3507505346656189771,[552.0,768.0000000000001]],[854708012647259796,[740.0,298.0]],[4175610638601362388,[957.0,324.0]],[2195807584570698921,[993.0,767.9999999999999]],[7821224334582795476,[1093.0,600.0]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[546565283439891712,5710832026764395735],"start_point":[[8570276641842028192,2195807584570698921],[4553965744616493549,3507505346656189771],[13993263006398686359,2904729023031858224],[17183285389582020412,7821224334582795476],[17304574948462342226,4175610638601362388],[6577640955869157325,854708012647259796]],"end_point":[[17304574948462342226,7821224334582795476],[13993263006398686359,854708012647259796],[4553965744616493549,2904729023031858224],[6577640955869157325,4175610638601362388],[17183285389582020412,2195807584570698921],[8570276641842028192,3507505346656189771]],"handle_primary":[[13993263006398686359,[0.0,-84.7537417270637]],[6577640955869157325,[102.0,-45.0]],[4553965744616493549,[0.0,0.0]],[17304574948462342226,[50.35246044959922,33.38607084805801]],[17183285389582020412,[-24.08196064282073,82.4624712920831]],[8570276641842028192,[0.0,0.0]]],"handle_end":[[13993263006398686359,[-102.0,45.0]],[17304574948462342226,[33.0,-113.0]],[8570276641842028192,[0.0,0.0]],[4553965744616493549,[0.0,135.2464055295568]],[17183285389582020412,[0.0,0.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]]],"stroke":[[17183285389582020412,0],[4553965744616493549,0],[17304574948462342226,0],[8570276641842028192,0],[6577640955869157325,0],[13993263006398686359,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}]],"remove_g1_continuous":[[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}],[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[4648964341912884959,[324.66666666666646,0.0]],[16569120368910754547,[-43.0,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]],[2003133867055127539,[1011.111083984375,786.3993530273438]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[6602880736207868665,3433930674303663828],"start_point":[[8214025514312603513,2003133867055127539],[7334532063810723038,16569120368910754547],[13431612844608018700,13758328146055368475]],"end_point":[[13431612844608018700,2003133867055127539],[7334532063810723038,13758328146055368475],[8214025514312603513,4648964341912884959]],"handle_primary":[[8214025514312603513,null],[13431612844608018700,null],[9030015329489789075,[69.08057198853999,-80.19415805947563]],[7334532063810723038,null]],"handle_end":[[9030015329489789075,[0.0,0.0]],[7334532063810723038,null],[13431612844608018700,null],[8214025514312603513,null],[2197140374690997530,[-24.333333333333485,-86.99999999999977]]],"stroke":[[8214025514312603513,0],[7334532063810723038,0],[13431612844608018700,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[7639287212006638253,[862.8888888888888,349.3333333333333]],[10412162547161259027,[887.3333333333333,376.0]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[7025422618543191491,[911.5555555555554,345.3333333333333]],[3831533579307185652,[880.4444444444443,357.3333333333333]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[6952183320761642858,[933.9259259259262,324.3456790123457]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[15117515618866904690,[819.1111111111109,354.44444444444434]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[12854270992100552972,7025422618543191491],[10498175376126066982,13654185056786459919],[15286139376878919277,15117515618866904690],[9330486019469919863,5269777039739103358],[15838384105575178137,15750781936547583892],[11214998966879437330,2802617302192982616],[10426255560432238561,6952183320761642858],[1241631398419524272,7639287212006638253],[10438163357339042361,10412162547161259027],[379744301215040936,3831533579307185652],[4069217348643062888,16937470333767479918]],"end_point":[[11214998966879437330,7639287212006638253],[10498175376126066982,6952183320761642858],[1241631398419524272,15117515618866904690],[12854270992100552972,3831533579307185652],[4069217348643062888,10412162547161259027],[10426255560432238561,2802617302192982616],[10438163357339042361,5269777039739103358],[9330486019469919863,13654185056786459919],[379744301215040936,16937470333767479918],[15286139376878919277,15750781936547583892],[15838384105575178137,7025422618543191491]],"handle_primary":[[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[379744301215040936,[-0.2222222222221717,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[15838384105575178137,[22.222222222222285,5.555555555555543]],[10498175376126066982,[0.0,0.0]],[12854270992100552972,[-0.4444444444443434,0.0]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[4069217348643062888,[0.0,0.0]]],"handle_end":[[12854270992100552972,[33.77777777777783,2.2222222222222285]],[15838384105575178137,[-20.0,2.0]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[379744301215040936,[0.0,0.0]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[11214998966879437330,[17.111111111111086,-12.888888888888856]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[9330486019469919863,[0.0,0.0]]],"stroke":[[9330486019469919863,0],[10426255560432238561,0],[10498175376126066982,0],[1241631398419524272,0],[4069217348643062888,0],[379744301215040936,0],[11214998966879437330,0],[10438163357339042361,0],[15286139376878919277,0],[12854270992100552972,0],[15838384105575178137,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}],[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[9496337687212684441,[732.148148148148,57.18518518518518]],[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[13517856880347849115,[777.1851851851851,92.44444444444446]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[14760110820354327749,[614.8148148148148,129.1851851851852]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[11696351847604335156,9496337687212684441],[16628058317667581864,9465415708990918986],[18226408581696793441,14760110820354327749],[3809009367670994230,13517856880347849115],[13496648265229692336,12398030966924498647],[10686631697241750410,2930103517622848405]],"end_point":[[3809009367670994230,12398030966924498647],[18226408581696793441,9465415708990918986],[13496648265229692336,2930103517622848405],[10686631697241750410,9496337687212684441],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115]],"handle_primary":[[10686631697241750410,[-13.037037037036953,-4.444444444444457]],[16628058317667581864,[41.185185185185105,-9.7777777777778]],[11696351847604335156,[-29.333333333333258,11.55555555555555]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]],[18226408581696793441,[0.0,0.0]],[3809009367670994230,[21.33333333333337,4.740740740740733]]],"handle_end":[[10686631697241750410,[29.333333333333258,-11.55555555555555]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[11696351847604335156,[54.81481481481478,-42.37037037037035]],[18226408581696793441,[-41.185185185185105,9.7777777777778]],[13496648265229692336,[13.037037037036953,4.444444444444457]]],"stroke":[[10686631697241750410,0],[18226408581696793441,0],[16628058317667581864,0],[11696351847604335156,0],[3809009367670994230,0],[13496648265229692336,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}],[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[12314285668680405002,[1085.0,181.0]],[7388288026322342161,[1277.0,319.0]],[12796056970187696453,[1418.0,0.0]],[5173348374891662425,[969.0,0.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[9177623211202289793,12314285668680405002],[10860608091363771974,5173348374891662425],[9065140293539496953,12796056970187696453],[18091265337503274797,7388288026322342161]],"end_point":[[9065140293539496953,5173348374891662425],[18091265337503274797,12796056970187696453],[9177623211202289793,7388288026322342161],[10860608091363771974,12314285668680405002]],"handle_primary":[[10860608091363771974,[0.0,0.0]],[9065140293539496953,[0.0,0.0]],[9177623211202289793,[-33.0,137.0]],[18091265337503274797,[178.0,-35.0]]],"handle_end":[[9065140293539496953,[0.0,0.0]],[10860608091363771974,[25.066898104916696,-104.0656072840481]],[9177623211202289793,[-77.81941867085992,15.301571086966838]],[18091265337503274797,[168.99998492988766,81.0]]],"stroke":[[9177623211202289793,0],[9065140293539496953,0],[18091265337503274797,0],[10860608091363771974,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}],[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[2189722519288419244,[796.0493827160494,202.2716049382716]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[15817054697695831753,[806.716049382716,206.22222222222223]],[4854280308383915721,[813.9259259259259,200.2962962962963]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[15744271344233846756,[785.7777777777777,205.62962962962965]],[5664077098702810122,[686.5185185185185,191.1111111111111]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[12058665768506126331,[693.7283950617283,174.35390946502056]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[13567509413382199058,[702.6831275720166,195.95061728395063]],[13877679667762731651,[743.4074074074074,234.66666666666669]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[1639796012074210121,6802441093413090533],[8279051592565434787,5664077098702810122],[3109091330258982137,15744271344233846756],[18299135553255571870,15817054697695831753],[5102625335252315850,15575201098426093294],[13932755083907220179,17729943149159368459],[16261506098907231989,13567509413382199058],[14941832641240060361,7436032950540776377],[94092576912261794,2189722519288419244],[2336956120616260883,12058665768506126331],[2367379450383978497,14178520291283306679],[3918280827204321712,4854280308383915721],[11037018395008586448,13877679667762731651]],"end_point":[[3918280827204321712,17729943149159368459],[8279051592565434787,14178520291283306679],[13932755083907220179,7436032950540776377],[94092576912261794,15817054697695831753],[2336956120616260883,6802441093413090533],[14941832641240060361,2189722519288419244],[3109091330258982137,13877679667762731651],[5102625335252315850,12058665768506126331],[18299135553255571870,15744271344233846756],[1639796012074210121,4854280308383915721],[11037018395008586448,13567509413382199058],[2367379450383978497,15575201098426093294],[16261506098907231989,5664077098702810122]],"handle_primary":[[18299135553255571870,[0.0,0.0]],[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[94092576912261794,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[16261506098907231989,[0.0,0.0]],[2336956120616260883,[0.0,0.0]],[3918280827204321712,[0.0,0.0]],[3109091330258982137,[0.0,0.0]],[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[13932755083907220179,[0.0,0.0]],[14941832641240060361,[0.0,0.0]],[11037018395008586448,[0.0,0.0]]],"handle_end":[[14941832641240060361,[7.1111111111111995,1.7777777777778]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[3918280827204321712,[0.0,0.0]],[13932755083907220179,[0.0,0.0]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[1639796012074210121,[-19.259259259259352,-3.259259259259238]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[94092576912261794,[0.0,0.0]],[2336956120616260883,[-65.77777777777783,13.333333333333314]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[16261506098907231989,[12.1395654462896,1.5502392023748983]]],"stroke":[[16261506098907231989,0],[1639796012074210121,0],[3918280827204321712,0],[11037018395008586448,0],[5102625335252315850,0],[13932755083907220179,0],[14941832641240060361,0],[94092576912261794,0],[3109091330258982137,0],[2336956120616260883,0],[8279051592565434787,0],[2367379450383978497,0],[18299135553255571870,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[5480246971175127548,[364.0,767.9999999999999]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[949359986970918930,[0.0,608.0]],[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[6561081452252813685,15926511461198813522,11231973846952426191],"start_point":[[9717584104793611782,949359986970918930],[12480300844056666979,6265491311473200676],[8951068186878308228,6461719056721357962],[15710828508798332384,5480246971175127548]],"end_point":[[15710828508798332384,6265491311473200676],[9717584104793611782,6461719056721357962],[12480300844056666979,949359986970918930],[8951068186878308228,5480246971175127548]],"handle_primary":[[12480300844056666979,null],[9717584104793611782,[0.0,0.0]],[15710828508798332384,null],[8951068186878308228,[121.00000000000006,-37.99999999999994]]],"handle_end":[[12480300844056666979,null],[9717584104793611782,[-63.1770926995265,19.84073985604961]],[15710828508798332384,null],[8951068186878308228,[-92.0,-81.99999999999989]]],"stroke":[[15710828508798332384,0],[9717584104793611782,0],[12480300844056666979,0],[8951068186878308228,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}],[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}],[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}]],"remove_g1_continuous":[[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[3123395482103162919,[-2.273736754432321e-13,689.0]],[16723991032614525258,[553.0000000000001,768.0]],[1623125309784127684,[643.9258958566198,633.6997633965701]],[2668496811386192321,[0.0,768.0]],[7209807874503344461,[188.0,694.6666666666669]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[3656277643115996070,16723991032614525258],[16287649713110748258,3123395482103162919],[1652964032977338610,7209807874503344461],[6789459806904610761,1623125309784127684],[16456150086799119359,2668496811386192321]],"end_point":[[6789459806904610761,7209807874503344461],[16456150086799119359,16723991032614525258],[1652964032977338610,3123395482103162919],[16287649713110748258,2668496811386192321],[3656277643115996070,1623125309784127684]],"handle_primary":[[16456150086799119359,[0.0,0.0]],[16287649713110748258,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[1652964032977338610,[-81.48609837852206,84.6759456460087]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]]],"handle_end":[[6789459806904610761,[187.33333333333343,-194.6666666666667]],[3656277643115996070,[0.0,0.0]],[1652964032977338610,[56.00000000000023,11.0]],[16456150086799119359,[0.0,0.0]],[16287649713110748258,[0.0,0.0]]],"stroke":[[3656277643115996070,0],[6789459806904610761,0],[1652964032977338610,0],[16287649713110748258,0],[16456150086799119359,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}],[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}]],"remove_g1_continuous":[[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}],[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[10156053545530752213,[1094.162353515625,594.2965698242188]],[16569120368910754547,[1361.0,768.0]],[4648964341912884959,[665.0000000000001,768.0]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[9030015329489789075,4648964341912884959],[2197140374690997530,10156053545530752213],[3433930674303663828,16569120368910754547]],"end_point":[[3433930674303663828,4648964341912884959],[9030015329489789075,10156053545530752213],[2197140374690997530,16569120368910754547]],"handle_primary":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[79.20069951994813,30.807024746222492]],[9030015329489789075,[32.66666666666663,-95.99999999999989]]],"handle_end":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[9030015329489789075,[-238.88331323750492,-92.9194336284096]]],"stroke":[[2197140374690997530,0],[9030015329489789075,0],[3433930674303663828,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[17147466439590042359,[526.0109927536641,282.1042175292969]],[7903705226822768120,[497.3827160493826,248.88888888888889]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[6082833770141706533,[504.0987654320987,184.6255144032922]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[2255088856072565305,13341364271767916194],[14649965831690031908,6082833770141706533],[801877719748058643,7903705226822768120],[9659144961849433642,17147466439590042359]],"end_point":[[801877719748058643,17147466439590042359],[14649965831690031908,7903705226822768120],[9659144961849433642,13341364271767916194],[2255088856072565305,6082833770141706533]],"handle_primary":[[801877719748058643,[13.173601585124231,23.615912208504938]],[14649965831690031908,[0.0,0.0]],[9659144961849433642,[0.0,0.0]],[2255088856072565305,[0.0,0.0]]],"handle_end":[[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[801877719748058643,[0.0,0.0]],[9659144961849433642,[195.55555555555569,-16.14814814814804]],[2255088856072565305,[-112.09876543209862,43.81893004115227]]],"stroke":[[14649965831690031908,0],[9659144961849433642,0],[801877719748058643,0],[2255088856072565305,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}],[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[9374180853656949931,[784.0000000000002,176.98765432098767]],[15245407364463454564,[773.530864197531,141.4320987654321]],[16958489363675356032,[658.172839506173,169.08641975308643]],[3438797896265725901,[795.4567901234569,94.41975308641976]],[13358295350421759755,[778.4691358024693,177.1851851851852]],[16005438712872589849,[817.1851851851852,94.61728395061728]],[4322398537034510509,[776.888888888889,117.53086419753087]],[10491326691824745018,[811.851851851852,148.54320987654322]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[1674257131044231065,[829.4320987654323,121.67901234567904]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[12873317883441611394,15245407364463454564],[8327087349631976772,4322398537034510509],[8528911024810728168,16005438712872589849],[198953627342130434,7347160684180114694],[3784798568712268630,13358295350421759755],[3235570761188242773,1674257131044231065],[16847383896493391194,10491326691824745018],[13015157349146777770,3438797896265725901],[16846650637386857857,9374180853656949931],[11663644781855838202,16958489363675356032]],"end_point":[[16846650637386857857,13358295350421759755],[12873317883441611394,16958489363675356032],[8528911024810728168,1674257131044231065],[16847383896493391194,9374180853656949931],[198953627342130434,4322398537034510509],[11663644781855838202,7347160684180114694],[8327087349631976772,3438797896265725901],[3784798568712268630,15245407364463454564],[3235570761188242773,10491326691824745018],[13015157349146777770,16005438712872589849]],"handle_primary":[[13015157349146777770,[0.0,0.0]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[16846650637386857857,[0.0,0.0]],[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[8528911024810728168,[5.530864197530946,5.925925925925924]],[16847383896493391194,[-17.185185185185105,13.234567901234584]],[12873317883441611394,[-19.75308641975323,2.172839506172835]],[11663644781855838202,[0.0,0.0]],[198953627342130434,[0.0,0.3950617283950635]]],"handle_end":[[16846650637386857857,[0.0,0.0]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[16847383896493391194,[0.0,0.0]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[3784798568712268630,[2.9629629629629335,5.135802469135797]],[8327087349631976772,[0.0,0.0]],[198953627342130434,[0.19753086419757435,13.82716049382715]],[3235570761188242773,[17.185185185185105,-13.234567901234584]]],"stroke":[[3784798568712268630,0],[16846650637386857857,0],[16847383896493391194,0],[13015157349146777770,0],[12873317883441611394,0],[3235570761188242773,0],[11663644781855838202,0],[198953627342130434,0],[8528911024810728168,0],[8327087349631976772,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}]],"remove_g1_continuous":[[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}],[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[9912917483675332510,[1536.0,254.00000000000009]],[11163144542703672167,[763.0,0.0]],[9403888920678312544,[1271.0,199.0]],[7233902871991446034,[908.0,134.0]],[5714042674660607880,[1536.0,0.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[3118709054343469746,9403888920678312544],[7099980686025805826,11163144542703672167],[11879054056208937348,7233902871991446034],[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880]],"end_point":[[3118709054343469746,9912917483675332510],[11879054056208937348,9403888920678312544],[7804540624589615499,11163144542703672167],[12085471811343146506,5714042674660607880],[7099980686025805826,7233902871991446034]],"handle_primary":[[3118709054343469746,[191.0,-106.0]],[11879054056208937348,[68.41365603453937,54.51084151791355]],[7099980686025805826,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[12085471811343146506,[0.0,0.0]]],"handle_end":[[12085471811343146506,[0.0,0.0]],[11879054056208937348,[-121.83694366711715,67.61631428646292]],[3118709054343469746,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]],[7804540624589615499,[0.0,0.0]]],"stroke":[[12085471811343146506,0],[7804540624589615499,0],[7099980686025805826,0],[3118709054343469746,0],[11879054056208937348,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}],[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-64,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,71]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-8,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,113]}}},"network_metadata":null}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,54]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,62]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,56]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,45]}}},"network_metadata":null}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,104]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,80]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,113]}}},"network_metadata":null}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,50]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,45]}}},"network_metadata":null}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,65]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,118]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[592.0696649941159,-2529.6713086742443],"tilt":0.0,"zoom":1.3353790580762406},"node_graph_to_viewport":[1.3353790580762406,0.0,0.0,1.3353790580762406,1494.0,-2557.0],"node_graph_top_right":[1405.5999755859375,0.0]},"selection_undo_history":[[],[],[],[8566844905246185636],[],[17740496701763775226],[],[4328376070224119511],[],[8566844905246185636],[16999130951959724657],[],[12709602171929957216],[6468742191365679953],[],[18087203100637857224],[],[12004065064978143915],[10080296672372912698],[12004065064978143915],[],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"Painted Dreams","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-708.878066550151,-430.76433468972016],"tilt":0.0,"zoom":0.8728439370010537},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file From 96fe907a94d84466123ef5e0600f005e81944d69 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 18:27:09 +0200 Subject: [PATCH 28/39] Convert from path segments to manipulator groups directly --- node-graph/gstd/src/vector.rs | 87 ++++++++++++++++++++++------------- 1 file changed, 55 insertions(+), 32 deletions(-) diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 5806a911cbe..fa5eac928c8 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -68,7 +68,7 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_subtract(upper_path_string, lower_path_string) }; - let boolean_operation_result = from_svg_string(&boolean_operation_string); + let boolean_operation_result = from_path(&boolean_operation_string); result.colinear_manipulators = boolean_operation_result.colinear_manipulators; result.point_domain = boolean_operation_result.point_domain; @@ -97,7 +97,7 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_union(upper_path_string, lower_path_string) }; - let boolean_operation_result = from_svg_string(&boolean_operation_string); + let boolean_operation_result = from_path(&boolean_operation_string); result.colinear_manipulators = boolean_operation_result.colinear_manipulators; result.point_domain = boolean_operation_result.point_domain; @@ -123,7 +123,7 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) #[allow(unused_unsafe)] let boolean_operation_string = unsafe { boolean_intersect(upper_path_string, lower_path_string) }; - let boolean_operation_result = from_svg_string(&boolean_operation_string); + let boolean_operation_result = from_path(&boolean_operation_string); result.colinear_manipulators = boolean_operation_result.colinear_manipulators; result.point_domain = boolean_operation_result.point_domain; @@ -149,7 +149,7 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) #[allow(unused_unsafe)] let boolean_intersection_string = unsafe { boolean_intersect(upper_path_string, lower_path_string) }; - let mut boolean_intersection_result = from_svg_string(&boolean_intersection_string); + let mut boolean_intersection_result = from_path(&boolean_intersection_string); boolean_intersection_result.transform = all_other_vector_data.transform; boolean_intersection_result.style = all_other_vector_data.style.clone(); @@ -161,7 +161,7 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) let lower_path_string = to_path(&any_intersection, transform_of_lower_into_space_of_upper); #[allow(unused_unsafe)] - let union_result = from_svg_string(&unsafe { boolean_union(upper_path_string, lower_path_string) }); + let union_result = from_path(&unsafe { boolean_union(upper_path_string, lower_path_string) }); any_intersection = union_result; any_intersection.transform = boolean_intersection_result.transform; @@ -221,27 +221,50 @@ fn to_path_segments(path: &mut Vec, subpath: &bezier_rs: } } fn from_path(path_data: &[Path]) -> VectorData { - let subpaths = path_data.iter().filter(|path| !path.is_empty()).map(|path| { - let mut cubics: Vec<_> = path.iter().map(|segment| segment.to_cubic()).collect(); - if cubics.len() > 1 { - cubics.push(cubics[0]); + const EPSILON: f64 = 1e-5; + + fn is_close(a: DVec2, b: DVec2) -> bool { + (a - b).length_squared() < EPSILON * EPSILON + } + + let mut all_subpaths = Vec::new(); + + for path in path_data.iter().filter(|path| !path.is_empty()) { + let cubics: Vec<[DVec2; 4]> = path.iter().map(|segment| segment.to_cubic()).collect(); + let mut groups = Vec::new(); + let mut current_start = None; + + for (index, cubic) in cubics.iter().enumerate() { + let [start, handle1, handle2, end] = *cubic; + + if current_start.is_none() || !is_close(start, current_start.unwrap()) { + // Start a new subpath + if !groups.is_empty() { + all_subpaths.push(Subpath::new(std::mem::take(&mut groups), false)); + } + // Use the correct in-handle (None) and out-handle for the start point + groups.push(ManipulatorGroup::new(start, None, Some(handle1))); + } else { + // Update the out-handle of the previous point + if let Some(last) = groups.last_mut() { + last.out_handle = Some(handle1); + } + } + + // Add the end point with the correct in-handle and out-handle (None) + groups.push(ManipulatorGroup::new(end, Some(handle2), None)); + + current_start = Some(end); + + // Check if this is the last segment + if index == cubics.len() - 1 { + all_subpaths.push(Subpath::new(groups, false)); + groups = Vec::new(); // Reset groups for the next path + } } + } - let groups: Vec> = cubics - .windows(2) - .map(|window| { - let end = window[1][0]; - let in_handle = window[0][2]; - let out_handle = window[1][1]; - - ManipulatorGroup::new(end, Some(in_handle), Some(out_handle)) - }) - .collect(); - - // Create a Subpath from the groups - Subpath::new(groups, true) - }); - VectorData::from_subpaths(subpaths, false) + VectorData::from_subpaths(all_subpaths, false) } fn from_svg_string(svg_string: &str) -> VectorData { @@ -313,11 +336,11 @@ pub fn convert_usvg_path(path: &usvg::Path) -> Vec> { // #[cfg(not(target_arch = "wasm32"))] type Path = Vec; -fn boolean_union(a: Path, b: Path) -> String { +fn boolean_union(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Union) } -fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { +fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> Vec { use path_bool::FillRule; let a_path = path_bool::path_to_path_data(&a, 0.001); let b_path = path_bool::path_to_path_data(&b, 0.001); @@ -333,17 +356,17 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> String { Vec::new() } }; - //results - let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); - // log::debug!("result: {}", string); - string + results + // let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); + // // log::debug!("result: {}", string); + // string } // #[cfg(not(target_arch = "wasm32"))] -fn boolean_subtract(a: Path, b: Path) -> String { +fn boolean_subtract(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Difference) } // #[cfg(not(target_arch = "wasm32"))] -fn boolean_intersect(a: Path, b: Path) -> String { +fn boolean_intersect(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Intersection) } From dcf8655c27e56454bfc34f43aa975532e8b0fcc4 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 19:16:33 +0200 Subject: [PATCH 29/39] Remove dead code --- node-graph/gstd/src/vector.rs | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index fa5eac928c8..7a48986ffaf 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -10,7 +10,6 @@ use graphene_core::{Color, GraphicElement, GraphicGroup}; use glam::{DAffine2, DVec2}; use path_bool::PathBooleanOperation; -use resvg::tiny_skia::PathSegment; #[cfg(target_arch = "wasm32")] use wasm_bindgen::prelude::*; @@ -189,14 +188,6 @@ fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) boolean_operation_result } -fn to_svg_string(vector: &VectorData, transform: DAffine2) -> String { - let mut path = String::new(); - for subpath in vector.stroke_bezier_paths() { - let _ = subpath.subpath_to_svg(&mut path, transform); - } - path -} - fn to_path(vector: &VectorData, transform: DAffine2) -> Vec { let mut path = Vec::new(); for subpath in vector.stroke_bezier_paths() { @@ -267,18 +258,6 @@ fn from_path(path_data: &[Path]) -> VectorData { VectorData::from_subpaths(all_subpaths, false) } -fn from_svg_string(svg_string: &str) -> VectorData { - let svg = format!(r#""#, svg_string); - let Some(tree) = usvg::Tree::from_str(&svg, &Default::default()).ok() else { - return VectorData::empty(); - }; - let Some(usvg::Node::Path(path)) = tree.root().children().first() else { - return VectorData::empty(); - }; - - VectorData::from_subpaths(convert_usvg_path(path), false) -} - pub fn convert_usvg_path(path: &usvg::Path) -> Vec> { let mut subpaths = Vec::new(); let mut groups = Vec::new(); From 0a5ddc23b10805df0f2743d226739835d82c5503 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 19:37:30 +0200 Subject: [PATCH 30/39] Fix clippy lints --- libraries/path-bool/Cargo.toml | 2 +- .../benches/path_segment_intersection.rs | 4 +- .../src/intersection_path_segment.rs | 3 - libraries/path-bool/src/path_boolean.rs | 59 ++++--------------- node-graph/gstd/src/vector.rs | 36 ++--------- 5 files changed, 22 insertions(+), 82 deletions(-) diff --git a/libraries/path-bool/Cargo.toml b/libraries/path-bool/Cargo.toml index 340f5fe1b85..6686b33adef 100644 --- a/libraries/path-bool/Cargo.toml +++ b/libraries/path-bool/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "path-bool" version = "0.1.0" -rust-version = "1.79" +rust-version = "1.81" authors = ["Graphite Authors "] edition = "2021" keywords = ["bezier", "boolean", "path", "ops", "operations", "2d"] diff --git a/libraries/path-bool/benches/path_segment_intersection.rs b/libraries/path-bool/benches/path_segment_intersection.rs index f3809dd46f7..33fc9aecebc 100644 --- a/libraries/path-bool/benches/path_segment_intersection.rs +++ b/libraries/path-bool/benches/path_segment_intersection.rs @@ -3,8 +3,8 @@ use glam::DVec2; use path_bool::*; pub fn criterion_benchmark(crit: &mut Criterion) { - crit.bench_function("intersect 1", |bench| bench.iter(|| path_segment_intersection(&a(), &b(), true, &EPS))); - crit.bench_function("intersect 2", |bench| bench.iter(|| path_segment_intersection(&c(), &d(), true, &EPS))); + crit.bench_function("intersect 1", |bench| bench.iter(|| path_segment_intersection(black_box(&a()), black_box(&b()), true, &EPS))); + crit.bench_function("intersect 2", |bench| bench.iter(|| path_segment_intersection(black_box(&c()), black_box(&d()), true, &EPS))); } criterion_group!(benches, criterion_benchmark); diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 6836f84905f..4ce98f60e40 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -143,9 +143,6 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin continue; // TODO: what to do? } - let diff1 = (seg0.start_param - seg0.end_param).abs(); - let diff2 = (seg1.start_param - seg1.end_param).abs(); - // dbg!(diff1.min(diff2)); let is_linear0 = bounding_box_max_extent(&seg0.bounding_box) <= eps.linear || (seg0.end_param - seg0.start_param).abs() < eps.param; let is_linear1 = bounding_box_max_extent(&seg1.bounding_box) <= eps.linear || (seg1.end_param - seg1.start_param).abs() < eps.param; diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index eebed7a9ae9..3a2eecf9dd7 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1,4 +1,3 @@ -use glam::DVec2; use slotmap::{new_key_type, SlotMap}; new_key_type! { @@ -19,12 +18,12 @@ use crate::intersection_path_segment::{path_segment_intersection, segments_equal use crate::path::Path; use crate::path_cubic_segment_self_intersection::path_cubic_segment_self_intersection; use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, sample_path_segment_at, split_segment_at, PathSegment}; +#[cfg(feature = "logging")] use crate::path_to_path_data; use crate::quad_tree::QuadTree; use crate::vector::{vectors_equal, Vector}; use std::cmp::Ordering; use std::collections::{HashMap, HashSet, VecDeque}; -use std::f64::consts::TAU; #[derive(Debug, Clone, Copy)] pub enum PathBooleanOperation { @@ -65,6 +64,7 @@ pub struct MajorGraphEdge { #[derive(Debug, Clone, Default)] pub struct MajorGraphVertex { + #[cfg_attr(not(feature = "logging"), expect(dead_code))] pub point: Vector, outgoing_edges: Vec, } @@ -85,25 +85,6 @@ struct MinorGraphEdge { } impl MinorGraphEdge { - #[cfg(feature = "logging")] - fn format_path(&self) -> String { - use std::fmt::Write; - let mut output = String::new(); - let segments = self.segments.clone(); - for segment in segments.into_iter() { - let _ = match segment { - PathSegment::Line(mut start, mut end) | PathSegment::Cubic(mut start, _, _, mut end) => { - if self.direction_flag.backwards() { - (end, start) = (start, end); - } - write!(&mut output, "{:.1},{:.1}-{:.1},{:.1} ", start.x, start.y, end.x, end.y) - } - x => write!(&mut output, "{:?}", x), - }; - } - output - } - fn start_segment(&self) -> PathSegment { let segment = self.segments[0]; match self.direction_flag { @@ -199,7 +180,7 @@ fn major_graph_to_dot(graph: &MajorGraph) -> String { for (vertex_key, vertex) in &graph.vertices { dot.push_str(&format!(" {:?} [label=\"{:.1},{:.1}\"]\n", (vertex_key.0.as_ffi() & 0xFF), vertex.point.x, vertex.point.y)); } - for (edge_key, edge) in &graph.edges { + for (_, edge) in &graph.edges { dot.push_str(&format!( " {:?} -> {:?}: {:0b}\n", (edge.incident_vertices[0].0.as_ffi() & 0xFF), @@ -393,9 +374,6 @@ impl Direction { pub fn forward(self) -> bool { self == Self::Forward } - pub fn backwards(self) -> bool { - self == Self::Backwards - } } // TODO:(@TrueDoctor) Optimize this by rounding each vertex up and down and then inserting them in a hashmap. This should remove the need for bbox calculations and the quad tree @@ -667,7 +645,7 @@ fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { } fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { - for vertex in graph.vertices.values_mut() { + for (vertex_key, vertex) in graph.vertices.iter_mut() { if vertex.outgoing_edges.len() > 2 { vertex.outgoing_edges.sort_by(|&a, &b| { // TODO(@TrueDoctor): Make more robust. The js version seems to sort the data slightly differently when the angles are reallly close. In that case put the edge wich was discovered later first. @@ -680,14 +658,14 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { } new }); - let edges: Vec<_> = vertex - .outgoing_edges - .iter() - .map(|key| (*key, &graph.edges[*key])) - .map(|(key, edge)| ((key.0.as_ffi() & 0xFF), (edge.start_segment()).start_angle())) - .collect(); - #[cfg(feature = "logging")] - dbg!(edges); + if cfg!(feature = "logging") { + eprintln!("Outgoing edges for {:?}:", vertex_key); + for &edge_key in &vertex.outgoing_edges { + let edge = &graph.edges[edge_key]; + let angle = edge.start_segment().start_angle(); + eprintln!("{:?}: {}°", edge_key.0, angle.to_degrees()) + } + } } } } @@ -926,9 +904,6 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { } #[cfg(feature = "logging")] eprintln!("component_vertices: {}", component_vertices.len()); - for edge in &dual_edges { - // eprintln!("{:?}", edge.incident_vertex); - } let windings: Option> = component_vertices .iter() @@ -971,21 +946,13 @@ fn compute_dual(minor_graph: &MinorGraph) -> Result { // return Err(BooleanError::MultipleOuterFaces); #[cfg(feature = "logging")] eprintln!("Found multiple outer faces: {areas:?}, falling back to area calculation"); - let (key, area) = *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap(); - if area < 0. { - reverse_winding = true; - } + let (key, _) = *areas.iter().max_by_key(|(_, area)| ((area.abs() * 1000.) as u64)).unwrap(); *key } else { *windings.iter().find(|(&_, winding)| (winding < &0) ^ reverse_winding).expect("No outer face of a component found.").0 }; #[cfg(feature = "logging")] dbg!(outer_face_key); - if reverse_winding { - for &edge in component_edges.iter() { - // dual_edges[edge].direction_flag = !dual_edges[edge].direction_flag; - } - } components.push(DualGraphComponent { vertices: component_vertices, diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 7a48986ffaf..0453292f807 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -10,8 +10,6 @@ use graphene_core::{Color, GraphicElement, GraphicGroup}; use glam::{DAffine2, DVec2}; use path_bool::PathBooleanOperation; -#[cfg(target_arch = "wasm32")] -use wasm_bindgen::prelude::*; pub struct BooleanOperationNode { operation: BooleanOp, @@ -211,6 +209,7 @@ fn to_path_segments(path: &mut Vec, subpath: &bezier_rs: path.push(segment); } } + fn from_path(path_data: &[Path]) -> VectorData { const EPSILON: f64 = 1e-5; @@ -302,18 +301,6 @@ pub fn convert_usvg_path(path: &usvg::Path) -> Vec> { subpaths } -// #[cfg(target_arch = "wasm32")] -// #[wasm_bindgen(module = "/../../frontend/src/utility-functions/computational-geometry.ts")] -// extern "C" { -// #[wasm_bindgen(js_name = booleanUnion)] -// fn boolean_union(path1: String, path2: String) -> String; -// #[wasm_bindgen(js_name = booleanSubtract)] -// fn boolean_subtract(path1: String, path2: String) -> String; -// #[wasm_bindgen(js_name = booleanIntersect)] -// fn boolean_intersect(path1: String, path2: String) -> String; -// } -// #[cfg(not(target_arch = "wasm32"))] - type Path = Vec; fn boolean_union(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Union) @@ -321,31 +308,20 @@ fn boolean_union(a: Path, b: Path) -> Vec { fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> Vec { use path_bool::FillRule; - let a_path = path_bool::path_to_path_data(&a, 0.001); - let b_path = path_bool::path_to_path_data(&b, 0.001); - // log::debug!("{:?}\n{:?}", a, b); - // let a = path_bool::path_from_path_data(&a_path); - // let b = path_bool::path_from_path_data(&b_path); - // log::debug!("{:?}\n{:?}", a, b); - // log::error!("Boolean error encontered while processing {a_path}\n {op:?}\n {b_path}"); - let results = match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { + match path_bool::path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, op) { Ok(results) => results, Err(e) => { - // log::error!("Boolean error {e:?} encontered while processing {a}\n {op:?}\n {b}"); + let a_path = path_bool::path_to_path_data(&a, 0.001); + let b_path = path_bool::path_to_path_data(&b, 0.001); + log::error!("Boolean error {e:?} encontered while processing {a_path}\n {op:?}\n {b_path}"); Vec::new() } - }; - results - // let string = results.iter().map(|result| path_bool::path_to_path_data(result, 0.001)).fold(String::new(), |o, n| o + &n); - // // log::debug!("result: {}", string); - // string + } } -// #[cfg(not(target_arch = "wasm32"))] fn boolean_subtract(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Difference) } -// #[cfg(not(target_arch = "wasm32"))] fn boolean_intersect(a: Path, b: Path) -> Vec { path_bool(a, b, PathBooleanOperation::Intersection) } From b15f30f342f0dc57a17fa9fb0d911836b01e8398 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 21:59:20 +0200 Subject: [PATCH 31/39] Replace functions in path segment with methods and add documentation --- libraries/path-bool/src/aabb.rs | 17 +- .../src/intersection_path_segment.rs | 55 +- libraries/path-bool/src/lib.rs | 14 +- libraries/path-bool/src/line_segment.rs | 4 +- libraries/path-bool/src/line_segment_aabb.rs | 2 +- libraries/path-bool/src/math.rs | 8 +- libraries/path-bool/src/path.rs | 15 +- libraries/path-bool/src/path_boolean.rs | 145 +++- libraries/path-bool/src/path_command.rs | 40 +- libraries/path-bool/src/path_data.rs | 24 +- libraries/path-bool/src/path_segment.rs | 781 ++++++++++++------ libraries/path-bool/src/vector.rs | 11 - 12 files changed, 713 insertions(+), 403 deletions(-) delete mode 100644 libraries/path-bool/src/vector.rs diff --git a/libraries/path-bool/src/aabb.rs b/libraries/path-bool/src/aabb.rs index 01d3f4682e8..fdb9f38d224 100644 --- a/libraries/path-bool/src/aabb.rs +++ b/libraries/path-bool/src/aabb.rs @@ -2,21 +2,21 @@ // // SPDX-License-Identifier: MIT -use crate::vector::Vector; +use glam::DVec2; #[derive(Clone, Copy, Debug, PartialEq)] -pub struct AaBb { +pub(crate) struct AaBb { pub top: f64, pub right: f64, pub bottom: f64, pub left: f64, } -pub fn bounding_boxes_overlap(a: &AaBb, b: &AaBb) -> bool { +pub(crate) fn bounding_boxes_overlap(a: &AaBb, b: &AaBb) -> bool { a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom } -pub fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { +pub(crate) fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { match a { Some(a) => AaBb { top: a.top.min(b.top), @@ -28,7 +28,7 @@ pub fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { } } -pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AaBb { +pub(crate) fn extend_bounding_box(bounding_box: Option, point: DVec2) -> AaBb { match bounding_box { Some(bb) => AaBb { top: bb.top.min(point.y), @@ -45,12 +45,11 @@ pub fn extend_bounding_box(bounding_box: Option, point: Vector) -> AaBb { } } -#[inline(never)] -pub fn bounding_box_max_extent(bounding_box: &AaBb) -> f64 { +pub(crate) fn bounding_box_max_extent(bounding_box: &AaBb) -> f64 { (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) } -pub fn bounding_box_around_point(point: Vector, padding: f64) -> AaBb { +pub(crate) fn bounding_box_around_point(point: DVec2, padding: f64) -> AaBb { AaBb { top: point.y - padding, right: point.x + padding, @@ -59,7 +58,7 @@ pub fn bounding_box_around_point(point: Vector, padding: f64) -> AaBb { } } -pub fn expand_bounding_box(bounding_box: &AaBb, padding: f64) -> AaBb { +pub(crate) fn expand_bounding_box(bounding_box: &AaBb, padding: f64) -> AaBb { AaBb { top: bounding_box.top - padding, right: bounding_box.right + padding, diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/intersection_path_segment.rs index 4ce98f60e40..abaac04cc66 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/intersection_path_segment.rs @@ -2,13 +2,14 @@ // // SPDX-License-Identifier: MIT +use glam::DVec2; + use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AaBb}; use crate::epsilons::Epsilons; use crate::line_segment::{line_segment_intersection, line_segments_intersect}; use crate::line_segment_aabb::line_segment_aabb_intersect; use crate::math::lerp; -use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, sample_path_segment_at, split_segment_at, PathSegment}; -use crate::vector::{vectors_equal, Vector}; +use crate::path_segment::PathSegment; #[derive(Clone)] struct IntersectionSegment { @@ -20,26 +21,26 @@ struct IntersectionSegment { #[inline(never)] fn subdivide_intersection_segment(int_seg: &IntersectionSegment) -> [IntersectionSegment; 2] { - let (seg0, seg1) = split_segment_at(&int_seg.seg, 0.5); + let (seg0, seg1) = int_seg.seg.split_at(0.5); let mid_param = (int_seg.start_param + int_seg.end_param) / 2.0; [ IntersectionSegment { seg: seg0, start_param: int_seg.start_param, end_param: mid_param, - bounding_box: path_segment_bounding_box(&seg0), + bounding_box: seg0.bounding_box(), }, IntersectionSegment { seg: seg1, start_param: mid_param, end_param: int_seg.end_param, - bounding_box: path_segment_bounding_box(&seg1), + bounding_box: seg1.bounding_box(), }, ] } #[inline(never)] -fn path_segment_to_line_segment(seg: &PathSegment) -> [Vector; 2] { +fn path_segment_to_line_segment(seg: &PathSegment) -> [DVec2; 2] { match seg { PathSegment::Line(start, end) => [*start, *end], PathSegment::Cubic(start, _, _, end) => [*start, *end], @@ -63,13 +64,13 @@ fn intersection_segments_overlap(seg0: &IntersectionSegment, seg1: &Intersection #[inline(never)] pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64) -> bool { match (*seg0, *seg1) { - (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => vectors_equal(start0, start1, point_epsilon) && vectors_equal(end0, end1, point_epsilon), + (PathSegment::Line(start0, end0), PathSegment::Line(start1, end1)) => start0.abs_diff_eq(start1, point_epsilon) && end0.abs_diff_eq(end1, point_epsilon), (PathSegment::Cubic(p00, p01, p02, p03), PathSegment::Cubic(p10, p11, p12, p13)) => { - let start_and_end_equal = vectors_equal(p00, p10, point_epsilon) && vectors_equal(p03, p13, point_epsilon); + let start_and_end_equal = p00.abs_diff_eq(p10, point_epsilon) && p03.abs_diff_eq(p13, point_epsilon); - let parameter_equal = vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon); - let direction1 = sample_path_segment_at(seg0, 0.1); - let direction2 = sample_path_segment_at(seg1, 0.1); + let parameter_equal = p01.abs_diff_eq(p11, point_epsilon) && p02.abs_diff_eq(p12, point_epsilon); + let direction1 = seg0.sample_at(0.1); + let direction2 = seg1.sample_at(0.1); let angles_equal = (direction1 - p00).angle_to(direction2 - p00).abs() < point_epsilon * 4.; if angles_equal { // eprintln!("deduplicating {:?} {:?} because the angles are equal", seg0, seg1); @@ -78,16 +79,16 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 start_and_end_equal && (parameter_equal || angles_equal) } (PathSegment::Quadratic(p00, p01, p02), PathSegment::Quadratic(p10, p11, p12)) => { - vectors_equal(p00, p10, point_epsilon) && vectors_equal(p01, p11, point_epsilon) && vectors_equal(p02, p12, point_epsilon) + p00.abs_diff_eq(p10, point_epsilon) && p01.abs_diff_eq(p11, point_epsilon) && p02.abs_diff_eq(p12, point_epsilon) } (PathSegment::Arc(p00, rx0, ry0, angle0, large_arc0, sweep0, p01), PathSegment::Arc(p10, rx1, ry1, angle1, large_arc1, sweep1, p11)) => { - vectors_equal(p00, p10, point_epsilon) && + p00.abs_diff_eq(p10, point_epsilon) && (rx0 - rx1).abs() < point_epsilon && (ry0 - ry1).abs() < point_epsilon && (angle0 - angle1).abs() < point_epsilon && // TODO: Phi can be anything if rx = ry. Also, handle rotations by Pi/2. large_arc0 == large_arc1 && sweep0 == sweep1 && - vectors_equal(p01, p11, point_epsilon) + p01.abs_diff_eq(p11, point_epsilon) } _ => false, } @@ -111,13 +112,13 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin seg: *seg0, start_param: 0.0, end_param: 1.0, - bounding_box: path_segment_bounding_box(seg0), + bounding_box: seg0.bounding_box(), }, IntersectionSegment { seg: *seg1, start_param: 0.0, end_param: 1.0, - bounding_box: path_segment_bounding_box(seg1), + bounding_box: seg1.bounding_box(), }, )]; let mut next_pairs = Vec::new(); @@ -188,10 +189,10 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin } fn calculate_overlap_intersections(seg0: &PathSegment, seg1: &PathSegment, eps: &Epsilons) -> Vec<[f64; 2]> { - let start0 = get_start_point(seg0); - let end0 = get_end_point(seg0); - let start1 = get_start_point(seg1); - let end1 = get_end_point(seg1); + let start0 = seg0.start(); + let end0 = seg0.end(); + let start1 = seg1.start(); + let end1 = seg1.end(); let mut intersections = Vec::new(); @@ -217,12 +218,12 @@ fn calculate_overlap_intersections(seg0: &PathSegment, seg1: &PathSegment, eps: // Remove duplicates and sort intersections intersections.sort_unstable_by(|a, b| a[0].partial_cmp(&b[0]).unwrap()); - intersections.dedup_by(|a, b| vectors_equal(Vector::new(a[0], a[1]), Vector::new(b[0], b[1]), eps.param)); + intersections.dedup_by(|a, b| DVec2::from(*a).abs_diff_eq(DVec2::from(*b), eps.param)); // Handle special cases if intersections.is_empty() { // Check if segments are identical - if vectors_equal(start0, start1, eps.point) && vectors_equal(end0, end1, eps.point) { + if (start0.abs_diff_eq(start1, eps.point)) && end0.abs_diff_eq(end1, eps.point) { return vec![[0.0, 0.0], [1.0, 1.0]]; } } else if intersections.len() > 2 { @@ -233,21 +234,21 @@ fn calculate_overlap_intersections(seg0: &PathSegment, seg1: &PathSegment, eps: intersections } -fn find_point_on_segment(seg: &PathSegment, point: Vector, eps: &Epsilons) -> Option { +fn find_point_on_segment(seg: &PathSegment, point: DVec2, eps: &Epsilons) -> Option { let start = 0.0; let end = 1.0; let mut t = 0.5; for _ in 0..32 { // Limit iterations to prevent infinite loops - let current_point = sample_path_segment_at(seg, t); + let current_point = seg.sample_at(t); - if vectors_equal(current_point, point, eps.point) { + if current_point.abs_diff_eq(point, eps.point) { return Some(t); } - let start_point = sample_path_segment_at(seg, start); - let end_point = sample_path_segment_at(seg, end); + let start_point = seg.sample_at(start); + let end_point = seg.sample_at(end); let dist_start = (point - start_point).length_squared(); let dist_end = (point - end_point).length_squared(); diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index e4e74956cd0..1f2e0c5050f 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -6,17 +6,19 @@ mod line_segment_aabb; mod math; mod path; mod path_boolean; +#[cfg(feature = "parsing")] mod path_command; mod path_cubic_segment_self_intersection; +#[cfg(feature = "parsing")] mod path_data; mod path_segment; mod quad_tree; -mod vector; #[cfg(test)] mod visual_tests; pub use intersection_path_segment::path_segment_intersection; -pub use path_boolean::{path_boolean, FillRule, PathBooleanOperation, EPS}; +pub use path_boolean::{path_boolean, BooleanError, FillRule, PathBooleanOperation, EPS}; +#[cfg(feature = "parsing")] pub use path_data::{path_from_path_data, path_to_path_data}; pub use path_segment::PathSegment; @@ -30,16 +32,8 @@ mod test { #[test] fn square() { - // let a = path_from_path_data( - // "M 39,20 A 19,19 0 0 1 20,39 19,19 0 0 1 1,20 19,19 0 0 1 20,1 19,19 0 0 1 39,20 Z", - // ); - // let b = path_from_path_data( - // "M 47,28 A 19,19 0 0 1 28,47 19,19 0 0 1 9,28 19,19 0 0 1 28,9 19,19 0 0 1 47,28 Z", - // ); let a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); let b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); - // let a = path_from_path_data("M 0 0 L 10 0 L 5 10 Z"); - // let b = path_from_path_data("M 0 5 L 10 5 L 5 15 Z"); let union = path_boolean( &a, path_boolean::FillRule::NonZero, diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/line_segment.rs index 7a76802e886..b0ef1fe9260 100644 --- a/libraries/path-bool/src/line_segment.rs +++ b/libraries/path-bool/src/line_segment.rs @@ -2,9 +2,9 @@ // // SPDX-License-Identifier: MIT -use crate::vector::Vector; +use glam::DVec2; -pub type LineSegment = [Vector; 2]; +pub type LineSegment = [DVec2; 2]; const COLLINEAR_EPS: f64 = f64::EPSILON * 64.0; diff --git a/libraries/path-bool/src/line_segment_aabb.rs b/libraries/path-bool/src/line_segment_aabb.rs index ea188b04a10..b5bed58d684 100644 --- a/libraries/path-bool/src/line_segment_aabb.rs +++ b/libraries/path-bool/src/line_segment_aabb.rs @@ -29,7 +29,7 @@ fn out_code(x: f64, y: f64, bounding_box: &AaBb) -> u8 { code } -pub fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AaBb) -> bool { +pub(crate) fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AaBb) -> bool { let [mut p0, mut p1] = seg; let mut outcode0 = out_code(p0.x, p0.y, bounding_box); diff --git a/libraries/path-bool/src/math.rs b/libraries/path-bool/src/math.rs index f8adf3a5c28..5b58ca6564f 100644 --- a/libraries/path-bool/src/math.rs +++ b/libraries/path-bool/src/math.rs @@ -4,7 +4,7 @@ // TODO(@TrueDoctor) check math -use crate::vector::Vector; +use glam::DVec2; pub use std::f64::consts::PI; pub fn lin_map(value: f64, in_min: f64, in_max: f64, out_min: f64, out_max: f64) -> f64 { @@ -15,11 +15,7 @@ pub fn lerp(a: f64, b: f64, t: f64) -> f64 { a + (b - a) * t } -pub fn deg2rad(deg: f64) -> f64 { - (deg / 180.0) * PI -} - -pub fn vector_angle(u: Vector, v: Vector) -> f64 { +pub fn vector_angle(u: DVec2, v: DVec2) -> f64 { const EPS: f64 = 1e-12; let sign = u.x * v.y - u.y * v.x; diff --git a/libraries/path-bool/src/path.rs b/libraries/path-bool/src/path.rs index d5edd54449f..5a61688462a 100644 --- a/libraries/path-bool/src/path.rs +++ b/libraries/path-bool/src/path.rs @@ -6,11 +6,10 @@ use glam::DVec2; use crate::path_command::{to_absolute_commands, AbsolutePathCommand, PathCommand}; use crate::path_segment::PathSegment; -use crate::vector::{vectors_equal, Vector}; pub type Path = Vec; -fn reflect_control_point(point: Vector, control_point: Vector) -> Vector { +fn reflect_control_point(point: DVec2, control_point: DVec2) -> DVec2 { point * 2.0 - control_point } @@ -18,9 +17,9 @@ pub fn path_from_commands(commands: I) -> impl Iterator where I: IntoIterator, { - let mut first_point: Option = None; - let mut last_point: Option = None; - let mut last_control_point: Option = None; + let mut first_point: Option = None; + let mut last_point: Option = None; + let mut last_control_point: Option = None; to_absolute_commands(commands).filter_map(move |cmd| match cmd { AbsolutePathCommand::M(point) => { @@ -95,13 +94,13 @@ pub fn path_to_commands<'a, I>(segments: I, eps: f64) -> impl Iterator + 'a, { - let mut last_point: Option = None; + let mut last_point: Option = None; segments.into_iter().flat_map(move |seg| { - let start = crate::path_segment::get_start_point(seg); + let start = seg.start(); let mut commands = Vec::new(); - if last_point.map_or(true, |lp| !vectors_equal(start, lp, eps)) { + if last_point.map_or(true, |lp| !start.abs_diff_eq(lp, eps)) { commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); } diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index 3a2eecf9dd7..f5ec01c2e6d 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -17,11 +17,11 @@ use crate::epsilons::Epsilons; use crate::intersection_path_segment::{path_segment_intersection, segments_equal}; use crate::path::Path; use crate::path_cubic_segment_self_intersection::path_cubic_segment_self_intersection; -use crate::path_segment::{get_end_point, get_start_point, path_segment_bounding_box, reverse_path_segment, sample_path_segment_at, split_segment_at, PathSegment}; +use crate::path_segment::PathSegment; #[cfg(feature = "logging")] use crate::path_to_path_data; use crate::quad_tree::QuadTree; -use crate::vector::{vectors_equal, Vector}; +use glam::DVec2; use std::cmp::Ordering; use std::collections::{HashMap, HashSet, VecDeque}; @@ -65,7 +65,7 @@ pub struct MajorGraphEdge { #[derive(Debug, Clone, Default)] pub struct MajorGraphVertex { #[cfg_attr(not(feature = "logging"), expect(dead_code))] - pub point: Vector, + pub point: DVec2, outgoing_edges: Vec, } @@ -89,10 +89,12 @@ impl MinorGraphEdge { let segment = self.segments[0]; match self.direction_flag { Direction::Forward => segment, - Direction::Backwards => reverse_path_segment(&segment), + Direction::Backwards => segment.reverse(), } } } +// Compares Segments based on their derivative at the start. If the derivative +// is equal, check the curvature instead. This should correctly sort most instances. fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { let angle_a = a.start_angle(); let angle_b = b.start_angle(); @@ -100,7 +102,6 @@ fn compare_segments(a: &PathSegment, b: &PathSegment) -> Ordering { // Normalize angles to [0, 2π) let angle_a = (angle_a * 1000.).round() / 1000.; let angle_b = (angle_b * 1000.).round() / 1000.; - // dbg!(a, angle_a.to_degrees(), b, angle_b.to_degrees()); // Compare angles first match angle_b.partial_cmp(&angle_a) { @@ -226,14 +227,14 @@ fn dual_graph_to_dot(components: &[DualGraphComponent], edges: &SlotMap impl Fn(&PathSegment) -> Option { move |seg| { - if bounding_box_max_extent(&path_segment_bounding_box(seg)) < EPS.point { + if bounding_box_max_extent(&seg.bounding_box()) < EPS.point { return None; } match seg { // Convert Line Segments expressed as cubic beziers to proper line segments PathSegment::Cubic(start, _, _, end) => { - let direction = sample_path_segment_at(seg, 0.1); + let direction = seg.sample_at(0.1); if (*end - *start).angle_to(direction - *start).abs() < EPS.point * 4. { Some((PathSegment::Line(*start, *end), parent)) } else { @@ -256,15 +257,15 @@ fn split_at_self_intersections(edges: &mut Vec) { } let [t1, t2] = intersection; if (t1 - t2).abs() < EPS.param { - let (seg1, seg2) = split_segment_at(seg, t1); + let (seg1, seg2) = seg.split_at(t1); *seg = seg1; new_edges.push((seg2, *parent)); } else { - let (seg1, tmp_seg) = split_segment_at(seg, t1); - let (seg2, seg3) = split_segment_at(&tmp_seg, (t2 - t1) / (1.0 - t1)); + let (seg1, tmp_seg) = seg.split_at(t1); + let (seg2, seg3) = &tmp_seg.split_at((t2 - t1) / (1.0 - t1)); *seg = seg1; - new_edges.push((seg2, *parent)); - new_edges.push((seg3, *parent)); + new_edges.push((*seg2, *parent)); + new_edges.push((*seg3, *parent)); } } } @@ -274,7 +275,7 @@ fn split_at_self_intersections(edges: &mut Vec) { fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec, Option) { // Step 1: Add bounding boxes to edges - let with_bounding_box: Vec = edges.iter().map(|(seg, parent)| (*seg, *parent, path_segment_bounding_box(seg))).collect(); + let with_bounding_box: Vec = edges.iter().map(|(seg, parent)| (*seg, *parent, seg.bounding_box())).collect(); // Step 2: Calculate total bounding box let total_bounding_box = with_bounding_box.iter().fold(None, |acc, (_, _, bb)| Some(merge_bounding_boxes(acc, bb))); @@ -297,9 +298,8 @@ fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec (Vec 1.0 - EPS.param { continue; } - let (seg1, seg2) = split_segment_at(&tmp_seg, tt); - new_edges.push((seg1, parent, path_segment_bounding_box(&seg1))); + let (seg1, seg2) = tmp_seg.split_at(tt); + new_edges.push((seg1, parent, seg1.bounding_box())); tmp_seg = seg2; } - new_edges.push((tmp_seg, parent, path_segment_bounding_box(&tmp_seg))); + new_edges.push((tmp_seg, parent, tmp_seg.bounding_box())); } else { - new_edges.push((seg, parent, path_segment_bounding_box(&seg))); + new_edges.push((seg, parent, seg.bounding_box())); } } @@ -389,7 +389,7 @@ fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGra let mut vertex_pair_id_to_edges: HashMap<_, Vec<(MajorGraphEdgeStage2, MajorEdgeKey, MajorEdgeKey)>> = HashMap::new(); for (seg, parent, bounding_box) in edges { - let mut get_vertex = |point: Vector| -> MajorVertexKey { + let mut get_vertex = |point: DVec2| -> MajorVertexKey { let box_around_point = bounding_box_around_point(point, EPS.point); if let Some(&existing_vertex) = vertex_tree.find(&box_around_point).iter().next() { existing_vertex @@ -400,19 +400,19 @@ fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGra } }; - let start_vertex = get_vertex(get_start_point(seg)); - let end_vertex = get_vertex(get_end_point(seg)); + let start_vertex = get_vertex(seg.start()); + let end_vertex = get_vertex(seg.end()); if start_vertex == end_vertex { match seg { PathSegment::Line(..) => continue, PathSegment::Cubic(_, c1, c2, _) => { - if vectors_equal(*c1, *c2, EPS.point) { + if c1.abs_diff_eq(*c2, EPS.point) { continue; } } PathSegment::Quadratic(_, c, _) => { - if vectors_equal(get_start_point(seg), *c, EPS.point) { + if seg.start().abs_diff_eq(*c, EPS.point) { continue; } } @@ -425,7 +425,7 @@ fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGra if let Some(existing_edges) = vertex_pair_id_to_edges.get(&vertex_pair_id) { if let Some(existing_edge) = existing_edges .iter() - .find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point) || segments_equal(&reverse_path_segment(seg), &other_seg.0, EPS.point)) + .find(|(other_seg, ..)| segments_equal(seg, &other_seg.0, EPS.point) || segments_equal(&seg.reverse(), &other_seg.0, EPS.point)) { *parents.entry(existing_edge.1).or_default() |= parent; *parents.entry(existing_edge.2).or_default() |= parent; @@ -633,9 +633,9 @@ fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { // eprintln!("{edge:?}"); //, edge.direction_flag.forward()); let (p0, p1) = if edge.direction_flag.forward() { - (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, EPS.param)) + (seg.sample_at(0.0), seg.sample_at(EPS.param)) } else { - (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - EPS.param)) + (seg.sample_at(1.0), seg.sample_at(1.0 - EPS.param)) }; // eprintln!("{p0:?} {p1:?}"); @@ -670,7 +670,7 @@ fn sort_outgoing_edges_by_angle(graph: &mut MinorGraph) { } } -fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap) -> Vec { +fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap) -> Vec { const CNT: usize = 3; // #[cfg(feature = "logging")] // eprintln!("incident node counts {}", face.incident_edges.len()); @@ -684,7 +684,7 @@ fn face_to_polygon(face: &DualGraphVertex, edges: &SlotMap bool { dy1 == dy2 } -fn line_segment_intersects_horizontal_ray(a: Vector, b: Vector, point: Vector) -> bool { +fn line_segment_intersects_horizontal_ray(a: DVec2, b: DVec2, point: DVec2) -> bool { if !interval_crosses_point(a.y, b.y, point.y) { return false; } @@ -705,7 +705,7 @@ fn line_segment_intersects_horizontal_ray(a: Vector, b: Vector, point: Vector) - x >= point.x } -fn compute_point_winding(polygon: &[Vector], tested_point: Vector) -> i32 { +fn compute_point_winding(polygon: &[DVec2], tested_point: DVec2) -> i32 { if polygon.len() <= 2 { return 0; } @@ -978,7 +978,7 @@ fn get_next_edge(edge_key: MinorEdgeKey, graph: &MinorGraph) -> MinorEdgeKey { } fn test_inclusion(a: &DualGraphComponent, b: &DualGraphComponent, edges: &SlotMap, vertices: &SlotMap) -> Option { - let tested_point = get_start_point(&edges[a.edges[0]].segments[0]); + let tested_point = edges[a.edges[0]].segments[0].start(); for (face_key, face) in b.vertices.iter().map(|&key| (key, &vertices[key])) { if Some(face_key) == b.outer_face { continue; @@ -996,7 +996,7 @@ fn test_inclusion(a: &DualGraphComponent, b: &DualGraphComponent, edges: &SlotMa } None } -fn bounding_box_intersects_horizontal_ray(bounding_box: &AaBb, point: Vector) -> bool { +fn bounding_box_intersects_horizontal_ray(bounding_box: &AaBb, point: DVec2) -> bool { interval_crosses_point(bounding_box.top, bounding_box.bottom, point[1]) && bounding_box.right >= point[0] } @@ -1005,8 +1005,8 @@ struct IntersectionSegment { seg: PathSegment, } -pub fn path_segment_horizontal_ray_intersection_count(orig_seg: &PathSegment, point: Vector) -> usize { - let total_bounding_box = path_segment_bounding_box(orig_seg); +pub fn path_segment_horizontal_ray_intersection_count(orig_seg: &PathSegment, point: DVec2) -> usize { + let total_bounding_box = orig_seg.bounding_box(); if !bounding_box_intersects_horizontal_ray(&total_bounding_box, point) { return 0; @@ -1022,13 +1022,13 @@ pub fn path_segment_horizontal_ray_intersection_count(orig_seg: &PathSegment, po let mut next_segments = Vec::new(); for segment in segments { if bounding_box_max_extent(&segment.bounding_box) < EPS.linear { - if line_segment_intersects_horizontal_ray(get_start_point(&segment.seg), get_end_point(&segment.seg), point) { + if line_segment_intersects_horizontal_ray(segment.seg.start(), segment.seg.end(), point) { count += 1; } } else { - let split = split_segment_at(&segment.seg, 0.5); - let bounding_box0 = path_segment_bounding_box(&split.0); - let bounding_box1 = path_segment_bounding_box(&split.1); + let split = &segment.seg.split_at(0.5); + let bounding_box0 = split.0.bounding_box(); + let bounding_box1 = split.1.bounding_box(); if bounding_box_intersects_horizontal_ray(&bounding_box0, point) { next_segments.push(IntersectionSegment { @@ -1200,7 +1200,7 @@ fn walk_faces<'a>(faces: &'a HashSet, edges: &SlotMap Result, BooleanError> { let mut unsplit_edges: Vec = a.iter().map(segment_to_edge(1)).chain(b.iter().map(segment_to_edge(2))).flatten().collect(); @@ -1553,9 +1608,9 @@ mod tests { fn get_incidence_angle(edge: &MinorGraphEdge) -> f64 { let seg = &edge.segments[0]; // First segment is always the incident one in both fwd and bwd let (p0, p1) = if edge.direction_flag.forward() { - (sample_path_segment_at(seg, 0.0), sample_path_segment_at(seg, 0.1)) + (seg.sample_at(0.0), seg.sample_at(0.1)) } else { - (sample_path_segment_at(seg, 1.0), sample_path_segment_at(seg, 1.0 - 0.1)) + (seg.sample_at(1.0), seg.sample_at(1.0 - 0.1)) }; ((p1.y - p0.y).atan2(p1.x - p0.x) + TAU) % TAU } diff --git a/libraries/path-bool/src/path_command.rs b/libraries/path-bool/src/path_command.rs index b9567ea943e..b5f89c312fb 100644 --- a/libraries/path-bool/src/path_command.rs +++ b/libraries/path-bool/src/path_command.rs @@ -2,19 +2,19 @@ // // SPDX-License-Identifier: MIT -use crate::vector::Vector; +use glam::DVec2; #[derive(Clone, Debug)] pub enum AbsolutePathCommand { H(f64), V(f64), - M(Vector), - L(Vector), - C(Vector, Vector, Vector), - S(Vector, Vector), - Q(Vector, Vector), - T(Vector), - A(f64, f64, f64, bool, bool, Vector), + M(DVec2), + L(DVec2), + C(DVec2, DVec2, DVec2), + S(DVec2, DVec2), + Q(DVec2, DVec2), + T(DVec2), + A(f64, f64, f64, bool, bool, DVec2), Z, } @@ -41,7 +41,7 @@ pub fn to_absolute_commands(commands: I) -> impl Iterator, { - let mut last_point = Vector::ZERO; + let mut last_point = DVec2::ZERO; let mut first_point = last_point; commands.into_iter().flat_map(move |cmd| match cmd { @@ -91,36 +91,36 @@ where vec![AbsolutePathCommand::L(last_point)] } RelativePathCommand::M(dx, dy) => { - last_point += Vector::new(dx, dy); + last_point += DVec2::new(dx, dy); first_point = last_point; vec![AbsolutePathCommand::M(last_point)] } RelativePathCommand::L(dx, dy) => { - last_point += Vector::new(dx, dy); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::L(last_point)] } RelativePathCommand::C(dx1, dy1, dx2, dy2, dx, dy) => { - let c1 = last_point + Vector::new(dx1, dy1); - let c2 = last_point + Vector::new(dx2, dy2); - last_point += Vector::new(dx, dy); + let c1 = last_point + DVec2::new(dx1, dy1); + let c2 = last_point + DVec2::new(dx2, dy2); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::C(c1, c2, last_point)] } RelativePathCommand::S(dx2, dy2, dx, dy) => { - let c2 = last_point + Vector::new(dx2, dy2); - last_point += Vector::new(dx, dy); + let c2 = last_point + DVec2::new(dx2, dy2); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::S(c2, last_point)] } RelativePathCommand::Q(dx1, dy1, dx, dy) => { - let control = last_point + Vector::new(dx1, dy1); - last_point += Vector::new(dx, dy); + let control = last_point + DVec2::new(dx1, dy1); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::Q(control, last_point)] } RelativePathCommand::T(dx, dy) => { - last_point += Vector::new(dx, dy); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::T(last_point)] } RelativePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, dx, dy) => { - last_point += Vector::new(dx, dy); + last_point += DVec2::new(dx, dy); vec![AbsolutePathCommand::A(rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, last_point)] } }, diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/path_data.rs index 7e646484ae5..2ec78beab69 100644 --- a/libraries/path-bool/src/path_data.rs +++ b/libraries/path-bool/src/path_data.rs @@ -4,7 +4,7 @@ use crate::path::{path_from_commands, path_to_commands, Path}; use crate::path_command::{AbsolutePathCommand, PathCommand, RelativePathCommand}; -use crate::vector::Vector; +use glam::DVec2; use regex::Regex; pub fn commands_from_path_data(d: &str) -> Vec { @@ -54,29 +54,29 @@ pub fn commands_from_path_data(d: &str) -> Vec { while let Some(cmd) = get_cmd(&mut i, last_cmd) { last_cmd = cmd; match cmd { - 'M' => commands.push(PathCommand::Absolute(AbsolutePathCommand::M(Vector::new(get_float(&mut i), get_float(&mut i))))), - 'L' => commands.push(PathCommand::Absolute(AbsolutePathCommand::L(Vector::new(get_float(&mut i), get_float(&mut i))))), + 'M' => commands.push(PathCommand::Absolute(AbsolutePathCommand::M(DVec2::new(get_float(&mut i), get_float(&mut i))))), + 'L' => commands.push(PathCommand::Absolute(AbsolutePathCommand::L(DVec2::new(get_float(&mut i), get_float(&mut i))))), 'C' => commands.push(PathCommand::Absolute(AbsolutePathCommand::C( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), ))), 'S' => commands.push(PathCommand::Absolute(AbsolutePathCommand::S( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), ))), 'Q' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Q( - Vector::new(get_float(&mut i), get_float(&mut i)), - Vector::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), ))), - 'T' => commands.push(PathCommand::Absolute(AbsolutePathCommand::T(Vector::new(get_float(&mut i), get_float(&mut i))))), + 'T' => commands.push(PathCommand::Absolute(AbsolutePathCommand::T(DVec2::new(get_float(&mut i), get_float(&mut i))))), 'A' => commands.push(PathCommand::Absolute(AbsolutePathCommand::A( get_float(&mut i), get_float(&mut i), get_float(&mut i), get_bool(&mut i), get_bool(&mut i), - Vector::new(get_float(&mut i), get_float(&mut i)), + DVec2::new(get_float(&mut i), get_float(&mut i)), ))), 'Z' | 'z' => commands.push(PathCommand::Absolute(AbsolutePathCommand::Z)), 'H' => commands.push(PathCommand::Absolute(AbsolutePathCommand::H(get_float(&mut i)))), diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path_segment.rs index f8ef99742b6..d00e79c583a 100644 --- a/libraries/path-bool/src/path_segment.rs +++ b/libraries/path-bool/src/path_segment.rs @@ -1,30 +1,109 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT +//! Defines the `PathSegment` enum and related functionality for representing and +//! manipulating path segments in 2D space. +//! +//! This module provides implementations for various types of path segments including +//! lines, cubic and quadratic Bézier curves, and elliptical arcs. It also includes +//! utility functions for operations such as bounding box calculation, segment splitting, +//! and arc-to-cubic conversion. +//! +//! The implementations in this module closely follow the SVG path specification, +//! making it suitable for use in vector graphics applications. use glam::{DMat2, DMat3, DVec2}; use std::f64::consts::{PI, TAU}; use crate::aabb::{bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AaBb}; -use crate::math::{deg2rad, lerp, vector_angle}; -use crate::vector::{vectors_equal, Vector}; +use crate::math::{lerp, vector_angle}; use crate::EPS; +/// Represents a segment of a path in a 2D space, based on the SVG path specification. +/// +/// This enum closely follows the path segment types defined in the SVG 2 specification. +/// For more details, see: +/// +/// Each variant of this enum corresponds to a different type of path segment: +/// - Line: A straight line between two points. +/// - Cubic: A cubic Bézier curve. +/// - Quadratic: A quadratic Bézier curve. +/// - Arc: An elliptical arc. +/// +/// # Examples +/// +/// Creating a line segment: +/// ``` +/// use path_bool::PathSegment; +/// use glam::DVec2; +/// +/// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(1.0, 1.0)); +/// ``` +/// +/// Creating a cubic Bézier curve: +/// ``` +/// use path_bool::PathSegment; +/// use glam::DVec2; +/// +/// let cubic = PathSegment::Cubic( +/// DVec2::new(0.0, 0.0), +/// DVec2::new(1.0, 0.0), +/// DVec2::new(1.0, 1.0), +/// DVec2::new(2.0, 1.0) +/// ); +/// ``` #[derive(Clone, Copy, Debug, PartialEq)] pub enum PathSegment { - Line(Vector, Vector), - Cubic(Vector, Vector, Vector, Vector), - Quadratic(Vector, Vector, Vector), - Arc(Vector, f64, f64, f64, bool, bool, Vector), + /// A line segment from the first point to the second. + /// Corresponds to the SVG "L" command. + Line(DVec2, DVec2), + + /// A cubic Bézier curve with start point, two control points, and end point. + /// Corresponds to the SVG "C" command. + Cubic(DVec2, DVec2, DVec2, DVec2), + + /// A quadratic Bézier curve with start point, control point, and end point. + /// Corresponds to the SVG "Q" command. + Quadratic(DVec2, DVec2, DVec2), + + /// An elliptical arc. + /// Corresponds to the SVG "A" command. + /// + /// Parameters: + /// - Start point + /// - X-axis radius + /// - Y-axis radius + /// - X-axis rotation (in radians) + /// - Large arc flag (true if the arc should be greater than or equal to 180 degrees) + /// - Sweep flag (true if the arc should be drawn in a "positive-angle" direction) + /// - End point + Arc(DVec2, f64, f64, f64, bool, bool, DVec2), } impl PathSegment { + /// Calculates the angle of the tangent at the start point of the segment. + /// + /// This method computes the angle (in radians) of the tangent vector at the + /// beginning of the path segment. The angle is measured clockwise + /// from the positive x-axis. + /// + /// # Returns + /// + /// A float representing the angle in radians, normalized to the range [0, 2π). + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// use std::f64::consts::{TAU, FRAC_PI_4}; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(1.0, 1.0)); + /// assert_eq!(line.start_angle(), TAU - (FRAC_PI_4)); + /// ``` pub fn start_angle(&self) -> f64 { let angle = match *self { PathSegment::Line(start, end) => (end - start).angle_to(DVec2::X), PathSegment::Cubic(start, control1, control2, _) => { let diff = control1 - start; - if vectors_equal(diff, DVec2::ZERO, EPS.point) { + if diff.abs_diff_eq(DVec2::ZERO, EPS.point) { // if this diff were empty too, the segments would have been convertet to a line (control2 - start).angle_to(DVec2::X) } else { @@ -33,12 +112,39 @@ impl PathSegment { } // Apply same logic as for cubic bezier PathSegment::Quadratic(start, control, _) => (control - start).to_angle(), - PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_angle(), + PathSegment::Arc(..) => self.arc_segment_to_cubics(0.001)[0].start_angle(), }; use std::f64::consts::TAU; (angle + TAU) % TAU } + /// Computes the curvature at the start point of the segment. + /// + /// The curvature is a measure of how sharply a curve bends. A straight line + /// has a curvature of 0, while a tight curve has a higher curvature value. + /// + /// # Returns + /// + /// A float representing the curvature. Positive values indicate a left + /// curve, while negative values indicate a right curve. + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(1.0, 1.0)); + /// assert_eq!(line.start_curvature(), 0.0); + /// + /// let curve = PathSegment::Cubic( + /// DVec2::new(0.0, 0.0), + /// DVec2::new(0.0, 1.0), + /// DVec2::new(1.0, 1.0), + /// DVec2::new(1.0, 0.0) + /// ); + /// assert!(curve.start_curvature() < 0.0); + /// ``` pub fn start_curvature(&self) -> f64 { match *self { PathSegment::Line(_, _) => 0.0, @@ -69,9 +175,37 @@ impl PathSegment { numerator / denominator } } - PathSegment::Arc(..) => arc_segment_to_cubics(self, 0.001)[0].start_curvature(), + PathSegment::Arc(..) => self.arc_segment_to_cubics(0.001)[0].start_curvature(), } } + /// Converts the segment to a cubic Bézier curve representation. + /// + /// This method provides a uniform representation of all segment types as + /// cubic Bézier curves. For segments that are not naturally cubic Bézier + /// curves (like lines or quadratic Bézier curves), an equivalent cubic + /// Bézier representation is computed. + /// + /// # Returns + /// + /// An array of four `DVec2` points representing the cubic Bézier curve: + /// [start point, first control point, second control point, end point] + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(1.0, 1.0)); + /// let cubic = line.to_cubic(); + /// assert_eq!(cubic[0], DVec2::new(0.0, 0.0)); + /// assert_eq!(cubic[3], DVec2::new(1.0, 1.0)); + /// ``` + /// + /// # Panics + /// + /// This method is not implemented for `PathSegment::Arc`. Attempting to call + /// `to_cubic()` on an `Arc` segment will result in a panic. pub fn to_cubic(&self) -> [DVec2; 4] { match *self { PathSegment::Line(start, end) => [start, start, end, end], @@ -88,180 +222,268 @@ impl PathSegment { PathSegment::Arc(..) => unimplemented!(), } } -} - -pub struct PathArcSegmentCenterParametrization { - center: Vector, - theta1: f64, - delta_theta: f64, - rx: f64, - ry: f64, - phi: f64, -} -pub fn get_start_point(seg: &PathSegment) -> Vector { - match seg { - PathSegment::Line(start, _) => *start, - PathSegment::Cubic(start, _, _, _) => *start, - PathSegment::Quadratic(start, _, _) => *start, - PathSegment::Arc(start, _, _, _, _, _, _) => *start, + #[must_use] + /// Retrieves the start point of a path segment. + pub fn start(&self) -> DVec2 { + match self { + PathSegment::Line(start, _) => *start, + PathSegment::Cubic(start, _, _, _) => *start, + PathSegment::Quadratic(start, _, _) => *start, + PathSegment::Arc(start, _, _, _, _, _, _) => *start, + } } -} -pub fn get_end_point(seg: &PathSegment) -> Vector { - match seg { - PathSegment::Line(_, end) => *end, - PathSegment::Cubic(_, _, _, end) => *end, - PathSegment::Quadratic(_, _, end) => *end, - PathSegment::Arc(_, _, _, _, _, _, end) => *end, + #[must_use] + /// Retrieves the end point of a path segment. + pub fn end(&self) -> DVec2 { + match self { + PathSegment::Line(_, end) => *end, + PathSegment::Cubic(_, _, _, end) => *end, + PathSegment::Quadratic(_, _, end) => *end, + PathSegment::Arc(_, _, _, _, _, _, end) => *end, + } } -} -pub fn reverse_path_segment(seg: &PathSegment) -> PathSegment { - match *seg { - PathSegment::Line(start, end) => PathSegment::Line(end, start), - PathSegment::Cubic(p1, p2, p3, p4) => PathSegment::Cubic(p4, p3, p2, p1), - PathSegment::Quadratic(p1, p2, p3) => PathSegment::Quadratic(p3, p2, p1), - PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => PathSegment::Arc(end, rx, ry, phi, fa, !fs, start), + #[must_use] + /// Reverses the direction of the path segment. + /// + /// This method creates a new `PathSegment` that represents the same geometric shape + /// but in the opposite direction. + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(1.0, 1.0)); + /// let reversed = line.reverse(); + /// assert_eq!(reversed.start(), DVec2::new(1.0, 1.0)); + /// assert_eq!(reversed.end(), DVec2::new(0.0, 0.0)); + /// ``` + pub fn reverse(&self) -> PathSegment { + match *self { + PathSegment::Line(start, end) => PathSegment::Line(end, start), + PathSegment::Cubic(p1, p2, p3, p4) => PathSegment::Cubic(p4, p3, p2, p1), + PathSegment::Quadratic(p1, p2, p3) => PathSegment::Quadratic(p3, p2, p1), + PathSegment::Arc(start, rx, ry, phi, fa, fs, end) => PathSegment::Arc(end, rx, ry, phi, fa, !fs, start), + } } -} -pub fn arc_segment_to_center(seg: &PathSegment) -> Option { - if let PathSegment::Arc(xy1, rx, ry, phi, fa, fs, xy2) = *seg { - if rx == 0.0 || ry == 0.0 { - return None; - } + #[must_use] + /// Converts an arc segment to its center parameterization. + /// + /// This method is only meaningful for `Arc` segments. For other segment types, + /// it returns `None`. + /// + /// # Returns + /// + /// An `Option` containing `PathArcSegmentCenterParametrization` if the segment + /// is an `Arc`, or `None` otherwise. + pub fn arc_segment_to_center(&self) -> Option { + if let PathSegment::Arc(xy1, rx, ry, phi, fa, fs, xy2) = *self { + if rx == 0.0 || ry == 0.0 { + return None; + } - let rotation_matrix = DMat2::from_angle(-deg2rad(phi)); - let xy1_prime = rotation_matrix * (xy1 - xy2) * 0.5; - - let mut rx2 = rx * rx; - let mut ry2 = ry * ry; - let x1_prime2 = xy1_prime.x * xy1_prime.x; - let y1_prime2 = xy1_prime.y * xy1_prime.y; - - let mut rx = rx.abs(); - let mut ry = ry.abs(); - let lambda = x1_prime2 / rx2 + y1_prime2 / ry2 + 1e-12; - if lambda > 1.0 { - let lambda_sqrt = lambda.sqrt(); - rx *= lambda_sqrt; - ry *= lambda_sqrt; - let lambda_abs = lambda.abs(); - rx2 *= lambda_abs; - ry2 *= lambda_abs; - } + let rotation_matrix = DMat2::from_angle(-phi.to_radians()); + let xy1_prime = rotation_matrix * (xy1 - xy2) * 0.5; + + let mut rx2 = rx * rx; + let mut ry2 = ry * ry; + let x1_prime2 = xy1_prime.x * xy1_prime.x; + let y1_prime2 = xy1_prime.y * xy1_prime.y; + + let mut rx = rx.abs(); + let mut ry = ry.abs(); + let lambda = x1_prime2 / rx2 + y1_prime2 / ry2 + 1e-12; + if lambda > 1.0 { + let lambda_sqrt = lambda.sqrt(); + rx *= lambda_sqrt; + ry *= lambda_sqrt; + let lambda_abs = lambda.abs(); + rx2 *= lambda_abs; + ry2 *= lambda_abs; + } - let sign = if fa == fs { -1.0 } else { 1.0 }; - let multiplier = ((rx2 * ry2 - rx2 * y1_prime2 - ry2 * x1_prime2) / (rx2 * y1_prime2 + ry2 * x1_prime2)).sqrt(); - let cx_prime = sign * multiplier * ((rx * xy1_prime.y) / ry); - let cy_prime = sign * multiplier * ((-ry * xy1_prime.x) / rx); + let sign = if fa == fs { -1.0 } else { 1.0 }; + let multiplier = ((rx2 * ry2 - rx2 * y1_prime2 - ry2 * x1_prime2) / (rx2 * y1_prime2 + ry2 * x1_prime2)).sqrt(); + let cx_prime = sign * multiplier * ((rx * xy1_prime.y) / ry); + let cy_prime = sign * multiplier * ((-ry * xy1_prime.x) / rx); - let cxy = rotation_matrix.transpose() * DVec2::new(cx_prime, cy_prime) + (xy1 + xy2) * 0.5; + let cxy = rotation_matrix.transpose() * DVec2::new(cx_prime, cy_prime) + (xy1 + xy2) * 0.5; - let vec1 = DVec2::new((xy1_prime.x - cx_prime) / rx, (xy1_prime.y - cy_prime) / ry); - let theta1 = vector_angle(DVec2::new(1.0, 0.0), vec1); - let mut delta_theta = vector_angle(vec1, DVec2::new((-xy1_prime.x - cx_prime) / rx, (-xy1_prime.y - cy_prime) / ry)); + let vec1 = DVec2::new((xy1_prime.x - cx_prime) / rx, (xy1_prime.y - cy_prime) / ry); + let theta1 = vector_angle(DVec2::new(1.0, 0.0), vec1); + let mut delta_theta = vector_angle(vec1, DVec2::new((-xy1_prime.x - cx_prime) / rx, (-xy1_prime.y - cy_prime) / ry)); - if !fs && delta_theta > 0.0 { - delta_theta -= TAU; - } else if fs && delta_theta < 0.0 { - delta_theta += TAU; - } + if !fs && delta_theta > 0.0 { + delta_theta -= TAU; + } else if fs && delta_theta < 0.0 { + delta_theta += TAU; + } - Some(PathArcSegmentCenterParametrization { - center: cxy, - theta1, - delta_theta, - rx, - ry, - phi, - }) - } else { - None + Some(PathArcSegmentCenterParametrization { + center: cxy, + theta1, + delta_theta, + rx, + ry, + phi, + }) + } else { + None + } } -} - -pub fn arc_segment_from_center(params: &PathArcSegmentCenterParametrization, start: Option, end: Option) -> PathSegment { - let rotation_matrix = DMat2::from_angle(params.phi); - - let mut xy1 = rotation_matrix * DVec2::new(params.rx * params.theta1.cos(), params.ry * params.theta1.sin()) + params.center; - - let mut xy2 = rotation_matrix * DVec2::new(params.rx * (params.theta1 + params.delta_theta).cos(), params.ry * (params.theta1 + params.delta_theta).sin()) + params.center; - - let fa = params.delta_theta.abs() > PI; - let fs = params.delta_theta > 0.0; - xy1 = start.unwrap_or(xy1); - xy2 = end.unwrap_or(xy2); - - PathSegment::Arc(xy1, params.rx, params.ry, params.phi, fa, fs, xy2) -} -pub fn sample_path_segment_at(seg: &PathSegment, t: f64) -> Vector { - match *seg { - PathSegment::Line(start, end) => start.lerp(end, t), - PathSegment::Cubic(p1, p2, p3, p4) => { - let p01 = p1.lerp(p2, t); - let p12 = p2.lerp(p3, t); - let p23 = p3.lerp(p4, t); - let p012 = p01.lerp(p12, t); - let p123 = p12.lerp(p23, t); - p012.lerp(p123, t) - } - PathSegment::Quadratic(p1, p2, p3) => { - let p01 = p1.lerp(p2, t); - let p12 = p2.lerp(p3, t); - p01.lerp(p12, t) + #[must_use] + /// Samples a point on the path segment at a given parameter value. + /// + /// # Arguments + /// + /// * `t` - A value between 0.0 and 1.0 representing the position along the segment. + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(2.0, 2.0)); + /// assert_eq!(line.sample_at(0.5), DVec2::new(1.0, 1.0)); + /// ``` + pub fn sample_at(&self, t: f64) -> DVec2 { + match *self { + PathSegment::Line(start, end) => start.lerp(end, t), + PathSegment::Cubic(p1, p2, p3, p4) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + let p23 = p3.lerp(p4, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + p012.lerp(p123, t) + } + PathSegment::Quadratic(p1, p2, p3) => { + let p01 = p1.lerp(p2, t); + let p12 = p2.lerp(p3, t); + p01.lerp(p12, t) + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = self.arc_segment_to_center() { + let theta = center_param.theta1 + t * center_param.delta_theta; + let p = DVec2::new(rx * theta.cos(), ry * theta.sin()); + let rotation_matrix = DMat2::from_angle(phi); + rotation_matrix * p + center_param.center + } else { + start.lerp(end, t) + } + } } - PathSegment::Arc(start, rx, ry, phi, _, _, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let theta = center_param.theta1 + t * center_param.delta_theta; - let p = DVec2::new(rx * theta.cos(), ry * theta.sin()); - let rotation_matrix = DMat2::from_angle(phi); - rotation_matrix * p + center_param.center + } + + #[must_use] + /// Approximates an arc segment with a series of cubic Bézier curves. + /// + /// This method is primarily used for `Arc` segments, converting them into + /// a series of cubic Bézier curves for easier rendering or manipulation. + /// For non-`Arc` segments, it returns a vector containing only the original segment. + /// + /// # Arguments + /// + /// * `max_delta_theta` - The maximum angle (in radians) that each cubic Bézier + /// curve approximation should span. + /// + /// # Returns + /// + /// A vector of `PathSegment::Cubic` approximating the original segment. + pub fn arc_segment_to_cubics(&self, max_delta_theta: f64) -> Vec { + if let PathSegment::Arc(start, rx, ry, phi, _, _, end) = *self { + if let Some(center_param) = self.arc_segment_to_center() { + let count = ((center_param.delta_theta.abs() / max_delta_theta).ceil() as usize).max(1); + + let from_unit = DMat3::from_translation(center_param.center) * DMat3::from_angle(phi.to_radians()) * DMat3::from_scale(DVec2::new(rx, ry)); + + let theta = center_param.delta_theta / count as f64; + let k = (4.0 / 3.0) * (theta / 4.0).tan(); + let sin_theta = theta.sin(); + let cos_theta = theta.cos(); + + (0..count) + .map(|i| { + let start = DVec2::new(1.0, 0.0); + let control1 = DVec2::new(1.0, k); + let control2 = DVec2::new(cos_theta + k * sin_theta, sin_theta - k * cos_theta); + let end = DVec2::new(cos_theta, sin_theta); + + let matrix = DMat3::from_angle(center_param.theta1 + i as f64 * theta) * from_unit; + let start = (matrix * start.extend(1.0)).truncate(); + let control1 = (matrix * control1.extend(1.0)).truncate(); + let control2 = (matrix * control2.extend(1.0)).truncate(); + let end = (matrix * end.extend(1.0)).truncate(); + + PathSegment::Cubic(start, control1, control2, end) + }) + .collect() } else { - start.lerp(end, t) + vec![PathSegment::Line(start, end)] } + } else { + vec![*self] } } } -pub fn arc_segment_to_cubics(seg: &PathSegment, max_delta_theta: f64) -> Vec { - if let PathSegment::Arc(start, rx, ry, phi, _, _, end) = *seg { - if let Some(center_param) = arc_segment_to_center(seg) { - let count = ((center_param.delta_theta.abs() / max_delta_theta).ceil() as usize).max(1); - - let from_unit = DMat3::from_translation(center_param.center) * DMat3::from_angle(deg2rad(phi)) * DMat3::from_scale(DVec2::new(rx, ry)); - - let theta = center_param.delta_theta / count as f64; - let k = (4.0 / 3.0) * (theta / 4.0).tan(); - let sin_theta = theta.sin(); - let cos_theta = theta.cos(); - - (0..count) - .map(|i| { - let start = DVec2::new(1.0, 0.0); - let control1 = DVec2::new(1.0, k); - let control2 = DVec2::new(cos_theta + k * sin_theta, sin_theta - k * cos_theta); - let end = DVec2::new(cos_theta, sin_theta); - - let matrix = DMat3::from_angle(center_param.theta1 + i as f64 * theta) * from_unit; - let start = (matrix * start.extend(1.0)).truncate(); - let control1 = (matrix * control1.extend(1.0)).truncate(); - let control2 = (matrix * control2.extend(1.0)).truncate(); - let end = (matrix * end.extend(1.0)).truncate(); - - PathSegment::Cubic(start, control1, control2, end) - }) - .collect() - } else { - vec![PathSegment::Line(start, end)] - } - } else { - vec![*seg] +/// Represents the center parameterization of an elliptical arc. +/// +/// This struct is used internally to perform calculations on arc segments. +pub struct PathArcSegmentCenterParametrization { + center: DVec2, + theta1: f64, + delta_theta: f64, + rx: f64, + ry: f64, + phi: f64, +} + +/// Converts the center parameterization back to an arc segment. +/// +/// # Arguments +/// +/// * `start` - Optional start point of the arc. If `None`, the start point is calculated. +/// * `end` - Optional end point of the arc. If `None`, the end point is calculated. +/// +/// # Returns +/// +/// A `PathSegment::Arc` representing the arc described by this parameterization. +impl PathArcSegmentCenterParametrization { + #[must_use] + pub fn arc_segment_from_center(&self, start: Option, end: Option) -> PathSegment { + let rotation_matrix = DMat2::from_angle(self.phi); + + let mut xy1 = rotation_matrix * DVec2::new(self.rx * self.theta1.cos(), self.ry * self.theta1.sin()) + self.center; + + let mut xy2 = rotation_matrix * DVec2::new(self.rx * (self.theta1 + self.delta_theta).cos(), self.ry * (self.theta1 + self.delta_theta).sin()) + self.center; + + let fa = self.delta_theta.abs() > PI; + let fs = self.delta_theta > 0.0; + xy1 = start.unwrap_or(xy1); + xy2 = end.unwrap_or(xy2); + + PathSegment::Arc(xy1, self.rx, self.ry, self.phi, fa, fs, xy2) } } +/// Evaluates a 1D cubic Bézier curve at a given parameter value. +/// +/// # Arguments +/// +/// * `p0`, `p1`, `p2`, `p3` - Control points of the cubic Bézier curve. +/// * `t` - Parameter value between 0 and 1. +/// +/// # Returns +/// +/// The value of the Bézier curve at parameter `t`. fn eval_cubic_1d(p0: f64, p1: f64, p2: f64, p3: f64, t: f64) -> f64 { let p01 = lerp(p0, p1, t); let p12 = lerp(p1, p2, t); @@ -271,6 +493,18 @@ fn eval_cubic_1d(p0: f64, p1: f64, p2: f64, p3: f64, t: f64) -> f64 { lerp(p012, p123, t) } +/// Computes the bounding interval of a 1D cubic Bézier curve. +/// +/// This function finds the minimum and maximum values of a cubic Bézier curve +/// over the interval [0, 1]. +/// +/// # Arguments +/// +/// * `p0`, `p1`, `p2`, `p3` - Control points of the cubic Bézier curve. +/// +/// # Returns +/// +/// A tuple `(min, max)` representing the bounding interval. fn cubic_bounding_interval(p0: f64, p1: f64, p2: f64, p3: f64) -> (f64, f64) { let mut min = p0.min(p3); let mut max = p0.max(p3); @@ -304,12 +538,34 @@ fn cubic_bounding_interval(p0: f64, p1: f64, p2: f64, p3: f64) -> (f64, f64) { (min, max) } +/// Evaluates a 1D quadratic Bézier curve at a given parameter value. +/// +/// # Arguments +/// +/// * `p0`, `p1`, `p2` - Control points of the quadratic Bézier curve. +/// * `t` - Parameter value between 0 and 1. +/// +/// # Returns +/// +/// The value of the Bézier curve at parameter `t`. fn eval_quadratic_1d(p0: f64, p1: f64, p2: f64, t: f64) -> f64 { let p01 = lerp(p0, p1, t); let p12 = lerp(p1, p2, t); lerp(p01, p12, t) } +/// Computes the bounding interval of a 1D quadratic Bézier curve. +/// +/// This function finds the minimum and maximum values of a quadratic Bézier curve +/// over the interval [0, 1]. +/// +/// # Arguments +/// +/// * `p0`, `p1`, `p2` - Control points of the quadratic Bézier curve. +/// +/// # Returns +/// +/// A tuple `(min, max)` representing the bounding interval. fn quadratic_bounding_interval(p0: f64, p1: f64, p2: f64) -> (f64, f64) { let mut min = p0.min(p2); let mut max = p0.max(p2); @@ -331,112 +587,133 @@ fn quadratic_bounding_interval(p0: f64, p1: f64, p2: f64) -> (f64, f64) { } fn in_interval(x: f64, x0: f64, x1: f64) -> bool { - let mapped = (x - x0) / (x1 - x0); - (0.0..=1.0).contains(&mapped) + (x0..=x1).contains(&x) } -pub fn path_segment_bounding_box(seg: &PathSegment) -> AaBb { - match *seg { - PathSegment::Line(start, end) => AaBb { - top: start.y.min(end.y), - right: start.x.max(end.x), - bottom: start.y.max(end.y), - left: start.x.min(end.x), - }, - PathSegment::Cubic(p1, p2, p3, p4) => { - let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); - let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); - AaBb { top, right, bottom, left } - } - PathSegment::Quadratic(p1, p2, p3) => { - let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); - let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); - AaBb { top, right, bottom, left } - } - PathSegment::Arc(start, rx, ry, phi, _, _, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let theta2 = center_param.theta1 + center_param.delta_theta; - let mut bounding_box = extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end); - - if phi == 0.0 || rx == ry { - // FIXME: the following gives false positives, resulting in larger boxes - if in_interval(-PI, center_param.theta1, theta2) || in_interval(PI, center_param.theta1, theta2) { - bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x - rx, center_param.center.y)); - } - if in_interval(-PI / 2.0, center_param.theta1, theta2) || in_interval(3.0 * PI / 2.0, center_param.theta1, theta2) { - bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y - ry)); - } - if in_interval(0.0, center_param.theta1, theta2) || in_interval(2.0 * PI, center_param.theta1, theta2) { - bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x + rx, center_param.center.y)); - } - if in_interval(PI / 2.0, center_param.theta1, theta2) || in_interval(5.0 * PI / 2.0, center_param.theta1, theta2) { - bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y + ry)); +impl PathSegment { + /// Computes the bounding box of the path segment. + /// + /// # Returns + /// + /// An `AaBb` representing the axis-aligned bounding box of the segment. + pub(crate) fn bounding_box(&self) -> AaBb { + match *self { + PathSegment::Line(start, end) => AaBb { + top: start.y.min(end.y), + right: start.x.max(end.x), + bottom: start.y.max(end.y), + left: start.x.min(end.x), + }, + PathSegment::Cubic(p1, p2, p3, p4) => { + let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); + let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); + AaBb { top, right, bottom, left } + } + PathSegment::Quadratic(p1, p2, p3) => { + let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); + let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); + AaBb { top, right, bottom, left } + } + PathSegment::Arc(start, rx, ry, phi, _, _, end) => { + if let Some(center_param) = self.arc_segment_to_center() { + let theta2 = center_param.theta1 + center_param.delta_theta; + let mut bounding_box = extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end); + + if phi == 0.0 || rx == ry { + // FIXME: the following gives false positives, resulting in larger boxes + if in_interval(-PI, center_param.theta1, theta2) || in_interval(PI, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x - rx, center_param.center.y)); + } + if in_interval(-PI / 2.0, center_param.theta1, theta2) || in_interval(3.0 * PI / 2.0, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y - ry)); + } + if in_interval(0.0, center_param.theta1, theta2) || in_interval(2.0 * PI, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x + rx, center_param.center.y)); + } + if in_interval(PI / 2.0, center_param.theta1, theta2) || in_interval(5.0 * PI / 2.0, center_param.theta1, theta2) { + bounding_box = extend_bounding_box(Some(bounding_box), DVec2::new(center_param.center.x, center_param.center.y + ry)); + } + expand_bounding_box(&bounding_box, 1e-11) // TODO: get rid of expansion + } else { + // TODO: don't convert to cubics + let cubics = self.arc_segment_to_cubics(PI / 16.0); + let mut bounding_box = None; + for cubic_seg in cubics { + bounding_box = Some(merge_bounding_boxes(bounding_box, &cubic_seg.bounding_box())); + } + bounding_box.unwrap_or_else(|| bounding_box_around_point(start, 0.0)) } - expand_bounding_box(&bounding_box, 1e-11) // TODO: get rid of expansion } else { - // TODO: don't convert to cubics - let cubics = arc_segment_to_cubics(seg, PI / 16.0); - let mut bounding_box = None; - for cubic_seg in cubics { - bounding_box = Some(merge_bounding_boxes(bounding_box, &path_segment_bounding_box(&cubic_seg))); - } - bounding_box.unwrap_or_else(|| bounding_box_around_point(start, 0.0)) + extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end) } - } else { - extend_bounding_box(Some(bounding_box_around_point(start, 0.0)), end) } } } -} -pub fn split_segment_at(seg: &PathSegment, t: f64) -> (PathSegment, PathSegment) { - match *seg { - PathSegment::Line(start, end) => { - let p = start.lerp(end, t); - (PathSegment::Line(start, p), PathSegment::Line(p, end)) - } - PathSegment::Cubic(p0, p1, p2, p3) => { - let p01 = p0.lerp(p1, t); - let p12 = p1.lerp(p2, t); - let p23 = p2.lerp(p3, t); - let p012 = p01.lerp(p12, t); - let p123 = p12.lerp(p23, t); - let p = p012.lerp(p123, t); - - (PathSegment::Cubic(p0, p01, p012, p), PathSegment::Cubic(p, p123, p23, p3)) - } - PathSegment::Quadratic(p0, p1, p2) => { - let p01 = p0.lerp(p1, t); - let p12 = p1.lerp(p2, t); - let p = p01.lerp(p12, t); + /// Splits the path segment at a given parameter value. + /// + /// # Arguments + /// + /// * `t` - A value between 0.0 and 1.0 representing the split point along the segment. + /// + /// # Returns + /// + /// A tuple of two `PathSegment`s representing the parts before and after the split point. + /// + /// # Examples + /// + /// ``` + /// use path_bool::PathSegment; + /// use glam::DVec2; + /// + /// let line = PathSegment::Line(DVec2::new(0.0, 0.0), DVec2::new(2.0, 2.0)); + /// let (first_half, second_half) = line.split_at(0.5); + /// assert_eq!(first_half.end(), DVec2::new(1.0, 1.0)); + /// assert_eq!(second_half.start(), DVec2::new(1.0, 1.0)); + /// ``` + pub fn split_at(&self, t: f64) -> (PathSegment, PathSegment) { + match *self { + PathSegment::Line(start, end) => { + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + PathSegment::Cubic(p0, p1, p2, p3) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p23 = p2.lerp(p3, t); + let p012 = p01.lerp(p12, t); + let p123 = p12.lerp(p23, t); + let p = p012.lerp(p123, t); + + (PathSegment::Cubic(p0, p01, p012, p), PathSegment::Cubic(p, p123, p23, p3)) + } + PathSegment::Quadratic(p0, p1, p2) => { + let p01 = p0.lerp(p1, t); + let p12 = p1.lerp(p2, t); + let p = p01.lerp(p12, t); - (PathSegment::Quadratic(p0, p01, p), PathSegment::Quadratic(p, p12, p2)) - } - PathSegment::Arc(start, _, _, _, _, _, end) => { - if let Some(center_param) = arc_segment_to_center(seg) { - let mid_delta_theta = center_param.delta_theta * t; - let seg1 = arc_segment_from_center( - &PathArcSegmentCenterParametrization { + (PathSegment::Quadratic(p0, p01, p), PathSegment::Quadratic(p, p12, p2)) + } + PathSegment::Arc(start, _, _, _, _, _, end) => { + if let Some(center_param) = self.arc_segment_to_center() { + let mid_delta_theta = center_param.delta_theta * t; + let seg1 = PathArcSegmentCenterParametrization { delta_theta: mid_delta_theta, ..center_param - }, - Some(start), - None, - ); - let seg2 = arc_segment_from_center( - &PathArcSegmentCenterParametrization { + } + .arc_segment_from_center(Some(start), None); + let seg2 = PathArcSegmentCenterParametrization { theta1: center_param.theta1 + mid_delta_theta, delta_theta: center_param.delta_theta - mid_delta_theta, ..center_param - }, - None, - Some(end), - ); - (seg1, seg2) - } else { - // https://svgwg.org/svg2-draft/implnote.html#ArcCorrectionOutOfRangeRadii - let p = start.lerp(end, t); - (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } + .arc_segment_from_center(None, Some(end)); + (seg1, seg2) + } else { + // https://svgwg.org/svg2-draft/implnote.html#ArcCorrectionOutOfRangeRadii + let p = start.lerp(end, t); + (PathSegment::Line(start, p), PathSegment::Line(p, end)) + } } } } diff --git a/libraries/path-bool/src/vector.rs b/libraries/path-bool/src/vector.rs deleted file mode 100644 index f5351055ecc..00000000000 --- a/libraries/path-bool/src/vector.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - -use glam::DVec2; - -pub type Vector = DVec2; - -pub fn vectors_equal(a: Vector, b: Vector, eps: f64) -> bool { - a.abs_diff_eq(b, eps) -} From bc95d8174fc64b9ab58b905ab288aa526e5bbb63 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Tue, 17 Sep 2024 22:20:41 +0200 Subject: [PATCH 32/39] Add more documentation --- libraries/path-bool/src/lib.rs | 74 +++++++++ libraries/path-bool/src/path_boolean.rs | 209 ++++++++++++++++++++++++ 2 files changed, 283 insertions(+) diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 1f2e0c5050f..cf850b99320 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -1,3 +1,77 @@ +//! A crate for performing boolean operations on 2D paths. +//! +//! `path_bool` provides functionality to perform various boolean operations +//! (such as union, intersection, difference, etc.) on complex 2D paths. It is +//! designed to handle paths with multiple subpaths, self-intersections, and +//! different fill rules. +//! +//! # Algorithm +//! +//! The boolean operations are implemented using a graph-based approach: +//! +//! 1. **Path Segmentation**: Input paths are converted into a collection of path segments. +//! 2. **Intersection Computation**: All intersections between path segments are calculated. +//! 3. **Graph Construction**: A graph is constructed where vertices represent +//! endpoints and intersections, and edges represent path segments. +//! 4. **Graph Simplification**: The graph is simplified to a "minor graph" by +//! merging collinear edges and removing unnecessary vertices. +//! 5. **Dual Graph Creation**: A dual graph is created where faces of the minor +//! graph become vertices. +//! 6. **Nesting Analysis**: A nesting tree is computed to represent how different +//! regions are contained within each other. +//! 7. **Boolean Evaluation**: Based on the chosen operation and fill rules, +//! regions to include in the result are determined. +//! 8. **Result Construction**: The final path(s) are constructed from the +//! selected regions. +//! +//! This approach allows for efficient and accurate boolean operations, even on +//! complex paths with many intersections or self-intersections. +//! +//! # Usage +//! +//! Here's a basic example of performing an intersection operation on two paths: +//! +//! ``` +//! use path_bool::{path_boolean, FillRule, PathBooleanOperation, path_from_path_data, path_to_path_data}; +//! +//! let path_a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); +//! let path_b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); +//! +//! let result = path_boolean( +//! &path_a, +//! FillRule::NonZero, +//! &path_b, +//! FillRule::NonZero, +//! PathBooleanOperation::Intersection +//! ).unwrap(); +//! +//! let result_data = path_to_path_data(&result[0], 0.001); +//! assert_eq!(result_data, "M 36.666666666667,30.000000000000 L 23.333333333333,30.000000000000 L 30.000000000000,40.000000000000 L 36.666666666667,30.000000000000"); +//! ``` +//! +//! # Features +//! +//! - Supports multiple boolean operations: Union, Intersection, Difference, +//! Exclusion, Division, and Fracture. +//! - Handles both `NonZero` and `EvenOdd` fill rules. +//! - Works with paths containing lines, cubic Bézier curves, quadratic Bézier +//! curves, and elliptical arcs. +//! - Provides utilities for parsing and generating SVG path data. +//! +//! # Further Reading +//! +//! For more information on the concepts used in this crate: +//! +//! - [Boolean operations on polygons](https://en.wikipedia.org/wiki/Boolean_operations_on_polygons) +//! - [Graph theory](https://en.wikipedia.org/wiki/Graph_theory) +//! - [Dual graph](https://en.wikipedia.org/wiki/Dual_graph) +//! - [SVG Paths](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) +//! +//! # Note +//! +//! This crate is designed for 2D paths and is not suitable for 3D geometry +//! or other specialized use cases. + mod aabb; mod epsilons; mod intersection_path_segment; diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index f5ec01c2e6d..a12dd777a79 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1,3 +1,56 @@ +//! Implements boolean operations on paths using graph-based algorithms. +//! +//! This module uses concepts from graph theory to efficiently perform boolean +//! operations on complex paths. The main algorithms involve creating a graph +//! representation of the paths, simplifying this graph, and then working with +//! its dual graph to determine the result of the boolean operation. +//! +//! ## Graph Minor +//! +//! A graph minor is a simplified version of a graph, obtained by contracting edges +//! (merging connected vertices) and removing isolated vertices. In the context of +//! path boolean operations, we use a graph minor to simplify the initial graph +//! representation of the paths. This simplification involves: +//! +//! 1. Merging collinear segments into single edges. +//! 2. Removing vertices that don't represent significant features (like intersections +//! or endpoints). +//! +//! The resulting graph minor preserves the topological structure of the paths while +//! reducing computational complexity. +//! +//! For more information on graph minors, see: +//! +//! +//! ## Dual Graph +//! +//! The dual graph is a graph derived from another graph (the primal graph). In the +//! context of path boolean operations, we construct the dual graph as follows: +//! +//! 1. Each face (region) in the primal graph becomes a vertex in the dual graph. +//! 2. Each edge in the primal graph becomes an edge in the dual graph, connecting +//! the vertices that represent the faces on either side of the original edge. +//! +//! The dual graph allows us to efficiently determine which regions are inside or +//! outside the original paths, which is crucial for performing boolean operations. +//! +//! For more information on dual graphs, see: +//! +//! +//! ## Algorithm Overview +//! +//! The boolean operation algorithm follows these main steps: +//! +//! 1. Create a graph representation of both input paths (MajorGraph). +//! 2. Simplify this graph to create a graph minor (MinorGraph). +//! 3. Construct the dual graph of the MinorGraph. +//! 4. Use the dual graph to determine which regions should be included in the result, +//! based on the specific boolean operation being performed. +//! 5. Reconstruct the resulting path(s) from the selected regions. +//! +//! This approach allows for efficient and accurate boolean operations, even on +//! complex paths with many intersections or self-intersections. + use slotmap::{new_key_type, SlotMap}; new_key_type! { @@ -25,19 +78,53 @@ use glam::DVec2; use std::cmp::Ordering; use std::collections::{HashMap, HashSet, VecDeque}; +/// Represents the types of boolean operations that can be performed on paths. #[derive(Debug, Clone, Copy)] pub enum PathBooleanOperation { + /// Computes the union of two paths. + /// + /// The result contains all areas that are inside either path A or path B (or both). + /// This operation is useful for combining shapes or creating complex outlines. Union, + + /// Computes the difference between two paths (A minus B). + /// + /// The result contains all areas that are inside path A but not inside path B. + /// This operation is useful for cutting holes or subtracting shapes from each other. Difference, + + /// Computes the intersection of two paths. + /// + /// The result contains only the areas that are inside both path A and path B. + /// This operation is useful for finding overlapping regions between shapes. Intersection, + + /// Computes the symmetric difference (exclusive or) of two paths. + /// + /// The result contains areas that are inside either path A or path B, but not in both. + /// This operation is useful for creating non-overlapping regions or finding boundaries. Exclusion, + + /// Divides the first path using the second path as a "knife". + /// + /// This operation splits path A wherever it intersects with path B, but keeps all + /// parts of path A. It's useful for creating segments or partitioning shapes. Division, + + /// Breaks both paths into separate pieces where they intersect. + /// + /// This operation splits both path A and path B at their intersection points, + /// resulting in all possible non-overlapping segments from both paths. + /// It's useful for creating detailed breakdowns of overlapping shapes. Fracture, } +/// Specifies how to determine the "inside" of a path for filling. #[derive(Debug, Clone, Copy)] pub enum FillRule { + /// A point is inside if a ray from the point to infinity crosses an odd number of path segments. NonZero, + /// A point is inside if a ray from the point to infinity crosses an even number of path segments. EvenOdd, } @@ -69,6 +156,9 @@ pub struct MajorGraphVertex { outgoing_edges: Vec, } +/// Represents the initial graph structure used in boolean operations. +/// +/// This graph contains all segments from both input paths. #[derive(Debug, Clone)] struct MajorGraph { edges: SlotMap, @@ -134,6 +224,9 @@ struct MinorGraphCycle { direction_flag: Direction, } +/// Represents a simplified graph structure derived from the MajorGraph. +/// +/// This graph combines collinear segments and removes unnecessary vertices. #[derive(Debug, Clone)] struct MinorGraph { edges: SlotMap, @@ -155,6 +248,10 @@ struct DualGraphVertex { incident_edges: Vec, } +/// Represents a component in the dual graph. +/// +/// A component is a connected subset of the dual graph, typically corresponding +/// to a distinct region in the original paths. #[derive(Debug, Clone)] struct DualGraphComponent { edges: Vec, @@ -162,6 +259,11 @@ struct DualGraphComponent { outer_face: Option, } +/// Represents the dual graph of the MinorGraph. +/// +/// In this graph, faces of the MinorGraph become vertices, and edges represent +/// adjacency between faces. This structure is crucial for determining the +/// inside/outside regions of the paths. #[derive(Debug, Clone)] struct DualGraph { components: Vec, @@ -169,6 +271,10 @@ struct DualGraph { vertices: SlotMap, } +/// Represents the hierarchical nesting of regions in the paths. +/// +/// This tree structure captures how different regions of the paths are contained +/// within each other #[derive(Debug, Clone)] struct NestingTree { component: DualGraphComponent, @@ -273,6 +379,30 @@ fn split_at_self_intersections(edges: &mut Vec) { edges.extend(new_edges); } +/// Splits path segments at their intersections with other segments. +/// +/// This function performs the following steps: +/// 1. Computes bounding boxes for all input edges. +/// 2. Creates a spatial index (quad tree) of edges for efficient intersection checks. +/// 3. For each edge: +/// a. Finds potential intersecting edges using the spatial index. +/// b. Computes precise intersections with these candidates. +/// c. Records the intersection points as split locations. +/// 4. Splits the original edges at the recorded intersection points. +/// 5. Returns the split edges along with an overall bounding box. +/// +/// The function uses an epsilon value to handle floating-point imprecision +/// when determining if intersections occur at endpoints. +/// +/// # Arguments +/// +/// * `edges` - A slice of initial path segments (MajorGraphEdgeStage1). +/// +/// # Returns +/// +/// A tuple containing: +/// * A vector of split edges (MajorGraphEdgeStage2). +/// * An optional overall bounding box (AaBb) for all edges. fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec, Option) { // Step 1: Add bounding boxes to edges let with_bounding_box: Vec = edges.iter().map(|(seg, parent)| (*seg, *parent, seg.bounding_box())).collect(); @@ -470,6 +600,28 @@ fn get_order(vertex: &MajorGraphVertex) -> usize { vertex.outgoing_edges.len() } +/// Computes the minor graph from the major graph. +/// +/// This function simplifies the graph structure by performing the following steps: +/// 1. Iterates through vertices of the major graph. +/// 2. For vertices with exactly two edges (degree 2): +/// a. Combines the two edges into a single edge if they have the same parent. +/// b. Updates the endpoints of the new edge to skip the current vertex. +/// 3. For vertices with degree != 2: +/// a. Creates a new vertex in the minor graph. +/// b. Creates new edges in the minor graph for each outgoing edge. +/// 4. Handles any cyclic components (closed loops with no high-degree vertices). +/// +/// The resulting minor graph preserves the topological structure of the paths +/// while reducing the number of vertices and edges. +/// +/// # Arguments +/// +/// * `major_graph` - A reference to the MajorGraph. +/// +/// # Returns +/// +/// A new MinorGraph representing the simplified structure. fn compute_minor(major_graph: &MajorGraph) -> MinorGraph { let mut new_edges = SlotMap::with_key(); let mut new_vertices = SlotMap::with_key(); @@ -770,6 +922,29 @@ fn compute_signed_area(face: &DualGraphVertex, edges: &SlotMap Result { let mut new_vertices: Vec = Vec::new(); let mut minor_to_dual_edge: HashMap = HashMap::new(); @@ -1050,6 +1225,28 @@ pub fn path_segment_horizontal_ray_intersection_count(orig_seg: &PathSegment, po count } +/// Computes the nesting tree of the dual graph components. +/// +/// This function builds a hierarchical structure representing how the components +/// of the dual graph are nested within each other. It does this by: +/// 1. Initializing an empty list of top-level nesting trees. +/// 2. For each component in the dual graph: +/// a. Tests for inclusion against existing nesting trees. +/// b. If included in an existing tree, recursively inserts it at the appropriate level. +/// c. If not included, creates a new top-level tree. +/// d. Checks if any existing trees should become children of the new tree. +/// 3. Continues this process until all components are placed in the nesting structure. +/// +/// The resulting nesting tree captures the containment relationships between +/// different regions of the original paths. +/// +/// # Arguments +/// +/// * `dual_graph` - A reference to the DualGraph. +/// +/// # Returns +/// +/// A vector of NestingTree structures representing the top-level components and their nested subcomponents. fn compute_nesting_tree(DualGraph { components, vertices, edges }: &DualGraph) -> Vec { let mut nesting_trees = Vec::new(); @@ -1110,6 +1307,10 @@ fn get_flag(count: i32, fill_rule: FillRule) -> u8 { } } +/// Determines which faces should be included in the result based on the boolean operation. +/// +/// This function applies the specified boolean operation and fill rules to decide +/// which regions of the dual graph should be part of the resulting path. fn flag_faces( nesting_trees: &[NestingTree], a_fill_rule: FillRule, @@ -1217,6 +1418,11 @@ fn walk_faces<'a>(faces: &'a HashSet, edges: &SlotMap bool + Copy, @@ -1294,9 +1500,12 @@ const OPERATION_PREDICATES: [fn(u8) -> bool; 6] = [ ]; // TODO: Impl error trait +/// Represents errors that can occur during boolean operations on paths. #[derive(Debug)] pub enum BooleanError { + /// Indicates that multiple outer faces were found where only one was expected. MultipleOuterFaces, + /// Indicates that no valid ear was found in a polygon during triangulation. NoEarInPolygon, } From 4a300f46e035962b11d8d51ac5ed3ca1d7951d2a Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Wed, 18 Sep 2024 01:35:27 +0200 Subject: [PATCH 33/39] Close subpaths --- node-graph/gstd/src/vector.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index 0453292f807..eb66a223246 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -230,7 +230,7 @@ fn from_path(path_data: &[Path]) -> VectorData { if current_start.is_none() || !is_close(start, current_start.unwrap()) { // Start a new subpath if !groups.is_empty() { - all_subpaths.push(Subpath::new(std::mem::take(&mut groups), false)); + all_subpaths.push(Subpath::new(std::mem::take(&mut groups), true)); } // Use the correct in-handle (None) and out-handle for the start point groups.push(ManipulatorGroup::new(start, None, Some(handle1))); @@ -248,7 +248,7 @@ fn from_path(path_data: &[Path]) -> VectorData { // Check if this is the last segment if index == cubics.len() - 1 { - all_subpaths.push(Subpath::new(groups, false)); + all_subpaths.push(Subpath::new(groups, true)); groups = Vec::new(); // Reset groups for the next path } } From db7a1997c0bd0b7dd49ad2e6e405d50b926ea066 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 20 Sep 2024 15:55:06 +0200 Subject: [PATCH 34/39] Reorganize files and add README.md --- libraries/path-bool/README.md | 70 ++++++++++- libraries/path-bool/src/lib.rs | 110 ++++-------------- .../src/{ => parsing}/path_command.rs | 4 - .../path-bool/src/{ => parsing}/path_data.rs | 4 - libraries/path-bool/src/path.rs | 9 +- .../{ => path}/intersection_path_segment.rs | 4 - .../path-bool/src/{ => path}/line_segment.rs | 4 - .../src/{ => path}/line_segment_aabb.rs | 4 - .../path_cubic_segment_self_intersection.rs | 4 - .../path-bool/src/{ => path}/path_segment.rs | 0 libraries/path-bool/src/{ => util}/aabb.rs | 4 - .../path-bool/src/{ => util}/epsilons.rs | 4 - libraries/path-bool/src/{ => util}/math.rs | 10 +- .../path-bool/src/{ => util}/quad_tree.rs | 4 - 14 files changed, 98 insertions(+), 137 deletions(-) rename libraries/path-bool/src/{ => parsing}/path_command.rs (97%) rename libraries/path-bool/src/{ => parsing}/path_data.rs (98%) rename libraries/path-bool/src/{ => path}/intersection_path_segment.rs (99%) rename libraries/path-bool/src/{ => path}/line_segment.rs (89%) rename libraries/path-bool/src/{ => path}/line_segment_aabb.rs (96%) rename libraries/path-bool/src/{ => path}/path_cubic_segment_self_intersection.rs (93%) rename libraries/path-bool/src/{ => path}/path_segment.rs (100%) rename libraries/path-bool/src/{ => util}/aabb.rs (94%) rename libraries/path-bool/src/{ => util}/epsilons.rs (53%) rename libraries/path-bool/src/{ => util}/math.rs (76%) rename libraries/path-bool/src/{ => util}/quad_tree.rs (96%) diff --git a/libraries/path-bool/README.md b/libraries/path-bool/README.md index 48c8e587f9e..44d2cc6863b 100644 --- a/libraries/path-bool/README.md +++ b/libraries/path-bool/README.md @@ -1 +1,69 @@ -This is a reimplementation of https://github.com/r-flash/PathBool.js/ +# path_bool + +A Rust library for performing boolean operations on SVG paths. + +`path_bool` is a port of [PathBool.js](https://github.com/r-flash/PathBool.js), providing low-level functionality for boolean operations on complex 2D paths. It handles paths with multiple subpaths, self-intersections, and different fill rules. + +## Features + +- Supports multiple boolean operations: Union, Intersection, Difference, Exclusion, Division, and Fracture. +- Handles both `NonZero` and `EvenOdd` fill rules. +- Works with paths containing lines, cubic Bézier curves, quadratic Bézier curves, and elliptical arcs. +- Provides utilities for parsing and generating SVG path data. + +## Installation + +Add this to your `Cargo.toml`: + +```toml +[dependencies] +path_bool = "0.1.0" +``` + +## Usage + +Here's a basic example of performing an intersection operation on two paths: + +```rust +use path_bool::{path_boolean, FillRule, PathBooleanOperation, path_from_path_data, path_to_path_data}; + +fn main() { + let path_a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); + let path_b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); + + let result = path_boolean( + &path_a, + FillRule::NonZero, + &path_b, + FillRule::NonZero, + PathBooleanOperation::Intersection + ).unwrap(); + + let result_data = path_to_path_data(&result[0], 0.001); + println!("Result: {}", result_data); +} +``` + +## Algorithm + +The boolean operations are implemented using a graph-based approach. After the parsing the input, self intersecting cubic beziers curves are simplified. Then the intersection points between all edges are calculated. These are then turned into a graph representation where every intersection becomes a new vertex. We then apply edge contractions to remove vertices with a degree of 2 to compute the graph minor. At this stage, identiacal edges are deduplicated. Because we are ultimately interrested in the faces of the graph to decide if they should be included in the final output, we then compute the dual graph in which the faces become vertices and vertices become the new faces. That dual structure is then used to determine which faces (dual vertices) should be included in the final output. + +## Development Status + +This project is a port of PathBool.js and is still in early stages of development. Contributions, bug reports, and feedback are welcome! + +## TODO + +- Comprehensive test suite +- Performance optimizations +- Additional examples and documentation + +## License + +MIT License or Apache-2.0 + +Copyright © 2024 [ Dennis Kobert ] + +## Acknowledgements + +This library is a Rust port of [PathBool.js](https://github.com/r-flash/PathBool.js) by Adam Platkevič. diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index cf850b99320..748a3867ce3 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -1,99 +1,31 @@ -//! A crate for performing boolean operations on 2D paths. -//! -//! `path_bool` provides functionality to perform various boolean operations -//! (such as union, intersection, difference, etc.) on complex 2D paths. It is -//! designed to handle paths with multiple subpaths, self-intersections, and -//! different fill rules. -//! -//! # Algorithm -//! -//! The boolean operations are implemented using a graph-based approach: -//! -//! 1. **Path Segmentation**: Input paths are converted into a collection of path segments. -//! 2. **Intersection Computation**: All intersections between path segments are calculated. -//! 3. **Graph Construction**: A graph is constructed where vertices represent -//! endpoints and intersections, and edges represent path segments. -//! 4. **Graph Simplification**: The graph is simplified to a "minor graph" by -//! merging collinear edges and removing unnecessary vertices. -//! 5. **Dual Graph Creation**: A dual graph is created where faces of the minor -//! graph become vertices. -//! 6. **Nesting Analysis**: A nesting tree is computed to represent how different -//! regions are contained within each other. -//! 7. **Boolean Evaluation**: Based on the chosen operation and fill rules, -//! regions to include in the result are determined. -//! 8. **Result Construction**: The final path(s) are constructed from the -//! selected regions. -//! -//! This approach allows for efficient and accurate boolean operations, even on -//! complex paths with many intersections or self-intersections. -//! -//! # Usage -//! -//! Here's a basic example of performing an intersection operation on two paths: -//! -//! ``` -//! use path_bool::{path_boolean, FillRule, PathBooleanOperation, path_from_path_data, path_to_path_data}; -//! -//! let path_a = path_from_path_data("M 10 10 L 50 10 L 30 40 Z"); -//! let path_b = path_from_path_data("M 20 30 L 60 30 L 60 50 L 20 50 Z"); -//! -//! let result = path_boolean( -//! &path_a, -//! FillRule::NonZero, -//! &path_b, -//! FillRule::NonZero, -//! PathBooleanOperation::Intersection -//! ).unwrap(); -//! -//! let result_data = path_to_path_data(&result[0], 0.001); -//! assert_eq!(result_data, "M 36.666666666667,30.000000000000 L 23.333333333333,30.000000000000 L 30.000000000000,40.000000000000 L 36.666666666667,30.000000000000"); -//! ``` -//! -//! # Features -//! -//! - Supports multiple boolean operations: Union, Intersection, Difference, -//! Exclusion, Division, and Fracture. -//! - Handles both `NonZero` and `EvenOdd` fill rules. -//! - Works with paths containing lines, cubic Bézier curves, quadratic Bézier -//! curves, and elliptical arcs. -//! - Provides utilities for parsing and generating SVG path data. -//! -//! # Further Reading -//! -//! For more information on the concepts used in this crate: -//! -//! - [Boolean operations on polygons](https://en.wikipedia.org/wiki/Boolean_operations_on_polygons) -//! - [Graph theory](https://en.wikipedia.org/wiki/Graph_theory) -//! - [Dual graph](https://en.wikipedia.org/wiki/Dual_graph) -//! - [SVG Paths](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths) -//! -//! # Note -//! -//! This crate is designed for 2D paths and is not suitable for 3D geometry -//! or other specialized use cases. - -mod aabb; -mod epsilons; -mod intersection_path_segment; -mod line_segment; -mod line_segment_aabb; -mod math; -mod path; +#![expect(clippy::needless_doctest_main)] +#![doc = include_str!("../README.md")] mod path_boolean; #[cfg(feature = "parsing")] -mod path_command; -mod path_cubic_segment_self_intersection; -#[cfg(feature = "parsing")] -mod path_data; -mod path_segment; -mod quad_tree; +mod parsing { + pub(crate) mod path_command; + pub(crate) mod path_data; +} + +mod util { + pub(crate) mod aabb; + pub(crate) mod epsilons; + pub(crate) mod math; + pub(crate) mod quad_tree; +} +mod path; #[cfg(test)] mod visual_tests; +#[cfg(feature = "parsing")] +pub(crate) use parsing::*; +pub(crate) use path::*; +pub(crate) use util::*; + pub use intersection_path_segment::path_segment_intersection; -pub use path_boolean::{path_boolean, BooleanError, FillRule, PathBooleanOperation, EPS}; #[cfg(feature = "parsing")] -pub use path_data::{path_from_path_data, path_to_path_data}; +pub use parsing::path_data::{path_from_path_data, path_to_path_data}; +pub use path_boolean::{path_boolean, BooleanError, FillRule, PathBooleanOperation, EPS}; pub use path_segment::PathSegment; #[cfg(test)] diff --git a/libraries/path-bool/src/path_command.rs b/libraries/path-bool/src/parsing/path_command.rs similarity index 97% rename from libraries/path-bool/src/path_command.rs rename to libraries/path-bool/src/parsing/path_command.rs index b5f89c312fb..6721900529c 100644 --- a/libraries/path-bool/src/path_command.rs +++ b/libraries/path-bool/src/parsing/path_command.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use glam::DVec2; #[derive(Clone, Debug)] diff --git a/libraries/path-bool/src/path_data.rs b/libraries/path-bool/src/parsing/path_data.rs similarity index 98% rename from libraries/path-bool/src/path_data.rs rename to libraries/path-bool/src/parsing/path_data.rs index 2ec78beab69..aa0b66f2011 100644 --- a/libraries/path-bool/src/path_data.rs +++ b/libraries/path-bool/src/parsing/path_data.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use crate::path::{path_from_commands, path_to_commands, Path}; use crate::path_command::{AbsolutePathCommand, PathCommand, RelativePathCommand}; use glam::DVec2; diff --git a/libraries/path-bool/src/path.rs b/libraries/path-bool/src/path.rs index 5a61688462a..f0bd19ab47c 100644 --- a/libraries/path-bool/src/path.rs +++ b/libraries/path-bool/src/path.rs @@ -1,9 +1,12 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT +pub(crate) mod intersection_path_segment; +pub(crate) mod line_segment; +pub(crate) mod line_segment_aabb; +pub(crate) mod path_cubic_segment_self_intersection; +pub(crate) mod path_segment; use glam::DVec2; +#[cfg(feature = "parsing")] use crate::path_command::{to_absolute_commands, AbsolutePathCommand, PathCommand}; use crate::path_segment::PathSegment; diff --git a/libraries/path-bool/src/intersection_path_segment.rs b/libraries/path-bool/src/path/intersection_path_segment.rs similarity index 99% rename from libraries/path-bool/src/intersection_path_segment.rs rename to libraries/path-bool/src/path/intersection_path_segment.rs index abaac04cc66..a965cc6a391 100644 --- a/libraries/path-bool/src/intersection_path_segment.rs +++ b/libraries/path-bool/src/path/intersection_path_segment.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use glam::DVec2; use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AaBb}; diff --git a/libraries/path-bool/src/line_segment.rs b/libraries/path-bool/src/path/line_segment.rs similarity index 89% rename from libraries/path-bool/src/line_segment.rs rename to libraries/path-bool/src/path/line_segment.rs index b0ef1fe9260..71e0a28c404 100644 --- a/libraries/path-bool/src/line_segment.rs +++ b/libraries/path-bool/src/path/line_segment.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use glam::DVec2; pub type LineSegment = [DVec2; 2]; diff --git a/libraries/path-bool/src/line_segment_aabb.rs b/libraries/path-bool/src/path/line_segment_aabb.rs similarity index 96% rename from libraries/path-bool/src/line_segment_aabb.rs rename to libraries/path-bool/src/path/line_segment_aabb.rs index b5bed58d684..6b67818c66f 100644 --- a/libraries/path-bool/src/line_segment_aabb.rs +++ b/libraries/path-bool/src/path/line_segment_aabb.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use crate::aabb::AaBb; use crate::line_segment::LineSegment; diff --git a/libraries/path-bool/src/path_cubic_segment_self_intersection.rs b/libraries/path-bool/src/path/path_cubic_segment_self_intersection.rs similarity index 93% rename from libraries/path-bool/src/path_cubic_segment_self_intersection.rs rename to libraries/path-bool/src/path/path_cubic_segment_self_intersection.rs index 3ed9e9e6de5..bb766ae36d1 100644 --- a/libraries/path-bool/src/path_cubic_segment_self_intersection.rs +++ b/libraries/path-bool/src/path/path_cubic_segment_self_intersection.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use crate::path_segment::PathSegment; const EPS: f64 = 1e-12; diff --git a/libraries/path-bool/src/path_segment.rs b/libraries/path-bool/src/path/path_segment.rs similarity index 100% rename from libraries/path-bool/src/path_segment.rs rename to libraries/path-bool/src/path/path_segment.rs diff --git a/libraries/path-bool/src/aabb.rs b/libraries/path-bool/src/util/aabb.rs similarity index 94% rename from libraries/path-bool/src/aabb.rs rename to libraries/path-bool/src/util/aabb.rs index fdb9f38d224..d39c5ec4cac 100644 --- a/libraries/path-bool/src/aabb.rs +++ b/libraries/path-bool/src/util/aabb.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use glam::DVec2; #[derive(Clone, Copy, Debug, PartialEq)] diff --git a/libraries/path-bool/src/epsilons.rs b/libraries/path-bool/src/util/epsilons.rs similarity index 53% rename from libraries/path-bool/src/epsilons.rs rename to libraries/path-bool/src/util/epsilons.rs index ae1f2c12690..aed8ca27703 100644 --- a/libraries/path-bool/src/epsilons.rs +++ b/libraries/path-bool/src/util/epsilons.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - #[derive(Clone, Copy, Debug)] pub struct Epsilons { pub point: f64, diff --git a/libraries/path-bool/src/math.rs b/libraries/path-bool/src/util/math.rs similarity index 76% rename from libraries/path-bool/src/math.rs rename to libraries/path-bool/src/util/math.rs index 5b58ca6564f..6367d048d4d 100644 --- a/libraries/path-bool/src/math.rs +++ b/libraries/path-bool/src/util/math.rs @@ -1,10 +1,4 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - -// TODO(@TrueDoctor) check math - -use glam::DVec2; +use glam::{DVec2, FloatExt}; pub use std::f64::consts::PI; pub fn lin_map(value: f64, in_min: f64, in_max: f64, out_min: f64, out_max: f64) -> f64 { @@ -12,7 +6,7 @@ pub fn lin_map(value: f64, in_min: f64, in_max: f64, out_min: f64, out_max: f64) } pub fn lerp(a: f64, b: f64, t: f64) -> f64 { - a + (b - a) * t + a.lerp(b, t) } pub fn vector_angle(u: DVec2, v: DVec2) -> f64 { diff --git a/libraries/path-bool/src/quad_tree.rs b/libraries/path-bool/src/util/quad_tree.rs similarity index 96% rename from libraries/path-bool/src/quad_tree.rs rename to libraries/path-bool/src/util/quad_tree.rs index 81ecb9eddac..3255edf9fef 100644 --- a/libraries/path-bool/src/quad_tree.rs +++ b/libraries/path-bool/src/util/quad_tree.rs @@ -1,7 +1,3 @@ -// Copyright 2024 Adam Platkevič -// -// SPDX-License-Identifier: MIT - use crate::aabb::AaBb; use std::collections::HashSet; From 53e9da245de4a5126923fbcd9df8e3bff46cb861 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 20 Sep 2024 16:02:26 +0200 Subject: [PATCH 35/39] Add license information --- libraries/path-bool/LICENSE-APACHE | 201 +++++++++++++++++++++++++++++ libraries/path-bool/LICENSE-MIT | 17 +++ libraries/path-bool/README.md | 2 +- 3 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 libraries/path-bool/LICENSE-APACHE create mode 100644 libraries/path-bool/LICENSE-MIT diff --git a/libraries/path-bool/LICENSE-APACHE b/libraries/path-bool/LICENSE-APACHE new file mode 100644 index 00000000000..261eeb9e9f8 --- /dev/null +++ b/libraries/path-bool/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/libraries/path-bool/LICENSE-MIT b/libraries/path-bool/LICENSE-MIT new file mode 100644 index 00000000000..969d061e8ba --- /dev/null +++ b/libraries/path-bool/LICENSE-MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/libraries/path-bool/README.md b/libraries/path-bool/README.md index 44d2cc6863b..c2dcbfed64b 100644 --- a/libraries/path-bool/README.md +++ b/libraries/path-bool/README.md @@ -62,7 +62,7 @@ This project is a port of PathBool.js and is still in early stages of developmen MIT License or Apache-2.0 -Copyright © 2024 [ Dennis Kobert ] +Copyright © 2024 [ Graphite Authors ] ## Acknowledgements From 544b1499b0f190fab149fb0ab22fae4019923570 Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Sat, 21 Sep 2024 00:05:21 +0200 Subject: [PATCH 36/39] Code review --- libraries/path-bool/benches/painted_dreams.rs | 75 ------------------- .../src/path/intersection_path_segment.rs | 20 ++--- .../path-bool/src/path/line_segment_aabb.rs | 6 +- libraries/path-bool/src/path/path_segment.rs | 10 +-- libraries/path-bool/src/path_boolean.rs | 14 ++-- libraries/path-bool/src/util/aabb.rs | 24 +++--- libraries/path-bool/src/util/quad_tree.rs | 22 +++--- 7 files changed, 46 insertions(+), 125 deletions(-) diff --git a/libraries/path-bool/benches/painted_dreams.rs b/libraries/path-bool/benches/painted_dreams.rs index 5aa24f596c0..3fe66bc07e8 100644 --- a/libraries/path-bool/benches/painted_dreams.rs +++ b/libraries/path-bool/benches/painted_dreams.rs @@ -13,78 +13,3 @@ pub fn criterion_benchmark(c: &mut Criterion) { criterion_group!(benches, criterion_benchmark); criterion_main!(benches); - -/* -[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg0 = Cubic( - DVec2( - 458.37027, - 572.165771, - ), - DVec2( - 428.525848, - 486.720093, - ), - DVec2( - 368.618805, - 467.485992, - ), - DVec2( - 273.0, - 476.0, - ), -) -[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg1 = Cubic( - DVec2( - 273.0, - 476.0, - ), - DVec2( - 419.0, - 463.0, - ), - DVec2( - 481.741198, - 514.692273, - ), - DVec2( - 481.333333, - 768.0, - ), -) -[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg0 = Cubic( - DVec2( - 273.0, - 476.0, - ), - DVec2( - 107.564178, - 490.730591, - ), - DVec2( - 161.737915, - 383.575775, - ), - DVec2( - 0.0, - 340.0, - ), -) -[libraries/path-bool/src/intersection_path_segment.rs:84:2] seg1 = Cubic( - DVec2( - 0.0, - 340.0, - ), - DVec2( - 161.737914, - 383.575765, - ), - DVec2( - 107.564182, - 490.730587, - ), - DVec2( - 273.0, - 476.0, - ), -) -*/ diff --git a/libraries/path-bool/src/path/intersection_path_segment.rs b/libraries/path-bool/src/path/intersection_path_segment.rs index a965cc6a391..b5a6deaeb45 100644 --- a/libraries/path-bool/src/path/intersection_path_segment.rs +++ b/libraries/path-bool/src/path/intersection_path_segment.rs @@ -1,6 +1,6 @@ use glam::DVec2; -use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, AaBb}; +use crate::aabb::{bounding_box_max_extent, bounding_boxes_overlap, Aabb}; use crate::epsilons::Epsilons; use crate::line_segment::{line_segment_intersection, line_segments_intersect}; use crate::line_segment_aabb::line_segment_aabb_intersect; @@ -12,7 +12,7 @@ struct IntersectionSegment { seg: PathSegment, start_param: f64, end_param: f64, - bounding_box: AaBb, + bounding_box: Aabb, } #[inline(never)] @@ -68,9 +68,6 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 let direction1 = seg0.sample_at(0.1); let direction2 = seg1.sample_at(0.1); let angles_equal = (direction1 - p00).angle_to(direction2 - p00).abs() < point_epsilon * 4.; - if angles_equal { - // eprintln!("deduplicating {:?} {:?} because the angles are equal", seg0, seg1); - } start_and_end_equal && (parameter_equal || angles_equal) } @@ -79,12 +76,12 @@ pub fn segments_equal(seg0: &PathSegment, seg1: &PathSegment, point_epsilon: f64 } (PathSegment::Arc(p00, rx0, ry0, angle0, large_arc0, sweep0, p01), PathSegment::Arc(p10, rx1, ry1, angle1, large_arc1, sweep1, p11)) => { p00.abs_diff_eq(p10, point_epsilon) && - (rx0 - rx1).abs() < point_epsilon && - (ry0 - ry1).abs() < point_epsilon && - (angle0 - angle1).abs() < point_epsilon && // TODO: Phi can be anything if rx = ry. Also, handle rotations by Pi/2. - large_arc0 == large_arc1 && - sweep0 == sweep1 && - p01.abs_diff_eq(p11, point_epsilon) + (rx0 - rx1).abs() < point_epsilon && + (ry0 - ry1).abs() < point_epsilon && + (angle0 - angle1).abs() < point_epsilon && // TODO: Phi can be anything if rx = ry. Also, handle rotations by Pi/2. + large_arc0 == large_arc1 && + sweep0 == sweep1 && + p01.abs_diff_eq(p11, point_epsilon) } _ => false, } @@ -127,7 +124,6 @@ pub fn path_segment_intersection(seg0: &PathSegment, seg1: &PathSegment, endpoin while !pairs.is_empty() { next_pairs.clear(); - // dbg!("checking pairs"); if pairs.len() > 1000 { // TODO: check for intersections of the start/end points. If the two lines overlap, return split points for the start/end points. Use a binary search to check where the points are on the line. diff --git a/libraries/path-bool/src/path/line_segment_aabb.rs b/libraries/path-bool/src/path/line_segment_aabb.rs index 6b67818c66f..58be8316b3b 100644 --- a/libraries/path-bool/src/path/line_segment_aabb.rs +++ b/libraries/path-bool/src/path/line_segment_aabb.rs @@ -1,4 +1,4 @@ -use crate::aabb::AaBb; +use crate::aabb::Aabb; use crate::line_segment::LineSegment; const INSIDE: u8 = 0; @@ -7,7 +7,7 @@ const RIGHT: u8 = 1 << 1; const BOTTOM: u8 = 1 << 2; const TOP: u8 = 1 << 3; -fn out_code(x: f64, y: f64, bounding_box: &AaBb) -> u8 { +fn out_code(x: f64, y: f64, bounding_box: &Aabb) -> u8 { let mut code = INSIDE; if x < bounding_box.left { @@ -25,7 +25,7 @@ fn out_code(x: f64, y: f64, bounding_box: &AaBb) -> u8 { code } -pub(crate) fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &AaBb) -> bool { +pub(crate) fn line_segment_aabb_intersect(seg: LineSegment, bounding_box: &Aabb) -> bool { let [mut p0, mut p1] = seg; let mut outcode0 = out_code(p0.x, p0.y, bounding_box); diff --git a/libraries/path-bool/src/path/path_segment.rs b/libraries/path-bool/src/path/path_segment.rs index d00e79c583a..7d14a0dbe15 100644 --- a/libraries/path-bool/src/path/path_segment.rs +++ b/libraries/path-bool/src/path/path_segment.rs @@ -12,7 +12,7 @@ use glam::{DMat2, DMat3, DVec2}; use std::f64::consts::{PI, TAU}; -use crate::aabb::{bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, AaBb}; +use crate::aabb::{bounding_box_around_point, expand_bounding_box, extend_bounding_box, merge_bounding_boxes, Aabb}; use crate::math::{lerp, vector_angle}; use crate::EPS; @@ -596,9 +596,9 @@ impl PathSegment { /// # Returns /// /// An `AaBb` representing the axis-aligned bounding box of the segment. - pub(crate) fn bounding_box(&self) -> AaBb { + pub(crate) fn bounding_box(&self) -> Aabb { match *self { - PathSegment::Line(start, end) => AaBb { + PathSegment::Line(start, end) => Aabb { top: start.y.min(end.y), right: start.x.max(end.x), bottom: start.y.max(end.y), @@ -607,12 +607,12 @@ impl PathSegment { PathSegment::Cubic(p1, p2, p3, p4) => { let (left, right) = cubic_bounding_interval(p1.x, p2.x, p3.x, p4.x); let (top, bottom) = cubic_bounding_interval(p1.y, p2.y, p3.y, p4.y); - AaBb { top, right, bottom, left } + Aabb { top, right, bottom, left } } PathSegment::Quadratic(p1, p2, p3) => { let (left, right) = quadratic_bounding_interval(p1.x, p2.x, p3.x); let (top, bottom) = quadratic_bounding_interval(p1.y, p2.y, p3.y); - AaBb { top, right, bottom, left } + Aabb { top, right, bottom, left } } PathSegment::Arc(start, rx, ry, phi, _, _, end) => { if let Some(center_param) = self.arc_segment_to_center() { diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index a12dd777a79..d795533976e 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -65,7 +65,7 @@ new_key_type! { // // SPDX-License-Identifier: MIT -use crate::aabb::{bounding_box_around_point, bounding_box_max_extent, merge_bounding_boxes, AaBb}; +use crate::aabb::{bounding_box_around_point, bounding_box_max_extent, merge_bounding_boxes, Aabb}; use crate::epsilons::Epsilons; use crate::intersection_path_segment::{path_segment_intersection, segments_equal}; use crate::path::Path; @@ -138,7 +138,7 @@ pub const EPS: Epsilons = Epsilons { }; type MajorGraphEdgeStage1 = (PathSegment, u8); -type MajorGraphEdgeStage2 = (PathSegment, u8, AaBb); +type MajorGraphEdgeStage2 = (PathSegment, u8, Aabb); #[derive(Debug, Clone)] pub struct MajorGraphEdge { @@ -403,7 +403,7 @@ fn split_at_self_intersections(edges: &mut Vec) { /// A tuple containing: /// * A vector of split edges (MajorGraphEdgeStage2). /// * An optional overall bounding box (AaBb) for all edges. -fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec, Option) { +fn split_at_intersections(edges: &[MajorGraphEdgeStage1]) -> (Vec, Option) { // Step 1: Add bounding boxes to edges let with_bounding_box: Vec = edges.iter().map(|(seg, parent)| (*seg, *parent, seg.bounding_box())).collect(); @@ -507,7 +507,7 @@ impl Direction { } // TODO:(@TrueDoctor) Optimize this by rounding each vertex up and down and then inserting them in a hashmap. This should remove the need for bbox calculations and the quad tree -fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: AaBb) -> MajorGraph { +fn find_vertices(edges: &[MajorGraphEdgeStage2], bounding_box: Aabb) -> MajorGraph { let mut vertex_tree = QuadTree::new(bounding_box, POINT_TREE_DEPTH, 8); let mut graph = MajorGraph { edges: SlotMap::with_key(), @@ -1171,12 +1171,12 @@ fn test_inclusion(a: &DualGraphComponent, b: &DualGraphComponent, edges: &SlotMa } None } -fn bounding_box_intersects_horizontal_ray(bounding_box: &AaBb, point: DVec2) -> bool { +fn bounding_box_intersects_horizontal_ray(bounding_box: &Aabb, point: DVec2) -> bool { interval_crosses_point(bounding_box.top, bounding_box.bottom, point[1]) && bounding_box.right >= point[0] } struct IntersectionSegment { - bounding_box: AaBb, + bounding_box: Aabb, seg: PathSegment, } @@ -1843,7 +1843,7 @@ mod tests { #[test] fn test_bounding_box_intersects_horizontal_ray() { - let bbox = AaBb { + let bbox = Aabb { top: 10.0, right: 40.0, bottom: 30.0, diff --git a/libraries/path-bool/src/util/aabb.rs b/libraries/path-bool/src/util/aabb.rs index d39c5ec4cac..a8d8f79cd2d 100644 --- a/libraries/path-bool/src/util/aabb.rs +++ b/libraries/path-bool/src/util/aabb.rs @@ -1,20 +1,20 @@ use glam::DVec2; #[derive(Clone, Copy, Debug, PartialEq)] -pub(crate) struct AaBb { +pub(crate) struct Aabb { pub top: f64, pub right: f64, pub bottom: f64, pub left: f64, } -pub(crate) fn bounding_boxes_overlap(a: &AaBb, b: &AaBb) -> bool { +pub(crate) fn bounding_boxes_overlap(a: &Aabb, b: &Aabb) -> bool { a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom } -pub(crate) fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { +pub(crate) fn merge_bounding_boxes(a: Option, b: &Aabb) -> Aabb { match a { - Some(a) => AaBb { + Some(a) => Aabb { top: a.top.min(b.top), right: a.right.max(b.right), bottom: a.bottom.max(b.bottom), @@ -24,15 +24,15 @@ pub(crate) fn merge_bounding_boxes(a: Option, b: &AaBb) -> AaBb { } } -pub(crate) fn extend_bounding_box(bounding_box: Option, point: DVec2) -> AaBb { +pub(crate) fn extend_bounding_box(bounding_box: Option, point: DVec2) -> Aabb { match bounding_box { - Some(bb) => AaBb { + Some(bb) => Aabb { top: bb.top.min(point.y), right: bb.right.max(point.x), bottom: bb.bottom.max(point.y), left: bb.left.min(point.x), }, - None => AaBb { + None => Aabb { top: point.y, right: point.x, bottom: point.y, @@ -41,12 +41,12 @@ pub(crate) fn extend_bounding_box(bounding_box: Option, point: DVec2) -> A } } -pub(crate) fn bounding_box_max_extent(bounding_box: &AaBb) -> f64 { +pub(crate) fn bounding_box_max_extent(bounding_box: &Aabb) -> f64 { (bounding_box.right - bounding_box.left).max(bounding_box.bottom - bounding_box.top) } -pub(crate) fn bounding_box_around_point(point: DVec2, padding: f64) -> AaBb { - AaBb { +pub(crate) fn bounding_box_around_point(point: DVec2, padding: f64) -> Aabb { + Aabb { top: point.y - padding, right: point.x + padding, bottom: point.y + padding, @@ -54,8 +54,8 @@ pub(crate) fn bounding_box_around_point(point: DVec2, padding: f64) -> AaBb { } } -pub(crate) fn expand_bounding_box(bounding_box: &AaBb, padding: f64) -> AaBb { - AaBb { +pub(crate) fn expand_bounding_box(bounding_box: &Aabb, padding: f64) -> Aabb { + Aabb { top: bounding_box.top - padding, right: bounding_box.right + padding, bottom: bounding_box.bottom + padding, diff --git a/libraries/path-bool/src/util/quad_tree.rs b/libraries/path-bool/src/util/quad_tree.rs index 3255edf9fef..75fece1dd4f 100644 --- a/libraries/path-bool/src/util/quad_tree.rs +++ b/libraries/path-bool/src/util/quad_tree.rs @@ -1,16 +1,16 @@ -use crate::aabb::AaBb; +use crate::aabb::Aabb; use std::collections::HashSet; pub struct QuadTree { - bounding_box: AaBb, + bounding_box: Aabb, depth: usize, inner_node_capacity: usize, subtrees: Option; 4]>>, - pairs: Vec<(AaBb, T)>, + pairs: Vec<(Aabb, T)>, } impl QuadTree { - pub fn new(bounding_box: AaBb, depth: usize, inner_node_capacity: usize) -> Self { + pub fn new(bounding_box: Aabb, depth: usize, inner_node_capacity: usize) -> Self { QuadTree { bounding_box, depth, @@ -20,7 +20,7 @@ impl QuadTree { } } - pub fn insert(&mut self, bounding_box: AaBb, value: T) -> bool { + pub fn insert(&mut self, bounding_box: Aabb, value: T) -> bool { if !crate::aabb::bounding_boxes_overlap(&bounding_box, &self.bounding_box) { return false; } @@ -37,7 +37,7 @@ impl QuadTree { true } - pub fn find(&self, bounding_box: &AaBb) -> HashSet + pub fn find(&self, bounding_box: &Aabb) -> HashSet where T: Eq + std::hash::Hash + Clone, { @@ -46,7 +46,7 @@ impl QuadTree { set } - fn find_internal(&self, bounding_box: &AaBb, set: &mut HashSet) + fn find_internal(&self, bounding_box: &Aabb, set: &mut HashSet) where T: Eq + std::hash::Hash + Clone, { @@ -77,7 +77,7 @@ impl QuadTree { self.subtrees = Some(Box::new([ QuadTree::new( - AaBb { + Aabb { top: self.bounding_box.top, right: midx, bottom: midy, @@ -87,7 +87,7 @@ impl QuadTree { self.inner_node_capacity, ), QuadTree::new( - AaBb { + Aabb { top: self.bounding_box.top, right: self.bounding_box.right, bottom: midy, @@ -97,7 +97,7 @@ impl QuadTree { self.inner_node_capacity, ), QuadTree::new( - AaBb { + Aabb { top: midy, right: midx, bottom: self.bounding_box.bottom, @@ -107,7 +107,7 @@ impl QuadTree { self.inner_node_capacity, ), QuadTree::new( - AaBb { + Aabb { top: midy, right: self.bounding_box.right, bottom: self.bounding_box.bottom, From 99de8834136f423a73e01764f1b33dea5cbf5644 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 20 Sep 2024 15:38:56 -0700 Subject: [PATCH 37/39] Fix license info --- libraries/path-bool/LICENSE-MIT | 23 ++++++++--------------- libraries/path-bool/NOTICE | 6 ++++++ libraries/path-bool/README.md | 25 ++++++++++++------------- 3 files changed, 26 insertions(+), 28 deletions(-) create mode 100644 libraries/path-bool/NOTICE diff --git a/libraries/path-bool/LICENSE-MIT b/libraries/path-bool/LICENSE-MIT index 969d061e8ba..826be3fb677 100644 --- a/libraries/path-bool/LICENSE-MIT +++ b/libraries/path-bool/LICENSE-MIT @@ -1,17 +1,10 @@ -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +MIT License -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +Copyright (c) 2024 Adam Platkevič +Copyright (c) 2024 Graphite Authors -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/libraries/path-bool/NOTICE b/libraries/path-bool/NOTICE new file mode 100644 index 00000000000..80cfbdae49e --- /dev/null +++ b/libraries/path-bool/NOTICE @@ -0,0 +1,6 @@ +NOTICE + +This project includes software originally developed by Adam Platkevič. +The original project is licensed under the MIT License. + +Rust port and modifications are (c) 2024 Graphite Authors. diff --git a/libraries/path-bool/README.md b/libraries/path-bool/README.md index c2dcbfed64b..379b975d632 100644 --- a/libraries/path-bool/README.md +++ b/libraries/path-bool/README.md @@ -1,8 +1,8 @@ -# path_bool +# Path Bool A Rust library for performing boolean operations on SVG paths. -`path_bool` is a port of [PathBool.js](https://github.com/r-flash/PathBool.js), providing low-level functionality for boolean operations on complex 2D paths. It handles paths with multiple subpaths, self-intersections, and different fill rules. +Path Bool is a port of [PathBool.js](https://github.com/r-flash/PathBool.js), providing low-level functionality for boolean operations on complex 2D paths. It handles paths with multiple subpaths, self-intersections, and different fill rules. ## Features @@ -17,7 +17,7 @@ Add this to your `Cargo.toml`: ```toml [dependencies] -path_bool = "0.1.0" +path-bool = "0.1.0" ``` ## Usage @@ -46,24 +46,23 @@ fn main() { ## Algorithm -The boolean operations are implemented using a graph-based approach. After the parsing the input, self intersecting cubic beziers curves are simplified. Then the intersection points between all edges are calculated. These are then turned into a graph representation where every intersection becomes a new vertex. We then apply edge contractions to remove vertices with a degree of 2 to compute the graph minor. At this stage, identiacal edges are deduplicated. Because we are ultimately interrested in the faces of the graph to decide if they should be included in the final output, we then compute the dual graph in which the faces become vertices and vertices become the new faces. That dual structure is then used to determine which faces (dual vertices) should be included in the final output. +The boolean operations are implemented using a graph-based approach. After the parsing the input, self-intersecting cubic beziers curves are simplified. Then the intersection points between all edges are calculated. These are then turned into a graph representation where every intersection becomes a new vertex. We then apply edge contractions to remove vertices with a degree of 2 to compute the [graph minor](https://en.wikipedia.org/wiki/Graph_minor). At this stage, identical edges are deduplicated. Because we are ultimately interested in the faces of the graph to decide if they should be included in the final output, we then compute the dual graph in which the faces become vertices and vertices become the new faces. That dual structure is then used to determine which faces (dual vertices) should be included in the final output. -## Development Status +## Development status -This project is a port of PathBool.js and is still in early stages of development. Contributions, bug reports, and feedback are welcome! +This project is a port of PathBool.js and is still in early stages of development. Contributions, bug reports, and feedback are welcome. -## TODO +Future work includes: - Comprehensive test suite - Performance optimizations - Additional examples and documentation -## License +## License and acknowledgements -MIT License or Apache-2.0 - -Copyright © 2024 [ Graphite Authors ] +This library is a Rust port of [PathBool.js](https://github.com/r-flash/PathBool.js) by Adam Platkevič. -## Acknowledgements +It is dual-licensed under the MIT License or Apache-2.0 License. You may opt to comply with either license. -This library is a Rust port of [PathBool.js](https://github.com/r-flash/PathBool.js) by Adam Platkevič. +Copyright © 2024 Adam Platkevič +Copyright © 2024 Graphite Authors From 176be29fa2dc022f280a20ec59804ebfb6a804a0 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 20 Sep 2024 16:05:45 -0700 Subject: [PATCH 38/39] Adopt new node macro and fix demo artwork --- demo-artwork/painted-dreams.graphite | 2 +- .../node_graph/document_node_definitions.rs | 3 ++- .../document/node_graph/node_properties.rs | 9 +-------- node-graph/gstd/src/vector.rs | 19 ++++++++++--------- .../interpreted-executor/src/node_registry.rs | 1 - 5 files changed, 14 insertions(+), 20 deletions(-) diff --git a/demo-artwork/painted-dreams.graphite b/demo-artwork/painted-dreams.graphite index b097d3fd981..d225444f8d4 100644 --- a/demo-artwork/painted-dreams.graphite +++ b/demo-artwork/painted-dreams.graphite @@ -1 +1 @@ -{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[6351696498298648253,[646.8148148148149,0.0]],[10625296323957562985,[473.4814814814815,272.5925925925926]],[15992617814592812350,[621.0370370370368,0.0]],[6379137305818664393,[625.4814814814813,0.0]],[301778328144628917,[493.5149940383244,200.29629629629628]],[4691860614575868200,[528.2962962962963,283.8518518518518]],[533731991408535384,[501.6296296296296,175.40740740740742]],[18118267825025549699,[642.0740740740741,0.0]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[17863574903157697896,[606.8148151308641,95.19407372365433]],[13357220652574593654,[574.2222222222222,108.44444444444449]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[3710133387837274291,15992617814592812350],[12035095010819582754,18118267825025549699],[8462655819889292900,4691860614575868200],[318560030360358929,17863574903157697896],[2035327810332855521,533731991408535384],[11346538709718766144,13357220652574593654],[13662059715350867364,6379137305818664393],[3384102572540409881,18442321214082298093],[3303411878775644985,301778328144628917],[10146665273368938971,6351696498298648253],[8661113083384527971,10625296323957562985]],"end_point":[[3710133387837274291,6379137305818664393],[10146665273368938971,17863574903157697896],[11346538709718766144,15992617814592812350],[2035327810332855521,13357220652574593654],[8462655819889292900,301778328144628917],[3384102572540409881,18118267825025549699],[13662059715350867364,18442321214082298093],[3303411878775644985,10625296323957562985],[8661113083384527971,533731991408535384],[318560030360358929,4691860614575868200],[12035095010819582754,6351696498298648253]],"handle_primary":[[318560030360358929,[-46.95465552079859,46.40007297527743]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[3710133387837274291,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[10146665273368938971,[0.0,0.0]],[12035095010819582754,[0.0,0.0]],[13662059715350867364,[0.0,0.0]],[8462655819889292900,[0.0,0.0]],[3384102572540409881,[0.0,0.0]],[3303411878775644985,[0.0,0.0]]],"handle_end":[[3384102572540409881,[0.5807410754567854,77.36888852918523]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[11346538709718766144,[1.1377781018271662,63.71555518874077]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[13662059715350867364,[68.68148181185177,-54.8859262904691]],[8462655819889292900,[-21.74426522093495,47.99999999999997]],[12035095010819582754,[0.0,0.0]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[3710133387837274291,[0.0,0.0]],[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[318560030360358929,[-97.48148148148152,-81.18518518518522]]],"stroke":[[3303411878775644985,0],[3384102572540409881,0],[2035327810332855521,0],[318560030360358929,0],[3710133387837274291,0],[8661113083384527971,0],[8462655819889292900,0],[12035095010819582754,0],[13662059715350867364,0],[11346538709718766144,0],[10146665273368938971,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}],[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}],[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[17520941196305861319,[889.0,0.0]],[1541401134848201833,[886.0,572.0]],[7727030009292816503,[0.0,768.0]],[4659274885664969740,[896.0,523.0]],[4723170318056755559,[923.0,349.0]],[15701538241214188894,[0.0,0.0]],[6029995238423674441,[898.0,46.0]],[16590926169549948521,[869.0,147.0]],[13279221198527484331,[564.0,768.0]],[11084016020553554647,[655.0,636.0]],[17339925811006567497,[898.0,468.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[12817219955590128894,[933.0,273.0]],[9729762716079513741,[585.0,666.0]],[12317789037775437786,[902.0,394.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[15056691877609602335,4659274885664969740],[1248401493076165062,12317789037775437786],[3307452201570141575,7727030009292816503],[9730229894941201870,4723170318056755559],[16631919016540861133,17321098837874422287],[8919277736361106420,1541401134848201833],[11569179934425192262,16590926169549948521],[8832757535144158913,17339925811006567497],[10137845066833192587,9729762716079513741],[9314952320711038398,11084016020553554647],[862900208337901235,17520941196305861319],[14740183693208469558,13279221198527484331],[4806484166818510930,6029995238423674441],[9808624553037921371,12817219955590128894],[3876401232874291775,15701538241214188894]],"end_point":[[14740183693208469558,7727030009292816503],[9730229894941201870,12317789037775437786],[10137845066833192587,13279221198527484331],[3307452201570141575,15701538241214188894],[16631919016540861133,11084016020553554647],[15056691877609602335,1541401134848201833],[9314952320711038398,9729762716079513741],[9808624553037921371,4723170318056755559],[8832757535144158913,4659274885664969740],[11569179934425192262,12817219955590128894],[862900208337901235,6029995238423674441],[8919277736361106420,17321098837874422287],[3876401232874291775,17520941196305861319],[4806484166818510930,16590926169549948521],[1248401493076165062,17339925811006567497]],"handle_primary":[[8832757535144158913,[14.888888888888914,4.8888888888888005]],[8919277736361106420,[10.458809984597837,40.44073194044492]],[14740183693208469558,[0.0,0.0]],[3307452201570141575,[0.0,0.0]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[862900208337901235,[0.0,0.0]],[11569179934425192262,[-4.0,51.0]],[10137845066833192587,[-19.0,43.0]],[9314952320711038398,[-34.0,-7.0]],[15056691877609602335,[0.0,0.0]],[3876401232874291775,[0.0,0.0]],[9808624553037921371,[18.0,36.0]],[4806484166818510930,[11.595886737767424,32.210796493798]],[1248401493076165062,[21.0,27.0]],[9730229894941201870,[-24.00371914417652,11.366922485048674]]],"handle_end":[[862900208337901235,[-9.000000000000114,-25.0]],[14740183693208469558,[0.0,0.0]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[9730229894941201870,[-21.0,-27.0]],[3876401232874291775,[0.0,0.0]],[10137845066833192587,[0.0,0.0]],[11569179934425192262,[-18.0,-36.0]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[9314952320711038398,[19.0,-43.0]],[9808624553037921371,[28.703703703703695,-13.592592592592496]],[15056691877609602335,[-10.0,-38.66666666666663]],[16631919016540861133,[34.0,7.0]],[3307452201570141575,[0.0,0.0]]],"stroke":[[862900208337901235,0],[10137845066833192587,0],[16631919016540861133,0],[9730229894941201870,0],[3307452201570141575,0],[3876401232874291775,0],[8919277736361106420,0],[14740183693208469558,0],[11569179934425192262,0],[9808624553037921371,0],[9314952320711038398,0],[8832757535144158913,0],[4806484166818510930,0],[1248401493076165062,0],[15056691877609602335,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9577388580635291078,[1536.0,0.0]],[9346093213164033195,[1211.0,0.0]],[3249248431686392864,[1536.0,95.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[9585086796709645600,9346093213164033195],[13980191878100735848,3249248431686392864],[1147165232046305110,9577388580635291078]],"end_point":[[1147165232046305110,9346093213164033195],[13980191878100735848,9577388580635291078],[9585086796709645600,3249248431686392864]],"handle_primary":[[1147165232046305110,[0.0,0.0]],[9585086796709645600,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]]],"handle_end":[[13980191878100735848,[0.0,0.0]],[9585086796709645600,[-281.0,-17.00000000000003]],[1147165232046305110,[0.0,0.0]]],"stroke":[[9585086796709645600,0],[1147165232046305110,0],[13980191878100735848,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[3251241957527197760,[875.8001811251517,185.6784024477276]],[8048619563638005414,[944.0577392578124,302.0703430175781]],[11100418327549747778,[910.880658436214,243.0946502057613]],[1078998931754662073,[942.0246913580248,264.2962962962963]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[6165219920202055745,3251241957527197760],[3439025775805007707,8048619563638005414],[10795897848378052161,11100418327549747778],[12551435438068218604,1078998931754662073]],"end_point":[[10795897848378052161,8048619563638005414],[3439025775805007707,1078998931754662073],[6165219920202055745,11100418327549747778],[12551435438068218604,3251241957527197760]],"handle_primary":[[10795897848378052161,[11.46027223334628,13.82427457744465]],[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[6165219920202055745,[0.0,0.0]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]]],"handle_end":[[3439025775805007707,[14.61728395061732,27.456790123456813]],[12551435438068218604,[23.33217876876199,5.204454965879364]],[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]]],"stroke":[[12551435438068218604,0],[10795897848378052161,0],[6165219920202055745,0],[3439025775805007707,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}],[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[4481635366652149569,[684.8888888888889,395.55555555555554]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[4765910415851982345,[283.33331298828125,354.6666564941406]],[1608608093193158603,[609.7777777777777,620.0]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[3045825504718908919,4475009837548700636],[11103925991989272298,4765910415851982345],[3983292299330016176,1608608093193158603],[8024777209266880257,4481635366652149569]],"end_point":[[11103925991989272298,4475009837548700636],[3045825504718908919,4481635366652149569],[8024777209266880257,1608608093193158603],[3983292299330016176,4765910415851982345]],"handle_primary":[[3045825504718908919,[62.22222222222217,43.111111111111086]],[8024777209266880257,[11.111111111111086,62.22222222222217]],[11103925991989272298,[0.0,0.0]],[3983292299330016176,[0.0,0.0]]],"handle_end":[[11103925991989272298,[-113.5844024581724,39.08097956276566]],[8024777209266880257,[34.66666666666674,-85.33333333333337]],[3983292299330016176,[0.0,0.0]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]]],"stroke":[[3983292299330016176,0],[3045825504718908919,0],[11103925991989272298,0],[8024777209266880257,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}],[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}]],"remove_g1_continuous":[[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[9658821733796680583,[920.5925925925926,208.0]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[425878374398720476,[898.633744855967,207.99999999999997]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[5496457317579994340,[929.3607681755832,198.40877914951983]],[10872099980755217048,[889.0,0.0]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[13223251807271379465,9175973472325454282],[6443321953815072406,2409359561719399794],[13961346931609713434,13049263474526562389],[6545223889678917273,14263506369487797530],[16241193756011776206,10872099980755217048],[5210886161307886529,425878374398720476],[9187894839116405225,9658821733796680583],[9745298522639115232,5496457317579994340],[8058164935346100149,7125168137854779179],[11050813873332011119,5252668597335249558]],"end_point":[[13223251807271379465,14263506369487797530],[6545223889678917273,5496457317579994340],[8058164935346100149,9658821733796680583],[13961346931609713434,2409359561719399794],[6443321953815072406,9175973472325454282],[11050813873332011119,10872099980755217048],[16241193756011776206,13049263474526562389],[9745298522639115232,7125168137854779179],[9187894839116405225,425878374398720476],[5210886161307886529,5252668597335249558]],"handle_primary":[[6443321953815072406,[-9.144953020396894,24.145964868041293]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]],[9745298522639115232,[0.0,0.0]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[16241193756011776206,[0.0,0.0]],[9187894839116405225,[-8.263374485596842,1.880201188843188]],[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[6545223889678917273,[0.0,0.0]],[8058164935346100149,[0.0,0.0]]],"handle_end":[[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9745298522639115232,[7.703703703703695,-2.074074074074076]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]],[13961346931609713434,[10.984910836762538,-29.00411522633746]]],"stroke":[[9187894839116405225,0],[16241193756011776206,0],[13223251807271379465,0],[9745298522639115232,0],[13961346931609713434,0],[6545223889678917273,0],[6443321953815072406,0],[5210886161307886529,0],[8058164935346100149,0],[11050813873332011119,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}],[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}],[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[6781153531246981076,[872.6913580246915,513.7777777777779]],[15695128662656633322,[825.6790123456792,509.4320987654323]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[3749627916562964805,[866.172839506173,558.2222222222224]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[12599396287665855262,[902.5185185185188,498.56790123456807]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[2535476870476707501,[887.5061728395062,568.6913580246915]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[15700595221504820396,10786213048155734586],[264894972572137143,2535476870476707501],[3021925106447084698,6781153531246981076],[3461110970422306113,8241402276734357681],[17761347836385237495,6164201091766276213],[14489254209548096966,15695128662656633322],[14515109677644612103,3749627916562964805],[6369399239389505343,12599396287665855262],[14847678502054094837,10333377922713208038]],"end_point":[[14515109677644612103,2535476870476707501],[264894972572137143,10786213048155734586],[6369399239389505343,6164201091766276213],[3021925106447084698,15695128662656633322],[15700595221504820396,12599396287665855262],[14489254209548096966,8241402276734357681],[14847678502054094837,3749627916562964805],[17761347836385237495,6781153531246981076],[3461110970422306113,10333377922713208038]],"handle_primary":[[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[15700595221504820396,[0.0,0.0]],[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[3021925106447084698,[-16.59259259259261,2.370370370370324]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[14515109677644612103,[8.888888888888914,0.0]],[17761347836385237495,[0.0,0.0]],[264894972572137143,[0.0,0.0]],[3461110970422306113,[0.38915905346209456,1.493515242756871]]],"handle_end":[[17761347836385237495,[16.59259259259261,-2.370370370370324]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[15700595221504820396,[7.1111111111111995,5.530864197530889]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[14515109677644612103,[0.0,0.0]],[264894972572137143,[3.753086419753003,37.1358024691358]],[6369399239389505343,[0.0,0.0]],[14847678502054094837,[-8.888888888888914,0.0]]],"stroke":[[14847678502054094837,0],[3461110970422306113,0],[264894972572137143,0],[15700595221504820396,0],[17761347836385237495,0],[14515109677644612103,0],[6369399239389505343,0],[14489254209548096966,0],[3021925106447084698,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}],[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[4609870404630548899,[589.432098765432,64.79012345679011]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[16230687409600568539,[491.55555555555554,311.55555555555566]],[2492294980235986276,[604.4434936307387,42.970116997735616]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[12909592102393222573,[607.8024691358027,0.0]],[177515045030371783,[604.2883706752018,0.0]],[12390708657704154619,[596.6748971193416,72.42798353909465]],[8055802412900565217,[480.4444444444445,219.7777777777778]],[6873550371723398444,[538.6666666666667,136.0]],[13416153271806375161,[531.8518518518517,131.2592592592593]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[17799038492181728804,17843645051722826880,11060716078587457450,5057709998225566481,16939098306153440303],"start_point":[[5578827639764758986,1458337690478625792],[921651403153242564,4609870404630548899],[4341232355541306629,12390708657704154619],[3818841110886669992,7624137673235413199],[1705877195608053135,16230687409600568539],[9825559201153691780,13416153271806375161],[12529947318087068663,177515045030371783],[15749222431214672690,2492294980235986276],[14294722277069184337,12448133448335459077],[9361245670457788924,6873550371723398444],[2463526518527501592,8055802412900565217]],"end_point":[[15749222431214672690,12909592102393222573],[921651403153242564,13416153271806375161],[3818841110886669992,12448133448335459077],[9361245670457788924,12390708657704154619],[2463526518527501592,6873550371723398444],[14294722277069184337,2492294980235986276],[12529947318087068663,4609870404630548899],[9825559201153691780,1458337690478625792],[1705877195608053135,8055802412900565217],[4341232355541306629,7624137673235413199],[5578827639764758986,16230687409600568539]],"handle_primary":[[9825559201153691780,[-30.00610951685011,28.39287782239575]],[5578827639764758986,[-19.25925925925924,60.44444444444443]],[3818841110886669992,[0.0,0.0]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[12529947318087068663,[0.0,0.0]],[1705877195608053135,[0.0,0.0]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[15749222431214672690,[3.877242131088792,-22.333682252383095]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[14294722277069184337,[-0.2633744855968416,28.576131687242796]]],"handle_end":[[921651403153242564,[27.555555555555657,-26.07407407407412]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[14294722277069184337,[0.0,0.0]],[9361245670457788924,[-16.14969885498249,21.855925783742933]],[15749222431214672690,[0.0,0.0]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[9825559201153691780,[6.194184133897295,-19.440208666385132]],[2463526518527501592,[-34.96296296296305,33.481481481481495]],[5578827639764758986,[0.0,0.0]],[4341232355541306629,[0.0,0.0]],[3818841110886669992,[0.0,0.0]]],"stroke":[[2463526518527501592,0],[1705877195608053135,0],[12529947318087068663,0],[14294722277069184337,0],[9825559201153691780,0],[921651403153242564,0],[4341232355541306629,0],[15749222431214672690,0],[5578827639764758986,0],[3818841110886669992,0],[9361245670457788924,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}]],"remove_g1_continuous":[[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[5995306636877552,[912.8888888888888,479.7037037037037]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[5021902985892894619,[857.679012345679,478.2880658436215]],[14935583009751134816,[914.9629629629628,418.3703703703703]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[7238075805746621699,[798.6831275720165,497.9094650205762]],[9603704700847490044,[821.037037037037,464.2962962962963]],[5138872293174440313,[922.9629629629628,422.22222222222223]],[17629528758352690600,[892.148148148148,480.2962962962963]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[7203043366367198812,9603704700847490044],[239843798079287870,2355002738045707979],[12687760936062936386,17629528758352690600],[4499620435559196394,9014079831396927156],[9071432674597727163,7238075805746621699],[14131440324578863745,14935583009751134816],[7117413478945421556,5995306636877552],[7250062683967197158,5138872293174440313],[7655921914272804429,5021902985892894619],[14571502160667941876,7008812441195504980]],"end_point":[[7117413478945421556,5138872293174440313],[12687760936062936386,5995306636877552],[14131440324578863745,9014079831396927156],[14571502160667941876,9603704700847490044],[4499620435559196394,7008812441195504980],[7655921914272804429,17629528758352690600],[7250062683967197158,14935583009751134816],[239843798079287870,5021902985892894619],[7203043366367198812,7238075805746621699],[9071432674597727163,2355002738045707979]],"handle_primary":[[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[7117413478945421556,[0.0,0.0]],[14131440324578863745,[0.0,0.0]],[9071432674597727163,[4.345679012345499,-3.555555555555543]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[7203043366367198812,[0.0,0.2962962962963047]],[7250062683967197158,[0.0,0.0]],[14571502160667941876,[-0.5925925925926094,0.0]]],"handle_end":[[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[7117413478945421556,[15.703703703703695,33.48148148148147]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[14131440324578863745,[2.962962962963047,-3.259259259259238]],[239843798079287870,[-21.502976534539364,2.3372800581021456]],[7250062683967197158,[0.0,0.0]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]],[12687760936062936386,[0.0,0.0]],[4499620435559196394,[8.59259259259261,5.629629629629619]]],"stroke":[[239843798079287870,0],[9071432674597727163,0],[7655921914272804429,0],[14571502160667941876,0],[12687760936062936386,0],[14131440324578863745,0],[4499620435559196394,0],[7203043366367198812,0],[7250062683967197158,0],[7117413478945421556,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}]],"remove_g1_continuous":[[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}],[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[266134622800431246,[525.7325506063205,282.1042056224195]],[7115673652122600762,[646.5386352539062,343.99395751953125]],[9852238672814254137,[879.7947439326053,110.54094004739208]],[12075466065090700811,[877.0370370370372,136.5925925925926]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[10196443086284452827,3769008694104161528,13980530488817762548],"start_point":[[2159953159628520134,9852238672814254137],[3166693019207180063,7115673652122600762],[17255728395700231433,12075466065090700811],[10242199012993595528,266134622800431246]],"end_point":[[10242199012993595528,9852238672814254137],[3166693019207180063,266134622800431246],[2159953159628520134,12075466065090700811],[17255728395700231433,7115673652122600762]],"handle_primary":[[2159953159628520134,[0.0,0.0]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]],[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[10242199012993595528,[137.37856050479058,-43.88198340019727]]],"handle_end":[[3166693019207180063,[0.0,0.0]],[2159953159628520134,[0.0,0.0]],[17255728395700231433,[165.46136474609386,67.5615980360243]],[10242199012993595528,[-15.794743932605344,36.71831921186718]]],"stroke":[[3166693019207180063,0],[2159953159628520134,0],[10242199012993595528,0],[17255728395700231433,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}],[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}],[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[9969822516610975381,[0.0,0.0]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[3124531241960914803,[589.9588477366256,64.65843621399176]],[18307826411292029066,[601.1756940654021,0.0]],[16686047298905200065,[283.3333333333333,354.66666666666663]],[16995054111951247369,[0.0,768.0]],[6057321578372831916,[708.148148148148,616.2962962962962]],[87630150944518163,[879.1111111111111,595.8518518518517]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[16788403743390653241,[467.99999999999994,487.3333333333333]],[16808246968731723098,[891.5555555555554,768.0]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[15885450050057549950,3124531241960914803],[9242150930423817167,15635903913637220842],[16224358815792062223,16808246968731723098],[515539069333222772,16686047298905200065],[12162371359208565273,16995054111951247369],[14879480148926424885,8323145223085840944],[5227512358023446442,87630150944518163],[17410347049685436697,8212340198835025146],[14715945740984195653,16788403743390653241],[9544743211426701912,6057321578372831916],[1662692131856898001,18307826411292029066],[8823161072525575433,8652457572576966876],[178608879920007638,9969822516610975381]],"end_point":[[8823161072525575433,3124531241960914803],[14879480148926424885,87630150944518163],[15885450050057549950,18307826411292029066],[17410347049685436697,6057321578372831916],[9544743211426701912,16788403743390653241],[1662692131856898001,9969822516610975381],[12162371359208565273,16808246968731723098],[515539069333222772,15635903913637220842],[16224358815792062223,8323145223085840944],[14715945740984195653,16686047298905200065],[9242150930423817167,8652457572576966876],[178608879920007638,16995054111951247369],[5227512358023446442,8212340198835025146]],"handle_primary":[[515539069333222772,[48.66666666666663,-23.999999999999943]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[16224358815792062223,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[8823161072525575433,[11.259252477575274,-22.666663275824646]],[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[12162371359208565273,[0.0,0.0]],[15885450050057549950,[11.193415637860312,-27.25925925925926]],[14879480148926424885,[0.0,0.0]]],"handle_end":[[14715945740984195653,[0.0,0.0]],[1662692131856898001,[0.0,0.0]],[5227512358023446442,[26.37037037037044,-2.3703703703704377]],[12162371359208565273,[0.0,0.0]],[9544743211426701912,[92.66666666666656,80.66666666666669]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[57.48148148148141,21.629629629629676]],[16224358815792062223,[0.0,0.0]],[15885450050057549950,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[515539069333222772,[-95.07216232621772,78.5378732260062]]],"stroke":[[178608879920007638,0],[15885450050057549950,0],[515539069333222772,0],[12162371359208565273,0],[17410347049685436697,0],[16224358815792062223,0],[5227512358023446442,0],[14879480148926424885,0],[14715945740984195653,0],[1662692131856898001,0],[9242150930423817167,0],[8823161072525575433,0],[9544743211426701912,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}],[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[17457877227823502997,[273.0,476.0]],[13436129231170586617,[481.3333333333333,768.0]],[16608607268690234590,[0.0,340.0]],[5992570223148766873,[-2.273736754432321e-13,768.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[5472571334856691465,17457877227823502997],[13284808974014161135,16608607268690234590],[4274372337254864190,5992570223148766873],[8776124420595946733,13436129231170586617]],"end_point":[[13284808974014161135,17457877227823502997],[5472571334856691465,13436129231170586617],[8776124420595946733,5992570223148766873],[4274372337254864190,16608607268690234590]],"handle_primary":[[5472571334856691465,[146.0,-13.0]],[8776124420595946733,[0.0,0.0]],[13284808974014161135,[161.73791370620617,43.57576470888159]],[4274372337254864190,[0.0,0.0]]],"handle_end":[[4274372337254864190,[0.0,0.0]],[5472571334856691465,[0.4078646547782227,-253.307727480567]],[8776124420595946733,[0.0,0.0]],[13284808974014161135,[-165.43581782916667,14.730586519035386]]],"stroke":[[13284808974014161135,0],[5472571334856691465,0],[4274372337254864190,0],[8776124420595946733,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}],[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[1009888023123207923,16332448509429125699],"delta":[[2904729023031858224,[491.3420376907663,506.7530051313737]],[3507505346656189771,[552.0,768.0000000000001]],[854708012647259796,[740.0,298.0]],[4175610638601362388,[957.0,324.0]],[2195807584570698921,[993.0,767.9999999999999]],[7821224334582795476,[1093.0,600.0]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[546565283439891712,5710832026764395735],"start_point":[[8570276641842028192,2195807584570698921],[4553965744616493549,3507505346656189771],[13993263006398686359,2904729023031858224],[17183285389582020412,7821224334582795476],[17304574948462342226,4175610638601362388],[6577640955869157325,854708012647259796]],"end_point":[[17304574948462342226,7821224334582795476],[13993263006398686359,854708012647259796],[4553965744616493549,2904729023031858224],[6577640955869157325,4175610638601362388],[17183285389582020412,2195807584570698921],[8570276641842028192,3507505346656189771]],"handle_primary":[[13993263006398686359,[0.0,-84.7537417270637]],[6577640955869157325,[102.0,-45.0]],[4553965744616493549,[0.0,0.0]],[17304574948462342226,[50.35246044959922,33.38607084805801]],[17183285389582020412,[-24.08196064282073,82.4624712920831]],[8570276641842028192,[0.0,0.0]]],"handle_end":[[13993263006398686359,[-102.0,45.0]],[17304574948462342226,[33.0,-113.0]],[8570276641842028192,[0.0,0.0]],[4553965744616493549,[0.0,135.2464055295568]],[17183285389582020412,[0.0,0.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]]],"stroke":[[17183285389582020412,0],[4553965744616493549,0],[17304574948462342226,0],[8570276641842028192,0],[6577640955869157325,0],[13993263006398686359,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}]],"remove_g1_continuous":[[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}],[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[4648964341912884959,[324.66666666666646,0.0]],[16569120368910754547,[-43.0,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]],[2003133867055127539,[1011.111083984375,786.3993530273438]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[6602880736207868665,3433930674303663828],"start_point":[[8214025514312603513,2003133867055127539],[7334532063810723038,16569120368910754547],[13431612844608018700,13758328146055368475]],"end_point":[[13431612844608018700,2003133867055127539],[7334532063810723038,13758328146055368475],[8214025514312603513,4648964341912884959]],"handle_primary":[[8214025514312603513,null],[13431612844608018700,null],[9030015329489789075,[69.08057198853999,-80.19415805947563]],[7334532063810723038,null]],"handle_end":[[9030015329489789075,[0.0,0.0]],[7334532063810723038,null],[13431612844608018700,null],[8214025514312603513,null],[2197140374690997530,[-24.333333333333485,-86.99999999999977]]],"stroke":[[8214025514312603513,0],[7334532063810723038,0],[13431612844608018700,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[7639287212006638253,[862.8888888888888,349.3333333333333]],[10412162547161259027,[887.3333333333333,376.0]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[7025422618543191491,[911.5555555555554,345.3333333333333]],[3831533579307185652,[880.4444444444443,357.3333333333333]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[6952183320761642858,[933.9259259259262,324.3456790123457]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[15117515618866904690,[819.1111111111109,354.44444444444434]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[12854270992100552972,7025422618543191491],[10498175376126066982,13654185056786459919],[15286139376878919277,15117515618866904690],[9330486019469919863,5269777039739103358],[15838384105575178137,15750781936547583892],[11214998966879437330,2802617302192982616],[10426255560432238561,6952183320761642858],[1241631398419524272,7639287212006638253],[10438163357339042361,10412162547161259027],[379744301215040936,3831533579307185652],[4069217348643062888,16937470333767479918]],"end_point":[[11214998966879437330,7639287212006638253],[10498175376126066982,6952183320761642858],[1241631398419524272,15117515618866904690],[12854270992100552972,3831533579307185652],[4069217348643062888,10412162547161259027],[10426255560432238561,2802617302192982616],[10438163357339042361,5269777039739103358],[9330486019469919863,13654185056786459919],[379744301215040936,16937470333767479918],[15286139376878919277,15750781936547583892],[15838384105575178137,7025422618543191491]],"handle_primary":[[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[379744301215040936,[-0.2222222222221717,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[15838384105575178137,[22.222222222222285,5.555555555555543]],[10498175376126066982,[0.0,0.0]],[12854270992100552972,[-0.4444444444443434,0.0]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[4069217348643062888,[0.0,0.0]]],"handle_end":[[12854270992100552972,[33.77777777777783,2.2222222222222285]],[15838384105575178137,[-20.0,2.0]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[379744301215040936,[0.0,0.0]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[11214998966879437330,[17.111111111111086,-12.888888888888856]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[9330486019469919863,[0.0,0.0]]],"stroke":[[9330486019469919863,0],[10426255560432238561,0],[10498175376126066982,0],[1241631398419524272,0],[4069217348643062888,0],[379744301215040936,0],[11214998966879437330,0],[10438163357339042361,0],[15286139376878919277,0],[12854270992100552972,0],[15838384105575178137,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}],[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[9496337687212684441,[732.148148148148,57.18518518518518]],[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[13517856880347849115,[777.1851851851851,92.44444444444446]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[14760110820354327749,[614.8148148148148,129.1851851851852]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[11696351847604335156,9496337687212684441],[16628058317667581864,9465415708990918986],[18226408581696793441,14760110820354327749],[3809009367670994230,13517856880347849115],[13496648265229692336,12398030966924498647],[10686631697241750410,2930103517622848405]],"end_point":[[3809009367670994230,12398030966924498647],[18226408581696793441,9465415708990918986],[13496648265229692336,2930103517622848405],[10686631697241750410,9496337687212684441],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115]],"handle_primary":[[10686631697241750410,[-13.037037037036953,-4.444444444444457]],[16628058317667581864,[41.185185185185105,-9.7777777777778]],[11696351847604335156,[-29.333333333333258,11.55555555555555]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]],[18226408581696793441,[0.0,0.0]],[3809009367670994230,[21.33333333333337,4.740740740740733]]],"handle_end":[[10686631697241750410,[29.333333333333258,-11.55555555555555]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[11696351847604335156,[54.81481481481478,-42.37037037037035]],[18226408581696793441,[-41.185185185185105,9.7777777777778]],[13496648265229692336,[13.037037037036953,4.444444444444457]]],"stroke":[[10686631697241750410,0],[18226408581696793441,0],[16628058317667581864,0],[11696351847604335156,0],[3809009367670994230,0],[13496648265229692336,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}],[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[12314285668680405002,[1085.0,181.0]],[7388288026322342161,[1277.0,319.0]],[12796056970187696453,[1418.0,0.0]],[5173348374891662425,[969.0,0.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[9177623211202289793,12314285668680405002],[10860608091363771974,5173348374891662425],[9065140293539496953,12796056970187696453],[18091265337503274797,7388288026322342161]],"end_point":[[9065140293539496953,5173348374891662425],[18091265337503274797,12796056970187696453],[9177623211202289793,7388288026322342161],[10860608091363771974,12314285668680405002]],"handle_primary":[[10860608091363771974,[0.0,0.0]],[9065140293539496953,[0.0,0.0]],[9177623211202289793,[-33.0,137.0]],[18091265337503274797,[178.0,-35.0]]],"handle_end":[[9065140293539496953,[0.0,0.0]],[10860608091363771974,[25.066898104916696,-104.0656072840481]],[9177623211202289793,[-77.81941867085992,15.301571086966838]],[18091265337503274797,[168.99998492988766,81.0]]],"stroke":[[9177623211202289793,0],[9065140293539496953,0],[18091265337503274797,0],[10860608091363771974,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}],[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[2189722519288419244,[796.0493827160494,202.2716049382716]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[15817054697695831753,[806.716049382716,206.22222222222223]],[4854280308383915721,[813.9259259259259,200.2962962962963]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[15744271344233846756,[785.7777777777777,205.62962962962965]],[5664077098702810122,[686.5185185185185,191.1111111111111]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[12058665768506126331,[693.7283950617283,174.35390946502056]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[13567509413382199058,[702.6831275720166,195.95061728395063]],[13877679667762731651,[743.4074074074074,234.66666666666669]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[1639796012074210121,6802441093413090533],[8279051592565434787,5664077098702810122],[3109091330258982137,15744271344233846756],[18299135553255571870,15817054697695831753],[5102625335252315850,15575201098426093294],[13932755083907220179,17729943149159368459],[16261506098907231989,13567509413382199058],[14941832641240060361,7436032950540776377],[94092576912261794,2189722519288419244],[2336956120616260883,12058665768506126331],[2367379450383978497,14178520291283306679],[3918280827204321712,4854280308383915721],[11037018395008586448,13877679667762731651]],"end_point":[[3918280827204321712,17729943149159368459],[8279051592565434787,14178520291283306679],[13932755083907220179,7436032950540776377],[94092576912261794,15817054697695831753],[2336956120616260883,6802441093413090533],[14941832641240060361,2189722519288419244],[3109091330258982137,13877679667762731651],[5102625335252315850,12058665768506126331],[18299135553255571870,15744271344233846756],[1639796012074210121,4854280308383915721],[11037018395008586448,13567509413382199058],[2367379450383978497,15575201098426093294],[16261506098907231989,5664077098702810122]],"handle_primary":[[18299135553255571870,[0.0,0.0]],[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[94092576912261794,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[16261506098907231989,[0.0,0.0]],[2336956120616260883,[0.0,0.0]],[3918280827204321712,[0.0,0.0]],[3109091330258982137,[0.0,0.0]],[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[13932755083907220179,[0.0,0.0]],[14941832641240060361,[0.0,0.0]],[11037018395008586448,[0.0,0.0]]],"handle_end":[[14941832641240060361,[7.1111111111111995,1.7777777777778]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[3918280827204321712,[0.0,0.0]],[13932755083907220179,[0.0,0.0]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[1639796012074210121,[-19.259259259259352,-3.259259259259238]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[94092576912261794,[0.0,0.0]],[2336956120616260883,[-65.77777777777783,13.333333333333314]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[16261506098907231989,[12.1395654462896,1.5502392023748983]]],"stroke":[[16261506098907231989,0],[1639796012074210121,0],[3918280827204321712,0],[11037018395008586448,0],[5102625335252315850,0],[13932755083907220179,0],[14941832641240060361,0],[94092576912261794,0],[3109091330258982137,0],[2336956120616260883,0],[8279051592565434787,0],[2367379450383978497,0],[18299135553255571870,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[5480246971175127548,[364.0,767.9999999999999]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[949359986970918930,[0.0,608.0]],[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[6561081452252813685,15926511461198813522,11231973846952426191],"start_point":[[9717584104793611782,949359986970918930],[12480300844056666979,6265491311473200676],[8951068186878308228,6461719056721357962],[15710828508798332384,5480246971175127548]],"end_point":[[15710828508798332384,6265491311473200676],[9717584104793611782,6461719056721357962],[12480300844056666979,949359986970918930],[8951068186878308228,5480246971175127548]],"handle_primary":[[12480300844056666979,null],[9717584104793611782,[0.0,0.0]],[15710828508798332384,null],[8951068186878308228,[121.00000000000006,-37.99999999999994]]],"handle_end":[[12480300844056666979,null],[9717584104793611782,[-63.1770926995265,19.84073985604961]],[15710828508798332384,null],[8951068186878308228,[-92.0,-81.99999999999989]]],"stroke":[[15710828508798332384,0],[9717584104793611782,0],[12480300844056666979,0],[8951068186878308228,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}],[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}],[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}]],"remove_g1_continuous":[[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[3123395482103162919,[-2.273736754432321e-13,689.0]],[16723991032614525258,[553.0000000000001,768.0]],[1623125309784127684,[643.9258958566198,633.6997633965701]],[2668496811386192321,[0.0,768.0]],[7209807874503344461,[188.0,694.6666666666669]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[3656277643115996070,16723991032614525258],[16287649713110748258,3123395482103162919],[1652964032977338610,7209807874503344461],[6789459806904610761,1623125309784127684],[16456150086799119359,2668496811386192321]],"end_point":[[6789459806904610761,7209807874503344461],[16456150086799119359,16723991032614525258],[1652964032977338610,3123395482103162919],[16287649713110748258,2668496811386192321],[3656277643115996070,1623125309784127684]],"handle_primary":[[16456150086799119359,[0.0,0.0]],[16287649713110748258,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[1652964032977338610,[-81.48609837852206,84.6759456460087]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]]],"handle_end":[[6789459806904610761,[187.33333333333343,-194.6666666666667]],[3656277643115996070,[0.0,0.0]],[1652964032977338610,[56.00000000000023,11.0]],[16456150086799119359,[0.0,0.0]],[16287649713110748258,[0.0,0.0]]],"stroke":[[3656277643115996070,0],[6789459806904610761,0],[1652964032977338610,0],[16287649713110748258,0],[16456150086799119359,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}],[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}]],"remove_g1_continuous":[[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}],[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[10156053545530752213,[1094.162353515625,594.2965698242188]],[16569120368910754547,[1361.0,768.0]],[4648964341912884959,[665.0000000000001,768.0]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[9030015329489789075,4648964341912884959],[2197140374690997530,10156053545530752213],[3433930674303663828,16569120368910754547]],"end_point":[[3433930674303663828,4648964341912884959],[9030015329489789075,10156053545530752213],[2197140374690997530,16569120368910754547]],"handle_primary":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[79.20069951994813,30.807024746222492]],[9030015329489789075,[32.66666666666663,-95.99999999999989]]],"handle_end":[[3433930674303663828,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[9030015329489789075,[-238.88331323750492,-92.9194336284096]]],"stroke":[[2197140374690997530,0],[9030015329489789075,0],[3433930674303663828,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[17147466439590042359,[526.0109927536641,282.1042175292969]],[7903705226822768120,[497.3827160493826,248.88888888888889]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[6082833770141706533,[504.0987654320987,184.6255144032922]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[2255088856072565305,13341364271767916194],[14649965831690031908,6082833770141706533],[801877719748058643,7903705226822768120],[9659144961849433642,17147466439590042359]],"end_point":[[801877719748058643,17147466439590042359],[14649965831690031908,7903705226822768120],[9659144961849433642,13341364271767916194],[2255088856072565305,6082833770141706533]],"handle_primary":[[801877719748058643,[13.173601585124231,23.615912208504938]],[14649965831690031908,[0.0,0.0]],[9659144961849433642,[0.0,0.0]],[2255088856072565305,[0.0,0.0]]],"handle_end":[[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[801877719748058643,[0.0,0.0]],[9659144961849433642,[195.55555555555569,-16.14814814814804]],[2255088856072565305,[-112.09876543209862,43.81893004115227]]],"stroke":[[14649965831690031908,0],[9659144961849433642,0],[801877719748058643,0],[2255088856072565305,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}],[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":null,"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[9374180853656949931,[784.0000000000002,176.98765432098767]],[15245407364463454564,[773.530864197531,141.4320987654321]],[16958489363675356032,[658.172839506173,169.08641975308643]],[3438797896265725901,[795.4567901234569,94.41975308641976]],[13358295350421759755,[778.4691358024693,177.1851851851852]],[16005438712872589849,[817.1851851851852,94.61728395061728]],[4322398537034510509,[776.888888888889,117.53086419753087]],[10491326691824745018,[811.851851851852,148.54320987654322]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[1674257131044231065,[829.4320987654323,121.67901234567904]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[12873317883441611394,15245407364463454564],[8327087349631976772,4322398537034510509],[8528911024810728168,16005438712872589849],[198953627342130434,7347160684180114694],[3784798568712268630,13358295350421759755],[3235570761188242773,1674257131044231065],[16847383896493391194,10491326691824745018],[13015157349146777770,3438797896265725901],[16846650637386857857,9374180853656949931],[11663644781855838202,16958489363675356032]],"end_point":[[16846650637386857857,13358295350421759755],[12873317883441611394,16958489363675356032],[8528911024810728168,1674257131044231065],[16847383896493391194,9374180853656949931],[198953627342130434,4322398537034510509],[11663644781855838202,7347160684180114694],[8327087349631976772,3438797896265725901],[3784798568712268630,15245407364463454564],[3235570761188242773,10491326691824745018],[13015157349146777770,16005438712872589849]],"handle_primary":[[13015157349146777770,[0.0,0.0]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[16846650637386857857,[0.0,0.0]],[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[8528911024810728168,[5.530864197530946,5.925925925925924]],[16847383896493391194,[-17.185185185185105,13.234567901234584]],[12873317883441611394,[-19.75308641975323,2.172839506172835]],[11663644781855838202,[0.0,0.0]],[198953627342130434,[0.0,0.3950617283950635]]],"handle_end":[[16846650637386857857,[0.0,0.0]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[16847383896493391194,[0.0,0.0]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[3784798568712268630,[2.9629629629629335,5.135802469135797]],[8327087349631976772,[0.0,0.0]],[198953627342130434,[0.19753086419757435,13.82716049382715]],[3235570761188242773,[17.185185185185105,-13.234567901234584]]],"stroke":[[3784798568712268630,0],[16846650637386857857,0],[16847383896493391194,0],[13015157349146777770,0],[12873317883441611394,0],[3235570761188242773,0],[11663644781855838202,0],[198953627342130434,0],[8528911024810728168,0],[8327087349631976772,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}]],"remove_g1_continuous":[[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}],[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[9912917483675332510,[1536.0,254.00000000000009]],[11163144542703672167,[763.0,0.0]],[9403888920678312544,[1271.0,199.0]],[7233902871991446034,[908.0,134.0]],[5714042674660607880,[1536.0,0.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[3118709054343469746,9403888920678312544],[7099980686025805826,11163144542703672167],[11879054056208937348,7233902871991446034],[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880]],"end_point":[[3118709054343469746,9912917483675332510],[11879054056208937348,9403888920678312544],[7804540624589615499,11163144542703672167],[12085471811343146506,5714042674660607880],[7099980686025805826,7233902871991446034]],"handle_primary":[[3118709054343469746,[191.0,-106.0]],[11879054056208937348,[68.41365603453937,54.51084151791355]],[7099980686025805826,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[12085471811343146506,[0.0,0.0]]],"handle_end":[[12085471811343146506,[0.0,0.0]],[11879054056208937348,[-121.83694366711715,67.61631428646292]],[3118709054343469746,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]],[7804540624589615499,[0.0,0.0]]],"stroke":[[12085471811343146506,0],[7804540624589615499,0],[7099980686025805826,0],[3118709054343469746,0],[11879054056208937348,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}],[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-64,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,71]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-8,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,113]}}},"network_metadata":null}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,98]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-57,47]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,77]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,54]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,62]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,56]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,45]}}},"network_metadata":null}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,104]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-50,80]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,113]}}},"network_metadata":null}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,50]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-36,45]}}},"network_metadata":null}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-43,65]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,115]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-71,118]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[592.0696649941159,-2529.6713086742443],"tilt":0.0,"zoom":1.3353790580762406},"node_graph_to_viewport":[1.3353790580762406,0.0,0.0,1.3353790580762406,1494.0,-2557.0],"node_graph_top_right":[1405.5999755859375,0.0]},"selection_undo_history":[[],[],[],[8566844905246185636],[],[17740496701763775226],[],[4328376070224119511],[],[8566844905246185636],[16999130951959724657],[],[12709602171929957216],[6468742191365679953],[],[18087203100637857224],[],[12004065064978143915],[10080296672372912698],[12004065064978143915],[],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"Painted Dreams","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-708.878066550151,-430.76433468972016],"tilt":0.0,"zoom":0.8728439370010537},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file +{"network_interface":{"network":{"exports":[{"Node":{"node_id":392274448837115448,"output_index":0,"lambda":false}}],"nodes":[[13353438235848911576,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6379137305818664393,18442321214082298093,18118267825025549699,6351696498298648253,17863574903157697896,4691860614575868200,301778328144628917,10625296323957562985,533731991408535384,13357220652574593654,15992617814592812350],"remove":[],"delta":[[17863574903157697896,[606.8148151308641,95.19407372365433]],[18118267825025549699,[642.0740740740741,0.0]],[4691860614575868200,[528.2962962962963,283.8518518518518]],[301778328144628917,[493.5149940383244,200.29629629629628]],[18442321214082298093,[565.6296296296297,122.96296296296298]],[533731991408535384,[501.6296296296296,175.40740740740742]],[13357220652574593654,[574.2222222222222,108.44444444444449]],[15992617814592812350,[621.0370370370368,0.0]],[6351696498298648253,[646.8148148148149,0.0]],[10625296323957562985,[473.4814814814815,272.5925925925926]],[6379137305818664393,[625.4814814814813,0.0]]]},"segments":{"add":[13662059715350867364,3384102572540409881,12035095010819582754,10146665273368938971,318560030360358929,8462655819889292900,3303411878775644985,8661113083384527971,2035327810332855521,11346538709718766144,3710133387837274291],"remove":[],"start_point":[[11346538709718766144,13357220652574593654],[3710133387837274291,15992617814592812350],[3384102572540409881,18442321214082298093],[10146665273368938971,6351696498298648253],[2035327810332855521,533731991408535384],[13662059715350867364,6379137305818664393],[8462655819889292900,4691860614575868200],[318560030360358929,17863574903157697896],[3303411878775644985,301778328144628917],[8661113083384527971,10625296323957562985],[12035095010819582754,18118267825025549699]],"end_point":[[11346538709718766144,15992617814592812350],[8462655819889292900,301778328144628917],[10146665273368938971,17863574903157697896],[13662059715350867364,18442321214082298093],[8661113083384527971,533731991408535384],[3384102572540409881,18118267825025549699],[3710133387837274291,6379137305818664393],[12035095010819582754,6351696498298648253],[318560030360358929,4691860614575868200],[2035327810332855521,13357220652574593654],[3303411878775644985,10625296323957562985]],"handle_primary":[[3710133387837274291,[0.0,0.0]],[12035095010819582754,[0.0,0.0]],[318560030360358929,[-46.95465552079859,46.40007297527743]],[10146665273368938971,[0.0,0.0]],[3384102572540409881,[0.0,0.0]],[13662059715350867364,[0.0,0.0]],[11346538709718766144,[9.925839724176626,-9.951533978271286]],[8661113083384527971,[0.2962962962963047,0.2962962962963047]],[3303411878775644985,[0.0,0.0]],[2035327810332855521,[42.96296296296293,-41.7777777777778]],[8462655819889292900,[0.0,0.0]]],"handle_end":[[8462655819889292900,[-21.74426522093495,47.99999999999997]],[13662059715350867364,[68.68148181185177,-54.8859262904691]],[3303411878775644985,[-6.2222222222222285,-40.59259259259261]],[12035095010819582754,[0.0,0.0]],[8661113083384527971,[-42.34888386913234,41.180638796880466]],[3384102572540409881,[0.5807410754567854,77.36888852918523]],[2035327810332855521,[-8.299214014278164,8.32069754812484]],[11346538709718766144,[1.1377781018271662,63.71555518874077]],[10146665273368938971,[48.16592595101224,-47.597037061827145]],[318560030360358929,[-97.48148148148152,-81.18518518518522]],[3710133387837274291,[0.0,0.0]]],"stroke":[[2035327810332855521,0],[12035095010819582754,0],[3384102572540409881,0],[3710133387837274291,0],[318560030360358929,0],[8661113083384527971,0],[3303411878775644985,0],[10146665273368938971,0],[11346538709718766144,0],[13662059715350867364,0],[8462655819889292900,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10146665273368938971},{"ty":"Primary","segment":318560030360358929}],[{"ty":"End","segment":12035095010819582754},{"ty":"Primary","segment":10146665273368938971}],[{"ty":"End","segment":8661113083384527971},{"ty":"Primary","segment":2035327810332855521}],[{"ty":"Primary","segment":11346538709718766144},{"ty":"End","segment":2035327810332855521}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16671141883125519098,{"inputs":[{"Node":{"node_id":16306737306999003555,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6445954214067437701,{"inputs":[{"Node":{"node_id":13670206802546093234,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[140396870212231820,{"inputs":[{"Node":{"node_id":18095952297474762348,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5449860184735415958,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[17520941196305861319,6029995238423674441,16590926169549948521,12817219955590128894,4723170318056755559,12317789037775437786,17339925811006567497,4659274885664969740,1541401134848201833,17321098837874422287,11084016020553554647,9729762716079513741,13279221198527484331,7727030009292816503,15701538241214188894],"remove":[],"delta":[[4659274885664969740,[896.0,523.0]],[9729762716079513741,[585.0,666.0]],[17339925811006567497,[898.0,468.0]],[6029995238423674441,[898.0,46.0]],[12817219955590128894,[933.0,273.0]],[17520941196305861319,[889.0,0.0]],[15701538241214188894,[0.0,0.0]],[11084016020553554647,[655.0,636.0]],[1541401134848201833,[886.0,572.0]],[7727030009292816503,[0.0,768.0]],[16590926169549948521,[869.0,147.0]],[13279221198527484331,[564.0,768.0]],[17321098837874422287,[802.6666666666667,656.4444444444445]],[4723170318056755559,[923.0,349.0]],[12317789037775437786,[902.0,394.0]]]},"segments":{"add":[862900208337901235,4806484166818510930,11569179934425192262,9808624553037921371,9730229894941201870,1248401493076165062,8832757535144158913,15056691877609602335,8919277736361106420,16631919016540861133,9314952320711038398,10137845066833192587,14740183693208469558,3307452201570141575,3876401232874291775],"remove":[],"start_point":[[8832757535144158913,17339925811006567497],[3307452201570141575,7727030009292816503],[9730229894941201870,4723170318056755559],[14740183693208469558,13279221198527484331],[9808624553037921371,12817219955590128894],[1248401493076165062,12317789037775437786],[11569179934425192262,16590926169549948521],[862900208337901235,17520941196305861319],[8919277736361106420,1541401134848201833],[9314952320711038398,11084016020553554647],[10137845066833192587,9729762716079513741],[15056691877609602335,4659274885664969740],[16631919016540861133,17321098837874422287],[4806484166818510930,6029995238423674441],[3876401232874291775,15701538241214188894]],"end_point":[[9314952320711038398,9729762716079513741],[3307452201570141575,15701538241214188894],[862900208337901235,6029995238423674441],[3876401232874291775,17520941196305861319],[4806484166818510930,16590926169549948521],[11569179934425192262,12817219955590128894],[1248401493076165062,17339925811006567497],[15056691877609602335,1541401134848201833],[8919277736361106420,17321098837874422287],[14740183693208469558,7727030009292816503],[10137845066833192587,13279221198527484331],[9808624553037921371,4723170318056755559],[8832757535144158913,4659274885664969740],[9730229894941201870,12317789037775437786],[16631919016540861133,11084016020553554647]],"handle_primary":[[10137845066833192587,[-19.0,43.0]],[9730229894941201870,[-24.00371914417652,11.366922485048674]],[11569179934425192262,[-4.0,51.0]],[9808624553037921371,[18.0,36.0]],[9314952320711038398,[-34.0,-7.0]],[1248401493076165062,[21.0,27.0]],[862900208337901235,[0.0,0.0]],[3307452201570141575,[0.0,0.0]],[8832757535144158913,[14.888888888888914,4.8888888888888005]],[14740183693208469558,[0.0,0.0]],[16631919016540861133,[-63.996421719362885,-1.2074796550824587]],[15056691877609602335,[0.0,0.0]],[3876401232874291775,[0.0,0.0]],[8919277736361106420,[10.458809984597837,40.44073194044492]],[4806484166818510930,[11.595886737767424,32.210796493798]]],"handle_end":[[15056691877609602335,[-10.0,-38.66666666666663]],[9314952320711038398,[19.0,-43.0]],[8832757535144158913,[33.33333333333326,-9.666666666666742]],[3307452201570141575,[0.0,0.0]],[4806484166818510930,[3.365858386031487,-42.91469442190146]],[8919277736361106420,[70.66666666666652,1.333333333333485]],[16631919016540861133,[34.0,7.0]],[14740183693208469558,[0.0,0.0]],[1248401493076165062,[30.59259259259261,-36.59259259259255]],[862900208337901235,[-9.000000000000114,-25.0]],[3876401232874291775,[0.0,0.0]],[10137845066833192587,[0.0,0.0]],[9730229894941201870,[-21.0,-27.0]],[11569179934425192262,[-18.0,-36.0]],[9808624553037921371,[28.703703703703695,-13.592592592592496]]],"stroke":[[9730229894941201870,0],[4806484166818510930,0],[15056691877609602335,0],[14740183693208469558,0],[3307452201570141575,0],[8832757535144158913,0],[862900208337901235,0],[9314952320711038398,0],[10137845066833192587,0],[9808624553037921371,0],[8919277736361106420,0],[3876401232874291775,0],[1248401493076165062,0],[16631919016540861133,0],[11569179934425192262,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":862900208337901235},{"ty":"Primary","segment":4806484166818510930}],[{"ty":"End","segment":10137845066833192587},{"ty":"Primary","segment":14740183693208469558}],[{"ty":"End","segment":8919277736361106420},{"ty":"Primary","segment":16631919016540861133}],[{"ty":"End","segment":14740183693208469558},{"ty":"Primary","segment":3307452201570141575}],[{"ty":"End","segment":4806484166818510930},{"ty":"Primary","segment":11569179934425192262}],[{"ty":"End","segment":3307452201570141575},{"ty":"Primary","segment":3876401232874291775}],[{"ty":"End","segment":16631919016540861133},{"ty":"Primary","segment":9314952320711038398}],[{"ty":"End","segment":11569179934425192262},{"ty":"Primary","segment":9808624553037921371}],[{"ty":"End","segment":15056691877609602335},{"ty":"Primary","segment":8919277736361106420}],[{"ty":"End","segment":9808624553037921371},{"ty":"Primary","segment":9730229894941201870}],[{"ty":"End","segment":9730229894941201870},{"ty":"Primary","segment":1248401493076165062}],[{"ty":"End","segment":9314952320711038398},{"ty":"Primary","segment":10137845066833192587}]],"remove_g1_continuous":[[{"ty":"Primary","segment":8832757535144158913},{"ty":"End","segment":1248401493076165062}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12709602171929957216,{"inputs":[{"Node":{"node_id":17753909951719808506,"output_index":0,"lambda":false}},{"Node":{"node_id":12922148192688274227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16609137733952262762,{"inputs":[{"Node":{"node_id":17397123104674848450,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7855094781869605606,{"inputs":[{"Node":{"node_id":14141479077115894852,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractBack"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8460565235419043665,{"inputs":[{"Node":{"node_id":990192925663920333,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,412.1]},"exposed":false}},{"Value":{"tagged_value":{"F64":27.2},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[6194305264313730032,{"inputs":[{"Node":{"node_id":4560146526699152877,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14950060858756810933,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[9346093213164033195,3249248431686392864,9577388580635291078],"remove":[],"delta":[[9346093213164033195,[1211.0,0.0]],[9577388580635291078,[1536.0,0.0]],[3249248431686392864,[1536.0,95.0]]]},"segments":{"add":[9585086796709645600,13980191878100735848,1147165232046305110],"remove":[],"start_point":[[9585086796709645600,9346093213164033195],[1147165232046305110,9577388580635291078],[13980191878100735848,3249248431686392864]],"end_point":[[13980191878100735848,9577388580635291078],[1147165232046305110,9346093213164033195],[9585086796709645600,3249248431686392864]],"handle_primary":[[1147165232046305110,[0.0,0.0]],[13980191878100735848,[4.547473508864641e-13,2.8421709430404014e-14]],[9585086796709645600,[0.0,0.0]]],"handle_end":[[13980191878100735848,[0.0,0.0]],[9585086796709645600,[-281.0,-17.00000000000003]],[1147165232046305110,[0.0,0.0]]],"stroke":[[9585086796709645600,0],[1147165232046305110,0],[13980191878100735848,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13980191878100735848},{"ty":"Primary","segment":1147165232046305110}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14698962747138962125,{"inputs":[{"Node":{"node_id":17562801632450633291,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18031616785650843168,{"inputs":[{"Node":{"node_id":17952673493105230490,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[11196821089257149774,{"inputs":[{"Node":{"node_id":5888633415105234509,"output_index":0,"lambda":false}},{"Node":{"node_id":18031616785650843168,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8359580532088731394,{"inputs":[{"Node":{"node_id":6726954210929537972,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[8269257328703012432,{"inputs":[{"Node":{"node_id":4102754869474520966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13203761224559198689,{"inputs":[{"Node":{"node_id":4809200889774783438,"output_index":0,"lambda":false}},{"Node":{"node_id":14690269209726153565,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13670206802546093234,{"inputs":[{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}},{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7201841978411396053,{"inputs":[{"Node":{"node_id":4328376070224119511,"output_index":0,"lambda":false}},{"Node":{"node_id":17735408893002232096,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11429506195623419966,{"inputs":[{"Node":{"node_id":11301831865756336526,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9071802450034150503,{"inputs":[{"Node":{"node_id":9338394475379815879,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12185047359007423618,{"inputs":[{"Node":{"node_id":10080296672372912698,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7018444885869143173,{"inputs":[{"Node":{"node_id":12234961922142600898,"output_index":0,"lambda":false}},{"Node":{"node_id":8426490990601560741,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1001728975241745659,{"inputs":[{"Node":{"node_id":12770183061753030023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[392274448837115448,{"inputs":[{"Value":{"tagged_value":{"ArtboardGroup":{"artboards":[]}},"exposed":true}},{"Node":{"node_id":6787585796949551500,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"IVec2":[0,0]},"exposed":false}},{"Value":{"tagged_value":{"IVec2":[1536,768]},"exposed":false}},{"Value":{"tagged_value":{"Color":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Bool":true},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":2,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":1}},{"Value":{"tagged_value":{"String":""},"exposed":false}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"graph_craft::document::value::TaggedValue","alias":null,"size":488,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToArtboardNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Network":{"import_type":{"Fn":[{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},{"Concrete":{"name":"graphene_core::graphic_element::ArtboardGroup","alias":null,"size":12,"align":4}}]},"import_index":0}},{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::AppendArtboardNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17562801632450633291,{"inputs":[{"Node":{"node_id":10286817149456341619,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3750439930725791025,{"inputs":[{"Node":{"node_id":12276520439585231336,"output_index":0,"lambda":false}},{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[682567808439406093,{"inputs":[{"Node":{"node_id":7755499790391969923,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":15},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[17740294143355019755,{"inputs":[{"Node":{"node_id":15301503532602557206,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16759836951269190891,{"inputs":[{"Node":{"node_id":11429506195623419966,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17495267820524300686,{"inputs":[{"Node":{"node_id":3050731459444225191,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1248.4973005620557,-153.1867628889006]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.2972951295167027},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0000000000000002,1.0000000000000002]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[5.5511151231257815e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12234961922142600898,{"inputs":[{"Node":{"node_id":1627123781166851142,"output_index":0,"lambda":false}},{"Node":{"node_id":18351415092709164412,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11095670964487764044,{"inputs":[{"Node":{"node_id":17603523494627491590,"output_index":0,"lambda":false}},{"Node":{"node_id":8359580532088731394,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11301831865756336526,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3251241957527197760,11100418327549747778,8048619563638005414,1078998931754662073],"remove":[],"delta":[[8048619563638005414,[944.0577392578124,302.0703430175781]],[3251241957527197760,[875.8001811251517,185.6784024477276]],[11100418327549747778,[910.880658436214,243.0946502057613]],[1078998931754662073,[942.0246913580248,264.2962962962963]]]},"segments":{"add":[6165219920202055745,10795897848378052161,3439025775805007707,12551435438068218604],"remove":[],"start_point":[[12551435438068218604,1078998931754662073],[3439025775805007707,8048619563638005414],[10795897848378052161,11100418327549747778],[6165219920202055745,3251241957527197760]],"end_point":[[10795897848378052161,8048619563638005414],[6165219920202055745,11100418327549747778],[12551435438068218604,3251241957527197760],[3439025775805007707,1078998931754662073]],"handle_primary":[[10795897848378052161,[11.46027223334628,13.82427457744465]],[12551435438068218604,[-14.61728395061732,-27.456790123456813]],[3439025775805007707,[-2.629814161991817e-6,5.151861046215345e-6]],[6165219920202055745,[0.0,0.0]]],"handle_end":[[12551435438068218604,[23.33217876876199,5.204454965879364]],[3439025775805007707,[14.61728395061732,27.456790123456813]],[10795897848378052161,[-4.732636377154108,-19.33783272951229]],[6165219920202055745,[-29.36625514403283,-35.42386831275718]]],"stroke":[[12551435438068218604,0],[10795897848378052161,0],[6165219920202055745,0],[3439025775805007707,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3439025775805007707},{"ty":"Primary","segment":12551435438068218604}],[{"ty":"End","segment":6165219920202055745},{"ty":"Primary","segment":10795897848378052161}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15301503532602557206,{"inputs":[{"Node":{"node_id":6728362629909402903,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6787585796949551500,{"inputs":[{"Node":{"node_id":11095670964487764044,"output_index":0,"lambda":false}},{"Node":{"node_id":16177422101884031678,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18003287685830153881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4475009837548700636,4481635366652149569,1608608093193158603,4765910415851982345],"remove":[1647009925892902058],"delta":[[1608608093193158603,[609.7777777777777,620.0]],[4481635366652149569,[684.8888888888889,395.55555555555554]],[4475009837548700636,[525.7325506063205,282.1042056224195]],[4765910415851982345,[283.33331298828125,354.6666564941406]]]},"segments":{"add":[3045825504718908919,8024777209266880257,3983292299330016176,11103925991989272298],"remove":[13489289770112164650],"start_point":[[3983292299330016176,1608608093193158603],[3045825504718908919,4475009837548700636],[8024777209266880257,4481635366652149569],[11103925991989272298,4765910415851982345]],"end_point":[[3045825504718908919,4481635366652149569],[11103925991989272298,4475009837548700636],[3983292299330016176,4765910415851982345],[8024777209266880257,1608608093193158603]],"handle_primary":[[3045825504718908919,[62.22222222222217,43.111111111111086]],[8024777209266880257,[11.111111111111086,62.22222222222217]],[11103925991989272298,[0.0,0.0]],[3983292299330016176,[0.0,0.0]]],"handle_end":[[11103925991989272298,[-113.5844024581724,39.08097956276566]],[3983292299330016176,[0.0,0.0]],[8024777209266880257,[34.66666666666674,-85.33333333333337]],[3045825504718908919,[-11.111111111111086,-62.22222222222217]]],"stroke":[[11103925991989272298,0],[8024777209266880257,0],[3045825504718908919,0],[3983292299330016176,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":3983292299330016176},{"ty":"Primary","segment":11103925991989272298}],[{"ty":"End","segment":3045825504718908919},{"ty":"Primary","segment":8024777209266880257}]],"remove_g1_continuous":[[{"ty":"End","segment":11103925991989272298},{"ty":"Primary","segment":3045825504718908919}],[{"ty":"End","segment":13489289770112164650},{"ty":"Primary","segment":3045825504718908919}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12770183061753030023,{"inputs":[{"Node":{"node_id":17495267820524300686,"output_index":0,"lambda":false}},{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17299978721726771610,{"inputs":[{"Node":{"node_id":1809704172129195322,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[459.4,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-8.6},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[9135110142507605216,{"inputs":[{"Node":{"node_id":11196821089257149774,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7104261880154687267,{"inputs":[{"Node":{"node_id":2834866505092039323,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18271512507682813443,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10872099980755217048,13049263474526562389,2409359561719399794,9175973472325454282,14263506369487797530,5496457317579994340,7125168137854779179,9658821733796680583,425878374398720476,5252668597335249558],"remove":[],"delta":[[425878374398720476,[898.633744855967,207.99999999999997]],[5496457317579994340,[929.3607681755832,198.40877914951983]],[7125168137854779179,[912.2962962962964,205.6296296296296]],[14263506369487797530,[886.5185185185185,178.66666666666669]],[9175973472325454282,[881.4814814814815,152.5925925925926]],[9658821733796680583,[920.5925925925926,208.0]],[13049263474526562389,[903.1111111111112,55.70370370370371]],[5252668597335249558,[888.2516734908237,208.88931872324497]],[2409359561719399794,[892.7407407407408,111.70370370370372]],[10872099980755217048,[889.0,0.0]]]},"segments":{"add":[16241193756011776206,13961346931609713434,6443321953815072406,13223251807271379465,6545223889678917273,9745298522639115232,8058164935346100149,9187894839116405225,5210886161307886529,11050813873332011119],"remove":[],"start_point":[[5210886161307886529,425878374398720476],[6443321953815072406,2409359561719399794],[13961346931609713434,13049263474526562389],[9187894839116405225,9658821733796680583],[16241193756011776206,10872099980755217048],[8058164935346100149,7125168137854779179],[13223251807271379465,9175973472325454282],[6545223889678917273,14263506369487797530],[9745298522639115232,5496457317579994340],[11050813873332011119,5252668597335249558]],"end_point":[[9745298522639115232,7125168137854779179],[16241193756011776206,13049263474526562389],[6545223889678917273,5496457317579994340],[8058164935346100149,9658821733796680583],[9187894839116405225,425878374398720476],[11050813873332011119,10872099980755217048],[13961346931609713434,2409359561719399794],[6443321953815072406,9175973472325454282],[5210886161307886529,5252668597335249558],[13223251807271379465,14263506369487797530]],"handle_primary":[[11050813873332011119,[-5.947146741852521,-2.1403475298293415]],[6545223889678917273,[0.0,0.0]],[13223251807271379465,[3.2812071330587287,8.329218106995853]],[9745298522639115232,[0.0,0.0]],[6443321953815072406,[-9.144953020396894,24.145964868041293]],[8058164935346100149,[0.0,0.0]],[13961346931609713434,[6.522611384544012,17.67970980547415]],[16241193756011776206,[0.0,0.0]],[5210886161307886529,[-1.1368683772161605e-13,-2.8421709430404014e-14]],[9187894839116405225,[-8.263374485596842,1.880201188843188]]],"handle_end":[[9745298522639115232,[7.703703703703695,-2.074074074074076]],[6545223889678917273,[-25.3424782807499,-1.3461362597164737]],[6443321953815072406,[-3.3276401397055917,-8.447086508484054]],[5210886161307886529,[5.947146741852521,2.1403475298293415]],[11050813873332011119,[-86.26684502769479,250.37037037037035]],[9187894839116405225,[4.974851394604343,2.0557841792410443]],[13961346931609713434,[10.984910836762538,-29.00411522633746]],[16241193756011776206,[-7.506172839506348,-20.345679012345684]],[13223251807271379465,[0.7901234567900701,-9.492455418381354]],[8058164935346100149,[-5.925925925925867,-2.370370370370381]]],"stroke":[[5210886161307886529,0],[13961346931609713434,0],[11050813873332011119,0],[9187894839116405225,0],[8058164935346100149,0],[9745298522639115232,0],[6545223889678917273,0],[6443321953815072406,0],[16241193756011776206,0],[13223251807271379465,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16241193756011776206},{"ty":"Primary","segment":13961346931609713434}],[{"ty":"End","segment":6443321953815072406},{"ty":"Primary","segment":13223251807271379465}],[{"ty":"End","segment":13961346931609713434},{"ty":"Primary","segment":6443321953815072406}],[{"ty":"End","segment":5210886161307886529},{"ty":"Primary","segment":11050813873332011119}]],"remove_g1_continuous":[[{"ty":"Primary","segment":9187894839116405225},{"ty":"End","segment":8058164935346100149}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8511737864852441844,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":5.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[17696051535511578981,{"inputs":[{"Node":{"node_id":16780039553038473906,"output_index":0,"lambda":false}},{"Node":{"node_id":9071802450034150503,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10286817149456341619,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[10786213048155734586,12599396287665855262,6164201091766276213,6781153531246981076,15695128662656633322,8241402276734357681,10333377922713208038,3749627916562964805,2535476870476707501],"remove":[],"delta":[[2535476870476707501,[887.5061728395062,568.6913580246915]],[10786213048155734586,[917.7283950617284,502.91358024691374]],[6164201091766276213,[902.9135802469136,506.8641975308643]],[10333377922713208038,[843.4567901234569,550.1234567901236]],[8241402276734357681,[853.3333333333336,529.1851851851854]],[12599396287665855262,[902.5185185185188,498.56790123456807]],[6781153531246981076,[872.6913580246915,513.7777777777779]],[15695128662656633322,[825.6790123456792,509.4320987654323]],[3749627916562964805,[866.172839506173,558.2222222222224]]]},"segments":{"add":[15700595221504820396,6369399239389505343,17761347836385237495,3021925106447084698,14489254209548096966,3461110970422306113,14847678502054094837,14515109677644612103,264894972572137143],"remove":[],"start_point":[[14515109677644612103,3749627916562964805],[14489254209548096966,15695128662656633322],[264894972572137143,2535476870476707501],[15700595221504820396,10786213048155734586],[6369399239389505343,12599396287665855262],[3461110970422306113,8241402276734357681],[3021925106447084698,6781153531246981076],[14847678502054094837,10333377922713208038],[17761347836385237495,6164201091766276213]],"end_point":[[15700595221504820396,12599396287665855262],[17761347836385237495,6781153531246981076],[264894972572137143,10786213048155734586],[14489254209548096966,8241402276734357681],[3461110970422306113,10333377922713208038],[14847678502054094837,3749627916562964805],[14515109677644612103,2535476870476707501],[3021925106447084698,15695128662656633322],[6369399239389505343,6164201091766276213]],"handle_primary":[[14515109677644612103,[8.888888888888914,0.0]],[14847678502054094837,[0.7901234567900701,2.765432098765473]],[14489254209548096966,[-0.3950434518873181,1.0617032941893854]],[17761347836385237495,[0.0,0.0]],[3461110970422306113,[0.38915905346209456,1.493515242756871]],[15700595221504820396,[0.0,0.0]],[264894972572137143,[0.0,0.0]],[6369399239389505343,[-7.1111111111111995,-5.530864197530889]],[3021925106447084698,[-16.59259259259261,2.370370370370324]]],"handle_end":[[15700595221504820396,[7.1111111111111995,5.530864197530889]],[6369399239389505343,[0.0,0.0]],[264894972572137143,[3.753086419753003,37.1358024691358]],[17761347836385237495,[16.59259259259261,-2.370370370370324]],[14847678502054094837,[-8.888888888888914,0.0]],[14515109677644612103,[0.0,0.0]],[3021925106447084698,[0.5488119028742631,-1.474965354794051]],[14489254209548096966,[-0.5712718875797691,-2.192428171126153]],[3461110970422306113,[-0.7901234567900701,-2.765432098765473]]],"stroke":[[264894972572137143,0],[14489254209548096966,0],[15700595221504820396,0],[3461110970422306113,0],[14515109677644612103,0],[17761347836385237495,0],[14847678502054094837,0],[6369399239389505343,0],[3021925106447084698,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":14489254209548096966},{"ty":"Primary","segment":3461110970422306113}],[{"ty":"End","segment":3021925106447084698},{"ty":"Primary","segment":14489254209548096966}],[{"ty":"End","segment":3461110970422306113},{"ty":"Primary","segment":14847678502054094837}],[{"ty":"End","segment":6369399239389505343},{"ty":"Primary","segment":17761347836385237495}],[{"ty":"End","segment":14847678502054094837},{"ty":"Primary","segment":14515109677644612103}],[{"ty":"End","segment":14515109677644612103},{"ty":"Primary","segment":264894972572137143}],[{"ty":"End","segment":17761347836385237495},{"ty":"Primary","segment":3021925106447084698}],[{"ty":"End","segment":15700595221504820396},{"ty":"Primary","segment":6369399239389505343}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6726954210929537972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[177515045030371783,4609870404630548899,1458337690478625792,16230687409600568539,8055802412900565217,12390708657704154619,12909592102393222573,6873550371723398444,13416153271806375161,2492294980235986276,12448133448335459077,7624137673235413199],"remove":[],"delta":[[2492294980235986276,[604.4434936307387,42.970116997735616]],[8055802412900565217,[480.4444444444445,219.7777777777778]],[16230687409600568539,[491.55555555555554,311.55555555555566]],[4609870404630548899,[589.432098765432,64.79012345679011]],[7624137673235413199,[617.8765432098766,2.465190328815662e-32]],[177515045030371783,[604.2883706752018,0.0]],[13416153271806375161,[531.8518518518517,131.2592592592593]],[1458337690478625792,[473.1851851851851,213.62962962962965]],[12448133448335459077,[610.3703703703706,2.4308653429145085e-63]],[12909592102393222573,[607.8024691358027,0.0]],[6873550371723398444,[538.6666666666667,136.0]],[12390708657704154619,[596.6748971193416,72.42798353909465]]]},"segments":{"add":[12529947318087068663,5578827639764758986,1705877195608053135,2463526518527501592,9361245670457788924,921651403153242564,9825559201153691780,15749222431214672690,14294722277069184337,4341232355541306629,3818841110886669992],"remove":[17799038492181728804,5057709998225566481,11060716078587457450,16939098306153440303,17843645051722826880],"start_point":[[1705877195608053135,16230687409600568539],[5578827639764758986,1458337690478625792],[12529947318087068663,177515045030371783],[921651403153242564,4609870404630548899],[14294722277069184337,12448133448335459077],[3818841110886669992,7624137673235413199],[9825559201153691780,13416153271806375161],[2463526518527501592,8055802412900565217],[9361245670457788924,6873550371723398444],[15749222431214672690,2492294980235986276],[4341232355541306629,12390708657704154619]],"end_point":[[14294722277069184337,2492294980235986276],[4341232355541306629,7624137673235413199],[2463526518527501592,6873550371723398444],[15749222431214672690,12909592102393222573],[12529947318087068663,4609870404630548899],[3818841110886669992,12448133448335459077],[9361245670457788924,12390708657704154619],[9825559201153691780,1458337690478625792],[921651403153242564,13416153271806375161],[1705877195608053135,8055802412900565217],[5578827639764758986,16230687409600568539]],"handle_primary":[[12529947318087068663,[0.0,0.0]],[3818841110886669992,[0.0,0.0]],[1705877195608053135,[0.0,0.0]],[9825559201153691780,[-30.00610951685011,28.39287782239575]],[2463526518527501592,[9.74414620103056,-24.528368023283747]],[921651403153242564,[-7.513106110924076,12.956274823940417]],[15749222431214672690,[3.877242131088792,-22.333682252383095]],[4341232355541306629,[19.753086419753117,-26.73251028806584]],[9361245670457788924,[22.844654233974516,-21.876660410500975]],[14294722277069184337,[-0.2633744855968416,28.576131687242796]],[5578827639764758986,[-19.25925925925924,60.44444444444443]]],"handle_end":[[9361245670457788924,[-16.14969885498249,21.855925783742933]],[12529947318087068663,[12.90534979423876,-22.255144032921805]],[3818841110886669992,[0.0,0.0]],[14294722277069184337,[0.0,0.0]],[5578827639764758986,[0.0,0.0]],[921651403153242564,[27.555555555555657,-26.07407407407412]],[9825559201153691780,[6.194184133897295,-19.440208666385132]],[4341232355541306629,[0.0,0.0]],[1705877195608053135,[-19.33333333333331,48.66666666666666]],[15749222431214672690,[0.0,0.0]],[2463526518527501592,[-34.96296296296305,33.481481481481495]]],"stroke":[[15749222431214672690,0],[14294722277069184337,0],[9825559201153691780,0],[5578827639764758986,0],[1705877195608053135,0],[12529947318087068663,0],[2463526518527501592,0],[4341232355541306629,0],[3818841110886669992,0],[9361245670457788924,0],[921651403153242564,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":11060716078587457450}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":17843645051722826880}],[{"ty":"Primary","segment":5578827639764758986},{"ty":"End","segment":9825559201153691780}],[{"ty":"End","segment":11060716078587457450},{"ty":"Primary","segment":5578827639764758986}],[{"ty":"Primary","segment":16939098306153440303},{"ty":"End","segment":9361245670457788924}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":17799038492181728804}],[{"ty":"End","segment":2463526518527501592},{"ty":"Primary","segment":9361245670457788924}],[{"ty":"End","segment":921651403153242564},{"ty":"Primary","segment":9825559201153691780}],[{"ty":"End","segment":1705877195608053135},{"ty":"Primary","segment":2463526518527501592}],[{"ty":"End","segment":17799038492181728804},{"ty":"Primary","segment":16939098306153440303}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":4341232355541306629}],[{"ty":"End","segment":12529947318087068663},{"ty":"Primary","segment":921651403153242564}],[{"ty":"End","segment":9361245670457788924},{"ty":"Primary","segment":5057709998225566481}],[{"ty":"End","segment":17843645051722826880},{"ty":"Primary","segment":15749222431214672690}]],"remove_g1_continuous":[[{"ty":"Primary","segment":15749222431214672690},{"ty":"End","segment":14294722277069184337}],[{"ty":"End","segment":5057709998225566481},{"ty":"Primary","segment":14294722277069184337}],[{"ty":"Primary","segment":14294722277069184337},{"ty":"End","segment":3818841110886669992}],[{"ty":"End","segment":4341232355541306629},{"ty":"Primary","segment":3818841110886669992}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17603523494627491590,{"inputs":[{"Node":{"node_id":10995640810984321903,"output_index":0,"lambda":false}},{"Node":{"node_id":17740294143355019755,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4301099429811409147,{"inputs":[{"Node":{"node_id":8460565235419043665,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[81.3755165062,-154.9064700048801]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.4164633072520061},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3109716240255919254,{"inputs":[{"Node":{"node_id":5877930116725120460,"output_index":0,"lambda":false}},{"Node":{"node_id":18053728639616073084,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2723198387862533596,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18351415092709164412,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[6484183251661832039,{"inputs":[{"Node":{"node_id":11264395591110193456,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[474.2,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.2},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12922148192688274227,{"inputs":[{"Node":{"node_id":18188505856445531484,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7755499790391969923,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[6503655938154160104,{"inputs":[{"Node":{"node_id":17696051535511578981,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16780039553038473906,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":7104088139635280554,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1508440849951861669,{"inputs":[{"Node":{"node_id":8566844905246185636,"output_index":0,"lambda":false}},{"Node":{"node_id":7480253252288032958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5856350938151339368,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5138872293174440313,14935583009751134816,9014079831396927156,7008812441195504980,9603704700847490044,7238075805746621699,2355002738045707979,5021902985892894619,17629528758352690600,5995306636877552],"remove":[10768931421586254879],"delta":[[5021902985892894619,[857.679012345679,478.2880658436215]],[9014079831396927156,[908.4444444444443,429.9259259259259]],[9603704700847490044,[821.037037037037,464.2962962962963]],[17629528758352690600,[892.148148148148,480.2962962962963]],[5995306636877552,[912.8888888888888,479.7037037037037]],[2355002738045707979,[826.2057613168724,485.0041152263375]],[14935583009751134816,[914.9629629629628,418.3703703703703]],[7008812441195504980,[888.8888888888887,421.3333333333333]],[7238075805746621699,[798.6831275720165,497.9094650205762]],[5138872293174440313,[922.9629629629628,422.22222222222223]]]},"segments":{"add":[7250062683967197158,14131440324578863745,4499620435559196394,14571502160667941876,7203043366367198812,239843798079287870,7655921914272804429,12687760936062936386,7117413478945421556,9071432674597727163],"remove":[3746587001535987651],"start_point":[[7655921914272804429,5021902985892894619],[14131440324578863745,14935583009751134816],[12687760936062936386,17629528758352690600],[7203043366367198812,9603704700847490044],[4499620435559196394,9014079831396927156],[239843798079287870,2355002738045707979],[9071432674597727163,7238075805746621699],[7250062683967197158,5138872293174440313],[7117413478945421556,5995306636877552],[14571502160667941876,7008812441195504980]],"end_point":[[7655921914272804429,17629528758352690600],[14571502160667941876,9603704700847490044],[14131440324578863745,9014079831396927156],[12687760936062936386,5995306636877552],[239843798079287870,5021902985892894619],[4499620435559196394,7008812441195504980],[7250062683967197158,14935583009751134816],[7203043366367198812,7238075805746621699],[9071432674597727163,2355002738045707979],[7117413478945421556,5138872293174440313]],"handle_primary":[[9071432674597727163,[4.345679012345499,-3.555555555555543]],[12687760936062936386,[10.666666666666742,3.555555555555543]],[4499620435559196394,[-0.2962962962963047,-0.2962962962963047]],[7203043366367198812,[0.0,0.2962962962963047]],[239843798079287870,[9.61316872427983,-1.843621399176982]],[7117413478945421556,[0.0,0.0]],[14131440324578863745,[0.0,0.0]],[7655921914272804429,[18.172839506172863,-1.9753086419753456]],[7250062683967197158,[0.0,0.0]],[14571502160667941876,[-0.5925925925926094,0.0]]],"handle_end":[[14131440324578863745,[2.962962962963047,-3.259259259259238]],[12687760936062936386,[0.0,0.0]],[239843798079287870,[-21.502976534539364,2.3372800581021456]],[7250062683967197158,[0.0,0.0]],[7203043366367198812,[-1.1851851851852189,-25.18518518518516]],[4499620435559196394,[8.59259259259261,5.629629629629619]],[7117413478945421556,[15.703703703703695,33.48148148148147]],[9071432674597727163,[-9.913826570592164,1.9012818080587977]],[14571502160667941876,[24.395061728395035,-0.36213991769540144]],[7655921914272804429,[-10.666666666666742,-3.555555555555543]]],"stroke":[[9071432674597727163,0],[14571502160667941876,0],[7117413478945421556,0],[12687760936062936386,0],[239843798079287870,0],[14131440324578863745,0],[7203043366367198812,0],[7655921914272804429,0],[4499620435559196394,0],[7250062683967197158,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":239843798079287870},{"ty":"End","segment":9071432674597727163}],[{"ty":"End","segment":7655921914272804429},{"ty":"Primary","segment":12687760936062936386}],[{"ty":"End","segment":7250062683967197158},{"ty":"Primary","segment":14131440324578863745}],[{"ty":"End","segment":239843798079287870},{"ty":"Primary","segment":7655921914272804429}],[{"ty":"End","segment":12687760936062936386},{"ty":"Primary","segment":7117413478945421556}]],"remove_g1_continuous":[[{"ty":"End","segment":3746587001535987651},{"ty":"Primary","segment":239843798079287870}],[{"ty":"End","segment":9071432674597727163},{"ty":"Primary","segment":3746587001535987651}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14257963317028524134,{"inputs":[{"Node":{"node_id":1001728975241745659,"output_index":0,"lambda":false}},{"Node":{"node_id":6503655938154160104,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1491840484128555837,{"inputs":[{"Node":{"node_id":1508440849951861669,"output_index":0,"lambda":false}},{"Node":{"node_id":9808637865669223270,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5888633415105234509,{"inputs":[{"Node":{"node_id":3750439930725791025,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1258994191538244490,{"inputs":[{"Node":{"node_id":5488285068107445023,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5486211022469996717,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[266134622800431246,12075466065090700811,7115673652122600762,9852238672814254137],"remove":[134095410253559933],"delta":[[9852238672814254137,[879.7947439326053,110.54094004739208]],[12075466065090700811,[877.0370370370372,136.5925925925926]],[266134622800431246,[525.7325506063205,282.1042056224195]],[7115673652122600762,[646.5386352539062,343.99395751953125]]]},"segments":{"add":[17255728395700231433,3166693019207180063,10242199012993595528,2159953159628520134],"remove":[13980530488817762548,10196443086284452827,3769008694104161528],"start_point":[[2159953159628520134,9852238672814254137],[10242199012993595528,266134622800431246],[17255728395700231433,12075466065090700811],[3166693019207180063,7115673652122600762]],"end_point":[[2159953159628520134,12075466065090700811],[3166693019207180063,266134622800431246],[10242199012993595528,9852238672814254137],[17255728395700231433,7115673652122600762]],"handle_primary":[[17255728395700231433,[0.0010773420832492775,-0.01370555995902123]],[2159953159628520134,[0.0,0.0]],[3166693019207180063,[-126.67994767097883,-51.72627287889763]],[10242199012993595528,[137.37856050479058,-43.88198340019727]]],"handle_end":[[17255728395700231433,[165.46136474609386,67.5615980360243]],[3166693019207180063,[0.0,0.0]],[2159953159628520134,[0.0,0.0]],[10242199012993595528,[-15.794743932605344,36.71831921186718]]],"stroke":[[2159953159628520134,0],[10242199012993595528,0],[3166693019207180063,0],[17255728395700231433,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":3166693019207180063},{"ty":"End","segment":17255728395700231433}]],"remove_g1_continuous":[[{"ty":"Primary","segment":3769008694104161528},{"ty":"End","segment":10196443086284452827}],[{"ty":"End","segment":10242199012993595528},{"ty":"Primary","segment":2159953159628520134}],[{"ty":"Primary","segment":10242199012993595528},{"ty":"End","segment":3166693019207180063}],[{"ty":"End","segment":3166693019207180063},{"ty":"Primary","segment":13980530488817762548}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139129879376457893,{"inputs":[{"Node":{"node_id":11373527190663101881,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[5954536408321808728,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[8323145223085840944,87630150944518163,8212340198835025146,6057321578372831916,16788403743390653241,16686047298905200065,15635903913637220842,8652457572576966876,3124531241960914803,18307826411292029066,9969822516610975381,16995054111951247369,16808246968731723098],"remove":[],"delta":[[3124531241960914803,[589.9588477366256,64.65843621399176]],[16788403743390653241,[467.99999999999994,487.3333333333333]],[15635903913637220842,[468.4799499511719,219.78570556640625]],[9969822516610975381,[0.0,0.0]],[8652457572576966876,[514.4523315429688,146.72100830078125]],[8323145223085840944,[891.5555555555554,569.3827160493826]],[87630150944518163,[879.1111111111111,595.8518518518517]],[6057321578372831916,[708.148148148148,616.2962962962962]],[16995054111951247369,[0.0,768.0]],[16808246968731723098,[891.5555555555554,768.0]],[18307826411292029066,[601.1756940654021,0.0]],[8212340198835025146,[830.8148148148148,633.7777777777776]],[16686047298905200065,[283.3333333333333,354.66666666666663]]]},"segments":{"add":[14879480148926424885,5227512358023446442,17410347049685436697,9544743211426701912,14715945740984195653,515539069333222772,9242150930423817167,8823161072525575433,15885450050057549950,1662692131856898001,178608879920007638,12162371359208565273,16224358815792062223],"remove":[],"start_point":[[15885450050057549950,3124531241960914803],[16224358815792062223,16808246968731723098],[5227512358023446442,87630150944518163],[9544743211426701912,6057321578372831916],[12162371359208565273,16995054111951247369],[1662692131856898001,18307826411292029066],[178608879920007638,9969822516610975381],[17410347049685436697,8212340198835025146],[14879480148926424885,8323145223085840944],[14715945740984195653,16788403743390653241],[8823161072525575433,8652457572576966876],[9242150930423817167,15635903913637220842],[515539069333222772,16686047298905200065]],"end_point":[[17410347049685436697,6057321578372831916],[5227512358023446442,8212340198835025146],[12162371359208565273,16808246968731723098],[1662692131856898001,9969822516610975381],[178608879920007638,16995054111951247369],[9544743211426701912,16788403743390653241],[9242150930423817167,8652457572576966876],[14879480148926424885,87630150944518163],[515539069333222772,15635903913637220842],[16224358815792062223,8323145223085840944],[14715945740984195653,16686047298905200065],[8823161072525575433,3124531241960914803],[15885450050057549950,18307826411292029066]],"handle_primary":[[16224358815792062223,[0.0,0.0]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[-26.37037037037044,2.3703703703704377]],[14715945740984195653,[-92.66666666666656,-80.66666666666669]],[14879480148926424885,[0.0,0.0]],[9242150930423817167,[27.25925925925918,-22.518518518518533]],[515539069333222772,[48.66666666666663,-23.999999999999943]],[1662692131856898001,[0.0,0.0]],[12162371359208565273,[0.0,0.0]],[9544743211426701912,[-57.48148148148141,-21.629629629629676]],[15885450050057549950,[11.193415637860312,-27.25925925925926]],[5227512358023446442,[-4.444444444444457,18.074074074074133]],[8823161072525575433,[11.259252477575274,-22.666663275824646]]],"handle_end":[[5227512358023446442,[26.37037037037044,-2.3703703703704377]],[9544743211426701912,[92.66666666666656,80.66666666666669]],[178608879920007638,[0.0,0.0]],[17410347049685436697,[57.48148148148141,21.629629629629676]],[1662692131856898001,[0.0,0.0]],[14715945740984195653,[0.0,0.0]],[15885450050057549950,[0.0,0.0]],[515539069333222772,[-95.07216232621772,78.5378732260062]],[14879480148926424885,[4.444444444444457,-18.074074074074133]],[12162371359208565273,[0.0,0.0]],[9242150930423817167,[-9.36826657882972,18.859808361471693]],[8823161072525575433,[-12.439135136214697,30.29295262583988]],[16224358815792062223,[0.0,0.0]]],"stroke":[[12162371359208565273,0],[1662692131856898001,0],[5227512358023446442,0],[178608879920007638,0],[14715945740984195653,0],[14879480148926424885,0],[17410347049685436697,0],[8823161072525575433,0],[15885450050057549950,0],[9242150930423817167,0],[9544743211426701912,0],[515539069333222772,0],[16224358815792062223,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8823161072525575433},{"ty":"Primary","segment":15885450050057549950}],[{"ty":"End","segment":178608879920007638},{"ty":"Primary","segment":12162371359208565273}],[{"ty":"End","segment":1662692131856898001},{"ty":"Primary","segment":178608879920007638}],[{"ty":"End","segment":515539069333222772},{"ty":"Primary","segment":9242150930423817167}],[{"ty":"End","segment":5227512358023446442},{"ty":"Primary","segment":17410347049685436697}],[{"ty":"End","segment":17410347049685436697},{"ty":"Primary","segment":9544743211426701912}],[{"ty":"End","segment":9242150930423817167},{"ty":"Primary","segment":8823161072525575433}],[{"ty":"End","segment":14879480148926424885},{"ty":"Primary","segment":5227512358023446442}],[{"ty":"End","segment":9544743211426701912},{"ty":"Primary","segment":14715945740984195653}],[{"ty":"End","segment":12162371359208565273},{"ty":"Primary","segment":16224358815792062223}],[{"ty":"End","segment":15885450050057549950},{"ty":"Primary","segment":1662692131856898001}]],"remove_g1_continuous":[[{"ty":"End","segment":14715945740984195653},{"ty":"Primary","segment":515539069333222772}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18053728639616073084,{"inputs":[{"Node":{"node_id":6616450276140292763,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17351444026127625357,{"inputs":[{"Node":{"node_id":14808063168960305551,"output_index":0,"lambda":false}},{"Node":{"node_id":13916027199283115943,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17735408893002232096,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17285637344898461972,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16608607268690234590,17457877227823502997,13436129231170586617,5992570223148766873],"remove":[],"delta":[[5992570223148766873,[-2.273736754432321e-13,768.0]],[16608607268690234590,[0.0,340.0]],[13436129231170586617,[481.3333333333333,768.0]],[17457877227823502997,[273.0,476.0]]]},"segments":{"add":[13284808974014161135,5472571334856691465,8776124420595946733,4274372337254864190],"remove":[],"start_point":[[5472571334856691465,17457877227823502997],[4274372337254864190,5992570223148766873],[8776124420595946733,13436129231170586617],[13284808974014161135,16608607268690234590]],"end_point":[[5472571334856691465,13436129231170586617],[8776124420595946733,5992570223148766873],[13284808974014161135,17457877227823502997],[4274372337254864190,16608607268690234590]],"handle_primary":[[13284808974014161135,[161.73791370620617,43.57576470888159]],[4274372337254864190,[0.0,0.0]],[8776124420595946733,[0.0,0.0]],[5472571334856691465,[146.0,-13.0]]],"handle_end":[[13284808974014161135,[-165.43581782916667,14.730586519035386]],[4274372337254864190,[0.0,0.0]],[5472571334856691465,[0.4078646547782227,-253.307727480567]],[8776124420595946733,[0.0,0.0]]],"stroke":[[4274372337254864190,0],[13284808974014161135,0],[5472571334856691465,0],[8776124420595946733,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13284808974014161135},{"ty":"Primary","segment":5472571334856691465}],[{"ty":"End","segment":8776124420595946733},{"ty":"Primary","segment":4274372337254864190}]],"remove_g1_continuous":[[{"ty":"Primary","segment":13284808974014161135},{"ty":"End","segment":4274372337254864190}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15900830679378240619,{"inputs":[{"Node":{"node_id":2287485748649359627,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1662641269094032596,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6728362629909402903,{"inputs":[{"Node":{"node_id":5856350938151339368,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12276520439585231336,{"inputs":[{"Node":{"node_id":2871608309888343463,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[997.5029638869316,545.7213923090854]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10995640810984321903,{"inputs":[{"Node":{"node_id":12353675714904258944,"output_index":0,"lambda":false}},{"Node":{"node_id":10265035897167064154,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15354358358546908017,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4328376070224119511,{"inputs":[{"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"}}},"exposed":true}},{"Node":{"node_id":13446205009526451196,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1009114585722052052,{"inputs":[{"Node":{"node_id":15692102598187739001,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14684142559936015947,{"inputs":[{"Node":{"node_id":15930698052919171086,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4771789845668099116,{"inputs":[{"Node":{"node_id":17351444026127625357,"output_index":0,"lambda":false}},{"Node":{"node_id":14684142559936015947,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5014806436727666175,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18188505856445531484,{"inputs":[{"Node":{"node_id":8887924609778270360,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14690269209726153565,{"inputs":[{"Node":{"node_id":7376049709233607419,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2834866505092039323,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14139765080256493579,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[3507505346656189771,2904729023031858224,854708012647259796,4175610638601362388,7821224334582795476,2195807584570698921],"remove":[1009888023123207923,16332448509429125699],"delta":[[854708012647259796,[740.0,298.0]],[2195807584570698921,[993.0,767.9999999999999]],[7821224334582795476,[1093.0,600.0]],[4175610638601362388,[957.0,324.0]],[2904729023031858224,[491.3420376907663,506.7530051313737]],[3507505346656189771,[552.0,768.0000000000001]]]},"segments":{"add":[4553965744616493549,13993263006398686359,6577640955869157325,17304574948462342226,8570276641842028192,17183285389582020412],"remove":[5710832026764395735,546565283439891712],"start_point":[[8570276641842028192,2195807584570698921],[13993263006398686359,2904729023031858224],[17304574948462342226,4175610638601362388],[4553965744616493549,3507505346656189771],[6577640955869157325,854708012647259796],[17183285389582020412,7821224334582795476]],"end_point":[[8570276641842028192,3507505346656189771],[6577640955869157325,4175610638601362388],[13993263006398686359,854708012647259796],[17183285389582020412,2195807584570698921],[4553965744616493549,2904729023031858224],[17304574948462342226,7821224334582795476]],"handle_primary":[[4553965744616493549,[0.0,0.0]],[13993263006398686359,[0.0,-84.7537417270637]],[17183285389582020412,[-24.08196064282073,82.4624712920831]],[8570276641842028192,[0.0,0.0]],[17304574948462342226,[50.35246044959922,33.38607084805801]],[6577640955869157325,[102.0,-45.0]]],"handle_end":[[17304574948462342226,[33.0,-113.0]],[8570276641842028192,[0.0,0.0]],[4553965744616493549,[0.0,135.2464055295568]],[17183285389582020412,[0.0,0.0]],[6577640955869157325,[-50.35246044959922,-33.38607084805801]],[13993263006398686359,[-102.0,45.0]]],"stroke":[[6577640955869157325,0],[13993263006398686359,0],[4553965744616493549,0],[8570276641842028192,0],[17183285389582020412,0],[17304574948462342226,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":13993263006398686359},{"ty":"Primary","segment":6577640955869157325}],[{"ty":"End","segment":4553965744616493549},{"ty":"Primary","segment":13993263006398686359}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":17183285389582020412}],[{"ty":"End","segment":17304574948462342226},{"ty":"Primary","segment":17183285389582020412}],[{"ty":"End","segment":6577640955869157325},{"ty":"Primary","segment":17304574948462342226}]],"remove_g1_continuous":[[{"ty":"End","segment":5710832026764395735},{"ty":"Primary","segment":8570276641842028192}],[{"ty":"End","segment":546565283439891712},{"ty":"Primary","segment":5710832026764395735}],[{"ty":"End","segment":17183285389582020412},{"ty":"Primary","segment":546565283439891712}],[{"ty":"Primary","segment":8570276641842028192},{"ty":"End","segment":546565283439891712}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10080296672372912698,{"inputs":[{"Node":{"node_id":12867379765049504290,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12353675714904258944,{"inputs":[{"Node":{"node_id":13203761224559198689,"output_index":0,"lambda":false}},{"Node":{"node_id":17271572793812678706,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17271572793812678706,{"inputs":[{"Node":{"node_id":15900830679378240619,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[14228923746783465609,{"inputs":[{"Node":{"node_id":16304636129468583592,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[2003133867055127539,13758328146055368475],"remove":[],"delta":[[4648964341912884959,[324.66666666666646,0.0]],[13758328146055368475,[1299.3064572949788,786.3993743175897]],[2003133867055127539,[1011.111083984375,786.3993530273438]],[16569120368910754547,[-43.0,0.0]]]},"segments":{"add":[8214025514312603513,7334532063810723038,13431612844608018700],"remove":[3433930674303663828,6602880736207868665],"start_point":[[7334532063810723038,16569120368910754547],[8214025514312603513,2003133867055127539],[13431612844608018700,13758328146055368475]],"end_point":[[7334532063810723038,13758328146055368475],[8214025514312603513,4648964341912884959],[13431612844608018700,2003133867055127539]],"handle_primary":[[9030015329489789075,[69.08057198853999,-80.19415805947563]],[13431612844608018700,null],[8214025514312603513,null],[7334532063810723038,null]],"handle_end":[[9030015329489789075,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]],[13431612844608018700,null],[8214025514312603513,null],[7334532063810723038,null]],"stroke":[[13431612844608018700,0],[8214025514312603513,0],[7334532063810723038,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[],"remove_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11210964267417873667,{"inputs":[{"Node":{"node_id":14516211820212764316,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[91.7203910728,-99.9607940061]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.40698564029617024},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[1.0,1.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1097494158696050491,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":15.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[8887924609778270360,{"inputs":[{"Node":{"node_id":5014806436727666175,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17036604842139972912,{"inputs":[{"Node":{"node_id":1491840484128555837,"output_index":0,"lambda":false}},{"Node":{"node_id":13602951545837529973,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12145355397916841389,{"inputs":[{"Node":{"node_id":16759836951269190891,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4470272391975492611,{"inputs":[{"Node":{"node_id":7018444885869143173,"output_index":0,"lambda":false}},{"Node":{"node_id":12145355397916841389,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13602951545837529973,{"inputs":[{"Node":{"node_id":11210964267417873667,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[990192925663920333,{"inputs":[{"Node":{"node_id":1097494158696050491,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[466.8,0.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":-7.9},"exposed":false}},{"Value":{"tagged_value":{"U32":5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[2025899804080897524,{"inputs":[{"Node":{"node_id":17740496701763775226,"output_index":0,"lambda":false}},{"Node":{"node_id":3214181946162459584,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11264395591110193456,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":10.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[13027689870767713939,{"inputs":[{"Node":{"node_id":7201841978411396053,"output_index":0,"lambda":false}},{"Node":{"node_id":13340751444307201866,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9338394475379815879,{"inputs":[{"Node":{"node_id":7977952035097419157,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[1327.0278641242007,11.102707365920756]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.23820276778328575},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[230.36030209674013,67.6958526826066]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[3.855605378252775e-17,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14496934933990319842,{"inputs":[{"Node":{"node_id":12709602171929957216,"output_index":0,"lambda":false}},{"Node":{"node_id":12185047359007423618,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13739729101529293427,{"inputs":[{"Node":{"node_id":18003287685830153881,"output_index":0,"lambda":false}},{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3214181946162459584,{"inputs":[{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[804622576568168609,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[13654185056786459919,6952183320761642858,2802617302192982616,7639287212006638253,15117515618866904690,15750781936547583892,7025422618543191491,3831533579307185652,16937470333767479918,10412162547161259027,5269777039739103358],"remove":[],"delta":[[6952183320761642858,[933.9259259259262,324.3456790123457]],[10412162547161259027,[887.3333333333333,376.0]],[7639287212006638253,[862.8888888888888,349.3333333333333]],[7025422618543191491,[911.5555555555554,345.3333333333333]],[2802617302192982616,[911.7777777777776,334.88888888888886]],[13654185056786459919,[946.1728395061732,330.8641975308642]],[5269777039739103358,[902.2222222222222,394.66666666666663]],[16937470333767479918,[876.6666666666665,359.55555555555554]],[15750781936547583892,[840.6666666666665,368.66666666666663]],[15117515618866904690,[819.1111111111109,354.44444444444434]],[3831533579307185652,[880.4444444444443,357.3333333333333]]]},"segments":{"add":[10498175376126066982,10426255560432238561,11214998966879437330,1241631398419524272,15286139376878919277,15838384105575178137,12854270992100552972,379744301215040936,4069217348643062888,10438163357339042361,9330486019469919863],"remove":[],"start_point":[[12854270992100552972,7025422618543191491],[15286139376878919277,15117515618866904690],[379744301215040936,3831533579307185652],[9330486019469919863,5269777039739103358],[11214998966879437330,2802617302192982616],[15838384105575178137,15750781936547583892],[4069217348643062888,16937470333767479918],[10438163357339042361,10412162547161259027],[10426255560432238561,6952183320761642858],[10498175376126066982,13654185056786459919],[1241631398419524272,7639287212006638253]],"end_point":[[15286139376878919277,15750781936547583892],[10498175376126066982,6952183320761642858],[379744301215040936,16937470333767479918],[11214998966879437330,7639287212006638253],[10438163357339042361,5269777039739103358],[15838384105575178137,7025422618543191491],[4069217348643062888,10412162547161259027],[1241631398419524272,15117515618866904690],[12854270992100552972,3831533579307185652],[10426255560432238561,2802617302192982616],[9330486019469919863,13654185056786459919]],"handle_primary":[[10498175376126066982,[0.0,0.0]],[9330486019469919863,[5.555555555555429,-0.2222222222221717]],[15838384105575178137,[22.222222222222285,5.555555555555543]],[12854270992100552972,[-0.4444444444443434,0.0]],[1241631398419524272,[-17.111111111111086,12.888888888888856]],[15286139376878919277,[-0.5188510642573192,0.6084707935380038]],[379744301215040936,[-0.2222222222221717,0.0]],[10438163357339042361,[1.3333333333332575,10.888888888888856]],[10426255560432238561,[-0.39506172839503506,-0.19753086419757435]],[11214998966879437330,[-16.666666666666515,-3.777777777777771]],[4069217348643062888,[0.0,0.0]]],"handle_end":[[10438163357339042361,[-5.555555555555429,0.2222222222221717]],[1241631398419524272,[0.5951379226228255,-0.6979344728938486]],[12854270992100552972,[33.77777777777783,2.2222222222222285]],[379744301215040936,[0.0,0.0]],[15286139376878919277,[-22.222222222222285,-5.555555555555543]],[10426255560432238561,[16.666666666666515,3.777777777777771]],[11214998966879437330,[17.111111111111086,-12.888888888888856]],[9330486019469919863,[0.0,0.0]],[4069217348643062888,[-1.3333333333332575,-10.888888888888856]],[15838384105575178137,[-20.0,2.0]],[10498175376126066982,[4.9382716049382225,0.19753086419757435]]],"stroke":[[10426255560432238561,0],[379744301215040936,0],[15286139376878919277,0],[15838384105575178137,0],[10438163357339042361,0],[10498175376126066982,0],[4069217348643062888,0],[11214998966879437330,0],[12854270992100552972,0],[1241631398419524272,0],[9330486019469919863,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":10426255560432238561},{"ty":"Primary","segment":11214998966879437330}],[{"ty":"End","segment":1241631398419524272},{"ty":"Primary","segment":15286139376878919277}],[{"ty":"End","segment":11214998966879437330},{"ty":"Primary","segment":1241631398419524272}],[{"ty":"End","segment":15286139376878919277},{"ty":"Primary","segment":15838384105575178137}],[{"ty":"End","segment":379744301215040936},{"ty":"Primary","segment":4069217348643062888}],[{"ty":"End","segment":10438163357339042361},{"ty":"Primary","segment":9330486019469919863}],[{"ty":"End","segment":4069217348643062888},{"ty":"Primary","segment":10438163357339042361}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17753909951719808506,{"inputs":[{"Node":{"node_id":2185437945364824599,"output_index":0,"lambda":false}},{"Node":{"node_id":9563008199132558110,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8566844905246185636,{"inputs":[{"Node":{"node_id":6852799892628327372,"output_index":0,"lambda":false}},{"Node":{"node_id":17131529656312051452,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[18095952297474762348,{"inputs":[{"Node":{"node_id":5954536408321808728,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8426490990601560741,{"inputs":[{"Node":{"node_id":10760002922115563021,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7651693425519490419,{"inputs":[{"Node":{"node_id":4771789845668099116,"output_index":0,"lambda":false}},{"Node":{"node_id":15817956847588799375,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6616450276140292763,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[14760110820354327749,9465415708990918986,13517856880347849115,12398030966924498647,2930103517622848405,9496337687212684441],"remove":[],"delta":[[9496337687212684441,[732.148148148148,57.18518518518518]],[14760110820354327749,[614.8148148148148,129.1851851851852]],[9465415708990918986,[706.3703703703703,86.51851851851853]],[12398030966924498647,[823.4074074074074,97.4814814814815]],[2930103517622848405,[819.2592592592591,69.33333333333334]],[13517856880347849115,[777.1851851851851,92.44444444444446]]]},"segments":{"add":[18226408581696793441,16628058317667581864,3809009367670994230,13496648265229692336,10686631697241750410,11696351847604335156],"remove":[],"start_point":[[10686631697241750410,2930103517622848405],[16628058317667581864,9465415708990918986],[11696351847604335156,9496337687212684441],[3809009367670994230,13517856880347849115],[13496648265229692336,12398030966924498647],[18226408581696793441,14760110820354327749]],"end_point":[[10686631697241750410,9496337687212684441],[11696351847604335156,14760110820354327749],[16628058317667581864,13517856880347849115],[3809009367670994230,12398030966924498647],[18226408581696793441,9465415708990918986],[13496648265229692336,2930103517622848405]],"handle_primary":[[16628058317667581864,[41.185185185185105,-9.7777777777778]],[18226408581696793441,[0.0,0.0]],[13496648265229692336,[14.222222222222172,-0.8888888888888857]],[11696351847604335156,[-29.333333333333258,11.55555555555555]],[10686631697241750410,[-13.037037037036953,-4.444444444444457]],[3809009367670994230,[21.33333333333337,4.740740740740733]]],"handle_end":[[11696351847604335156,[54.81481481481478,-42.37037037037035]],[3809009367670994230,[-14.222222222222172,0.8888888888888857]],[16628058317667581864,[-21.33333333333337,-4.740740740740733]],[10686631697241750410,[29.333333333333258,-11.55555555555555]],[18226408581696793441,[-41.185185185185105,9.7777777777778]],[13496648265229692336,[13.037037037036953,4.444444444444457]]],"stroke":[[18226408581696793441,0],[10686631697241750410,0],[11696351847604335156,0],[3809009367670994230,0],[13496648265229692336,0],[16628058317667581864,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":18226408581696793441},{"ty":"Primary","segment":16628058317667581864}],[{"ty":"End","segment":16628058317667581864},{"ty":"Primary","segment":3809009367670994230}],[{"ty":"End","segment":3809009367670994230},{"ty":"Primary","segment":13496648265229692336}],[{"ty":"End","segment":10686631697241750410},{"ty":"Primary","segment":11696351847604335156}],[{"ty":"End","segment":13496648265229692336},{"ty":"Primary","segment":10686631697241750410}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4560146526699152877,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11684705487012407227,{"inputs":[{"Node":{"node_id":18068340617333437755,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16785043320296790229,{"inputs":[{"Node":{"node_id":1009114585722052052,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[9808637865669223270,{"inputs":[{"Node":{"node_id":140396870212231820,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[16177422101884031678,{"inputs":[{"Node":{"node_id":13353438235848911576,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[11201759760883367635,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5173348374891662425,12314285668680405002,7388288026322342161,12796056970187696453],"remove":[],"delta":[[12796056970187696453,[1418.0,0.0]],[7388288026322342161,[1277.0,319.0]],[12314285668680405002,[1085.0,181.0]],[5173348374891662425,[969.0,0.0]]]},"segments":{"add":[10860608091363771974,9177623211202289793,18091265337503274797,9065140293539496953],"remove":[],"start_point":[[9065140293539496953,12796056970187696453],[18091265337503274797,7388288026322342161],[9177623211202289793,12314285668680405002],[10860608091363771974,5173348374891662425]],"end_point":[[18091265337503274797,12796056970187696453],[9177623211202289793,7388288026322342161],[9065140293539496953,5173348374891662425],[10860608091363771974,12314285668680405002]],"handle_primary":[[18091265337503274797,[178.0,-35.0]],[10860608091363771974,[0.0,0.0]],[9177623211202289793,[-33.0,137.0]],[9065140293539496953,[0.0,0.0]]],"handle_end":[[9065140293539496953,[0.0,0.0]],[9177623211202289793,[-77.81941867085992,15.301571086966838]],[10860608091363771974,[25.066898104916696,-104.0656072840481]],[18091265337503274797,[168.99998492988766,81.0]]],"stroke":[[9177623211202289793,0],[10860608091363771974,0],[9065140293539496953,0],[18091265337503274797,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9177623211202289793},{"ty":"Primary","segment":18091265337503274797}],[{"ty":"End","segment":10860608091363771974},{"ty":"Primary","segment":9177623211202289793}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11312003311374164325,{"inputs":[{"Node":{"node_id":4301099429811409147,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[10760002922115563021,{"inputs":[{"Node":{"node_id":14257963317028524134,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[11373527190663101881,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[12058665768506126331,6802441093413090533,4854280308383915721,17729943149159368459,7436032950540776377,2189722519288419244,15817054697695831753,15744271344233846756,13877679667762731651,13567509413382199058,5664077098702810122,14178520291283306679,15575201098426093294],"remove":[],"delta":[[15817054697695831753,[806.716049382716,206.22222222222223]],[12058665768506126331,[693.7283950617283,174.35390946502056]],[14178520291283306679,[668.4444444444443,183.1111111111111]],[6802441093413090533,[783.4074074074074,172.74074074074073]],[15575201098426093294,[636.7407407407406,173.33333333333331]],[13567509413382199058,[702.6831275720166,195.95061728395063]],[5664077098702810122,[686.5185185185185,191.1111111111111]],[4854280308383915721,[813.9259259259259,200.2962962962963]],[17729943149159368459,[801.1851851851852,199.90123456790124]],[7436032950540776377,[815.4074074074074,203.25925925925927]],[13877679667762731651,[743.4074074074074,234.66666666666669]],[2189722519288419244,[796.0493827160494,202.2716049382716]],[15744271344233846756,[785.7777777777777,205.62962962962965]]]},"segments":{"add":[2336956120616260883,1639796012074210121,3918280827204321712,13932755083907220179,14941832641240060361,94092576912261794,18299135553255571870,3109091330258982137,11037018395008586448,16261506098907231989,8279051592565434787,2367379450383978497,5102625335252315850],"remove":[],"start_point":[[14941832641240060361,7436032950540776377],[16261506098907231989,13567509413382199058],[11037018395008586448,13877679667762731651],[1639796012074210121,6802441093413090533],[5102625335252315850,15575201098426093294],[3918280827204321712,4854280308383915721],[3109091330258982137,15744271344233846756],[8279051592565434787,5664077098702810122],[18299135553255571870,15817054697695831753],[2367379450383978497,14178520291283306679],[94092576912261794,2189722519288419244],[2336956120616260883,12058665768506126331],[13932755083907220179,17729943149159368459]],"end_point":[[3918280827204321712,17729943149159368459],[94092576912261794,15817054697695831753],[2367379450383978497,15575201098426093294],[18299135553255571870,15744271344233846756],[5102625335252315850,12058665768506126331],[14941832641240060361,2189722519288419244],[8279051592565434787,14178520291283306679],[11037018395008586448,13567509413382199058],[16261506098907231989,5664077098702810122],[2336956120616260883,6802441093413090533],[3109091330258982137,13877679667762731651],[13932755083907220179,7436032950540776377],[1639796012074210121,4854280308383915721]],"handle_primary":[[8279051592565434787,[-16.75720164609038,-2.1399176954732297]],[3109091330258982137,[0.0,0.0]],[16261506098907231989,[0.0,0.0]],[3918280827204321712,[0.0,0.0]],[2336956120616260883,[0.0,0.0]],[5102625335252315850,[0.0,0.0]],[14941832641240060361,[0.0,0.0]],[1639796012074210121,[0.0,0.0]],[2367379450383978497,[-5.037037037036953,-1.7777777777777717]],[11037018395008586448,[0.0,0.0]],[13932755083907220179,[0.0,0.0]],[94092576912261794,[0.0,0.0]],[18299135553255571870,[0.0,0.0]]],"handle_end":[[1639796012074210121,[-19.259259259259352,-3.259259259259238]],[2367379450383978497,[12.740740740740648,5.037037037037038]],[14941832641240060361,[7.1111111111111995,1.7777777777778]],[3918280827204321712,[0.0,0.0]],[3109091330258982137,[18.962962962963047,2.074074074074048]],[8279051592565434787,[5.037037037036953,1.7777777777777717]],[94092576912261794,[0.0,0.0]],[18299135553255571870,[10.07407407407402,2.7654320987654444]],[2336956120616260883,[-65.77777777777783,13.333333333333314]],[13932755083907220179,[0.0,0.0]],[11037018395008586448,[13.168724279835374,22.12345679012344]],[5102625335252315850,[-27.12757201646093,2.633744855967052]],[16261506098907231989,[12.1395654462896,1.5502392023748983]]],"stroke":[[18299135553255571870,0],[94092576912261794,0],[3918280827204321712,0],[11037018395008586448,0],[13932755083907220179,0],[3109091330258982137,0],[5102625335252315850,0],[1639796012074210121,0],[14941832641240060361,0],[16261506098907231989,0],[2336956120616260883,0],[8279051592565434787,0],[2367379450383978497,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":8279051592565434787},{"ty":"Primary","segment":2367379450383978497}],[{"ty":"End","segment":16261506098907231989},{"ty":"Primary","segment":8279051592565434787}],[{"ty":"End","segment":13932755083907220179},{"ty":"Primary","segment":14941832641240060361}],[{"ty":"End","segment":3918280827204321712},{"ty":"Primary","segment":13932755083907220179}],[{"ty":"End","segment":94092576912261794},{"ty":"Primary","segment":18299135553255571870}]],"remove_g1_continuous":[[{"ty":"Primary","segment":16261506098907231989},{"ty":"End","segment":11037018395008586448}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[9563008199132558110,{"inputs":[{"Node":{"node_id":7855094781869605606,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[18081743490344004315,{"inputs":[{"Node":{"node_id":13588160462734303101,"output_index":0,"lambda":false}},{"Node":{"node_id":11684705487012407227,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[6852799892628327372,{"inputs":[{"Node":{"node_id":2025899804080897524,"output_index":0,"lambda":false}},{"Node":{"node_id":16671141883125519098,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17952673493105230490,{"inputs":[{"Node":{"node_id":14228923746783465609,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}},{"Value":{"tagged_value":{"VecF64":[]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"LineCap":"Butt"},"exposed":false}},{"Value":{"tagged_value":{"LineJoin":"Miter"},"exposed":false}},{"Value":{"tagged_value":{"F64":4.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::StrokeNode"}},"visible":true,"skip_deduplication":false}],[8863346544623578893,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[5480246971175127548,949359986970918930,6461719056721357962,6265491311473200676],"remove":[947514826240006203],"delta":[[5480246971175127548,[364.0,767.9999999999999]],[6461719056721357962,[173.33333333333331,506.66666666666674]],[6265491311473200676,[-2.273736754432321e-13,768.0000000000001]],[949359986970918930,[0.0,608.0]]]},"segments":{"add":[8951068186878308228,9717584104793611782,15710828508798332384,12480300844056666979],"remove":[6561081452252813685,15926511461198813522,11231973846952426191],"start_point":[[15710828508798332384,5480246971175127548],[12480300844056666979,6265491311473200676],[9717584104793611782,949359986970918930],[8951068186878308228,6461719056721357962]],"end_point":[[8951068186878308228,5480246971175127548],[9717584104793611782,6461719056721357962],[12480300844056666979,949359986970918930],[15710828508798332384,6265491311473200676]],"handle_primary":[[8951068186878308228,[121.00000000000006,-37.99999999999994]],[15710828508798332384,null],[12480300844056666979,null],[9717584104793611782,[0.0,0.0]]],"handle_end":[[8951068186878308228,[-92.0,-81.99999999999989]],[9717584104793611782,[-63.1770926995265,19.84073985604961]],[15710828508798332384,null],[12480300844056666979,null]],"stroke":[[12480300844056666979,0],[8951068186878308228,0],[15710828508798332384,0],[9717584104793611782,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"Primary","segment":9717584104793611782},{"ty":"End","segment":12480300844056666979}],[{"ty":"Primary","segment":8951068186878308228},{"ty":"End","segment":9717584104793611782}],[{"ty":"End","segment":6561081452252813685},{"ty":"Primary","segment":9717584104793611782}]],"remove_g1_continuous":[[{"ty":"End","segment":15926511461198813522},{"ty":"Primary","segment":8951068186878308228}],[{"ty":"Primary","segment":11231973846952426191},{"ty":"End","segment":9717584104793611782}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13588160462734303101,{"inputs":[{"Node":{"node_id":17036604842139972912,"output_index":0,"lambda":false}},{"Node":{"node_id":11312003311374164325,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4421418468606442725,{"inputs":[{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4807760870555738383,{"inputs":[{"Node":{"node_id":876963243827503916,"output_index":0,"lambda":false}},{"Node":{"node_id":8269257328703012432,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[15692102598187739001,{"inputs":[{"Node":{"node_id":14950060858756810933,"output_index":0,"lambda":false}},{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[4102754869474520966,{"inputs":[{"Node":{"node_id":2723198387862533596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[10265035897167064154,{"inputs":[{"Node":{"node_id":14698962747138962125,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[17131529656312051452,{"inputs":[{"Node":{"node_id":13646498613066619660,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7104088139635280554,{"inputs":[{"Node":{"node_id":16785043320296790229,"output_index":0,"lambda":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::SolidifyStrokeNode"}},"visible":true,"skip_deduplication":false}],[18068340617333437755,{"inputs":[{"Node":{"node_id":8297015715799006244,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[73.0306419396,-200.8521460039]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.42594097420784194},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.9999999999999998,0.9999999999999998]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.0,0.0]},"exposed":false}},{"Value":{"tagged_value":{"DVec2":[0.5,0.5]},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":1}},{"Network":{"import_type":{"Concrete":{"name":"f64","alias":null,"size":8,"align":8}},"import_index":2}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":3}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":4}},{"Network":{"import_type":{"Concrete":{"name":"glam::f64::dvec2::DVec2","alias":null,"size":16,"align":8}},"import_index":5}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::transform::TransformNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2185437945364824599,{"inputs":[{"Node":{"node_id":18081743490344004315,"output_index":0,"lambda":false}},{"Node":{"node_id":4421418468606442725,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1627123781166851142,{"inputs":[{"Node":{"node_id":4807760870555738383,"output_index":0,"lambda":false}},{"Node":{"node_id":15354358358546908017,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14141479077115894852,{"inputs":[{"Node":{"node_id":15433707377961038695,"output_index":0,"lambda":false}},{"Node":{"node_id":17285637344898461972,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17397123104674848450,{"inputs":[{"Node":{"node_id":1662641269094032596,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13340751444307201866,{"inputs":[{"Node":{"node_id":9135110142507605216,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.93333334,"green":0.8627451,"blue":0.7254902,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[12741076678082295759,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13916027199283115943,{"inputs":[{"Node":{"node_id":6194305264313730032,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.101960786,"green":0.13333334,"blue":0.13725491,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15930698052919171086,{"inputs":[{"Node":{"node_id":13739729101529293427,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17223836790030950966,{"inputs":[{"Node":{"node_id":14030142873804552388,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[13446205009526451196,{"inputs":[{"Node":{"node_id":14139765080256493579,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.92156863,"green":0.6039216,"blue":0.18039216,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[15433707377961038695,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16723991032614525258,1623125309784127684,7209807874503344461,3123395482103162919,2668496811386192321],"remove":[12344391980636687302],"delta":[[1623125309784127684,[643.9258958566198,633.6997633965701]],[3123395482103162919,[-2.273736754432321e-13,689.0]],[2668496811386192321,[0.0,768.0]],[7209807874503344461,[188.0,694.6666666666669]],[16723991032614525258,[553.0000000000001,768.0]]]},"segments":{"add":[3656277643115996070,6789459806904610761,16287649713110748258,16456150086799119359,1652964032977338610],"remove":[1848051273241122771],"start_point":[[16287649713110748258,3123395482103162919],[16456150086799119359,2668496811386192321],[3656277643115996070,16723991032614525258],[6789459806904610761,1623125309784127684],[1652964032977338610,7209807874503344461]],"end_point":[[1652964032977338610,3123395482103162919],[3656277643115996070,1623125309784127684],[6789459806904610761,7209807874503344461],[16456150086799119359,16723991032614525258],[16287649713110748258,2668496811386192321]],"handle_primary":[[16287649713110748258,[0.0,0.0]],[6789459806904610761,[-213.92589585661983,-68.82675604113183]],[16456150086799119359,[0.0,0.0]],[3656277643115996070,[0.0,0.0]],[1652964032977338610,[-81.48609837852206,84.6759456460087]]],"handle_end":[[6789459806904610761,[187.33333333333343,-194.6666666666667]],[3656277643115996070,[0.0,0.0]],[16287649713110748258,[0.0,0.0]],[16456150086799119359,[0.0,0.0]],[1652964032977338610,[56.00000000000023,11.0]]],"stroke":[[1652964032977338610,0],[6789459806904610761,0],[16456150086799119359,0],[3656277643115996070,0],[16287649713110748258,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16287649713110748258},{"ty":"Primary","segment":16456150086799119359}],[{"ty":"End","segment":6789459806904610761},{"ty":"Primary","segment":1652964032977338610}]],"remove_g1_continuous":[[{"ty":"End","segment":3656277643115996070},{"ty":"Primary","segment":6789459806904610761}],[{"ty":"End","segment":1652964032977338610},{"ty":"Primary","segment":1848051273241122771}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[5877930116725120460,{"inputs":[{"Node":{"node_id":4470272391975492611,"output_index":0,"lambda":false}},{"Node":{"node_id":1258994191538244490,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14516211820212764316,{"inputs":[{"Node":{"node_id":17299978721726771610,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,416.7]},"exposed":false}},{"Value":{"tagged_value":{"F64":30.6},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[3471746866096043087,{"inputs":[{"Node":{"node_id":5486211022469996717,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[7480253252288032958,{"inputs":[{"Node":{"node_id":7104261880154687267,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.8509804,"green":0.24313726,"blue":0.18431373,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[4809200889774783438,{"inputs":[{"Node":{"node_id":3109716240255919254,"output_index":0,"lambda":false}},{"Node":{"node_id":14139129879376457893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[16304636129468583592,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[4648964341912884959,10156053545530752213,16569120368910754547],"remove":[],"delta":[[10156053545530752213,[1094.162353515625,594.2965698242188]],[16569120368910754547,[1361.0,768.0]],[4648964341912884959,[665.0000000000001,768.0]]]},"segments":{"add":[9030015329489789075,2197140374690997530,3433930674303663828],"remove":[],"start_point":[[2197140374690997530,10156053545530752213],[3433930674303663828,16569120368910754547],[9030015329489789075,4648964341912884959]],"end_point":[[3433930674303663828,4648964341912884959],[2197140374690997530,16569120368910754547],[9030015329489789075,10156053545530752213]],"handle_primary":[[9030015329489789075,[32.66666666666663,-95.99999999999989]],[3433930674303663828,[0.0,0.0]],[2197140374690997530,[79.20069951994813,30.807024746222492]]],"handle_end":[[9030015329489789075,[-238.88331323750492,-92.9194336284096]],[3433930674303663828,[0.0,0.0]],[2197140374690997530,[-24.333333333333485,-86.99999999999977]]],"stroke":[[9030015329489789075,0],[3433930674303663828,0],[2197140374690997530,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":9030015329489789075},{"ty":"Primary","segment":2197140374690997530}]],"remove_g1_continuous":[[{"ty":"End","segment":2197140374690997530},{"ty":"Primary","segment":3433930674303663828}],[{"ty":"Primary","segment":9030015329489789075},{"ty":"End","segment":3433930674303663828}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[2871608309888343463,{"inputs":[{"Node":{"node_id":12494428953087324640,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[5488285068107445023,{"inputs":[{"Node":{"node_id":7667878689218439065,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"SubtractFront"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[3050731459444225191,{"inputs":[{"Node":{"node_id":682567808439406093,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,200.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[16306737306999003555,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[6082833770141706533,7903705226822768120,17147466439590042359,13341364271767916194],"remove":[],"delta":[[7903705226822768120,[497.3827160493826,248.88888888888889]],[17147466439590042359,[526.0109927536641,282.1042175292969]],[13341364271767916194,[262.22222222222223,364.1481481481481]],[6082833770141706533,[504.0987654320987,184.6255144032922]]]},"segments":{"add":[14649965831690031908,801877719748058643,9659144961849433642,2255088856072565305],"remove":[],"start_point":[[2255088856072565305,13341364271767916194],[801877719748058643,7903705226822768120],[14649965831690031908,6082833770141706533],[9659144961849433642,17147466439590042359]],"end_point":[[14649965831690031908,7903705226822768120],[801877719748058643,17147466439590042359],[9659144961849433642,13341364271767916194],[2255088856072565305,6082833770141706533]],"handle_primary":[[9659144961849433642,[0.0,0.0]],[14649965831690031908,[0.0,0.0]],[801877719748058643,[13.173601585124231,23.615912208504938]],[2255088856072565305,[0.0,0.0]]],"handle_end":[[14649965831690031908,[-17.920501046401128,-32.12553353079403]],[2255088856072565305,[-112.09876543209862,43.81893004115227]],[801877719748058643,[0.0,0.0]],[9659144961849433642,[195.55555555555569,-16.14814814814804]]],"stroke":[[2255088856072565305,0],[801877719748058643,0],[9659144961849433642,0],[14649965831690031908,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":801877719748058643},{"ty":"Primary","segment":9659144961849433642}],[{"ty":"End","segment":14649965831690031908},{"ty":"Primary","segment":801877719748058643}]],"remove_g1_continuous":[]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[8297015715799006244,{"inputs":[{"Node":{"node_id":6484183251661832039,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[0.0,407.5]},"exposed":false}},{"Value":{"tagged_value":{"F64":23.8},"exposed":false}},{"Value":{"tagged_value":{"U32":8},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[12867379765049504290,{"inputs":[{"Node":{"node_id":6445954214067437701,"output_index":0,"lambda":false}},{"Node":{"node_id":8863346544623578893,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[17740496701763775226,{"inputs":[{"Node":{"node_id":13027689870767713939,"output_index":0,"lambda":false}},{"Node":{"node_id":16609137733952262762,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14808063168960305551,{"inputs":[{"Node":{"node_id":14496934933990319842,"output_index":0,"lambda":false}},{"Node":{"node_id":3471746866096043087,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[12494428953087324640,{"inputs":[{"Node":{"node_id":8511737864852441844,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"DVec2":[300.0,50.0]},"exposed":false}},{"Value":{"tagged_value":{"F64":0.0},"exposed":false}},{"Value":{"tagged_value":{"U32":12},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::RepeatNode"}},"visible":true,"skip_deduplication":false}],[15817956847588799375,{"inputs":[{"Node":{"node_id":11201759760883367635,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"Fill":{"Solid":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}}},"exposed":false}},{"Value":{"tagged_value":{"OptionalColor":{"red":0.3137255,"green":0.44705883,"blue":0.45490196,"alpha":1.0}},"exposed":false}},{"Value":{"tagged_value":{"Gradient":{"stops":[[0.0,{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0}],[1.0,{"red":1.0,"green":1.0,"blue":1.0,"alpha":1.0}]],"gradient_type":"Linear","start":[0.0,0.5],"end":[1.0,0.5],"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":false}}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::FillNode"}},"visible":true,"skip_deduplication":false}],[2287485748649359627,{"inputs":[{"Node":{"node_id":804622576568168609,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[13646498613066619660,{"inputs":[{"Node":{"node_id":12741076678082295759,"output_index":0,"lambda":false}},{"Value":{"tagged_value":{"BooleanOperation":"Intersect"},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::style::Fill","alias":null,"size":104,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_std::vector::BooleanOperationNode"}},"visible":true,"skip_deduplication":false}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::ImpureMemoNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[1809704172129195322,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":20.0},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::CircleNode"}},"visible":true,"skip_deduplication":false}],[876963243827503916,{"inputs":[{"Node":{"node_id":7651693425519490419,"output_index":0,"lambda":false}},{"Node":{"node_id":17223836790030950966,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7376049709233607419,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[16958489363675356032,7347160684180114694,4322398537034510509,3438797896265725901,16005438712872589849,1674257131044231065,10491326691824745018,9374180853656949931,13358295350421759755,15245407364463454564],"remove":[],"delta":[[13358295350421759755,[778.4691358024693,177.1851851851852]],[9374180853656949931,[784.0000000000002,176.98765432098767]],[1674257131044231065,[829.4320987654323,121.67901234567904]],[10491326691824745018,[811.851851851852,148.54320987654322]],[4322398537034510509,[776.888888888889,117.53086419753087]],[16005438712872589849,[817.1851851851852,94.61728395061728]],[16958489363675356032,[658.172839506173,169.08641975308643]],[15245407364463454564,[773.530864197531,141.4320987654321]],[7347160684180114694,[772.1481481481483,138.66666666666669]],[3438797896265725901,[795.4567901234569,94.41975308641976]]]},"segments":{"add":[11663644781855838202,198953627342130434,8327087349631976772,13015157349146777770,8528911024810728168,3235570761188242773,16847383896493391194,16846650637386857857,3784798568712268630,12873317883441611394],"remove":[],"start_point":[[198953627342130434,7347160684180114694],[12873317883441611394,15245407364463454564],[3784798568712268630,13358295350421759755],[11663644781855838202,16958489363675356032],[3235570761188242773,1674257131044231065],[8327087349631976772,4322398537034510509],[8528911024810728168,16005438712872589849],[16847383896493391194,10491326691824745018],[13015157349146777770,3438797896265725901],[16846650637386857857,9374180853656949931]],"end_point":[[16847383896493391194,9374180853656949931],[11663644781855838202,7347160684180114694],[8528911024810728168,1674257131044231065],[3235570761188242773,10491326691824745018],[12873317883441611394,16958489363675356032],[8327087349631976772,3438797896265725901],[3784798568712268630,15245407364463454564],[198953627342130434,4322398537034510509],[13015157349146777770,16005438712872589849],[16846650637386857857,13358295350421759755]],"handle_primary":[[16847383896493391194,[-17.185185185185105,13.234567901234584]],[3784798568712268630,[-2.962962962963161,-10.864197530864232]],[16846650637386857857,[0.0,0.0]],[13015157349146777770,[0.0,0.0]],[8528911024810728168,[5.530864197530946,5.925925925925924]],[12873317883441611394,[-19.75308641975323,2.172839506172835]],[8327087349631976772,[-0.19753086419757435,-13.82716049382715]],[198953627342130434,[0.0,0.3950617283950635]],[3235570761188242773,[0.1975308641974607,7.703703703703709]],[11663644781855838202,[0.0,0.0]]],"handle_end":[[3784798568712268630,[2.9629629629629335,5.135802469135797]],[16847383896493391194,[0.0,0.0]],[13015157349146777770,[-5.530864197530946,-5.925925925925924]],[12873317883441611394,[33.382716049382566,14.222222222222172]],[8528911024810728168,[-0.1975308641974607,-7.703703703703709]],[3235570761188242773,[17.185185185185105,-13.234567901234584]],[198953627342130434,[0.19753086419757435,13.82716049382715]],[11663644781855838202,[-74.27160493827171,29.03703703703698]],[8327087349631976772,[0.0,0.0]],[16846650637386857857,[0.0,0.0]]],"stroke":[[16846650637386857857,0],[12873317883441611394,0],[11663644781855838202,0],[16847383896493391194,0],[3784798568712268630,0],[198953627342130434,0],[13015157349146777770,0],[8528911024810728168,0],[3235570761188242773,0],[8327087349631976772,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":16847383896493391194},{"ty":"Primary","segment":16846650637386857857}],[{"ty":"End","segment":13015157349146777770},{"ty":"Primary","segment":8528911024810728168}],[{"ty":"End","segment":198953627342130434},{"ty":"Primary","segment":8327087349631976772}],[{"ty":"End","segment":8327087349631976772},{"ty":"Primary","segment":13015157349146777770}],[{"ty":"End","segment":3235570761188242773},{"ty":"Primary","segment":16847383896493391194}],[{"ty":"End","segment":8528911024810728168},{"ty":"Primary","segment":3235570761188242773}]],"remove_g1_continuous":[[{"ty":"End","segment":3784798568712268630},{"ty":"Primary","segment":12873317883441611394}],[{"ty":"End","segment":16846650637386857857},{"ty":"Primary","segment":3784798568712268630}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[7977952035097419157,{"inputs":[{"Value":{"tagged_value":"None","exposed":false}},{"Value":{"tagged_value":{"F64":0.5},"exposed":false}},{"Value":{"tagged_value":{"F64":0.5},"exposed":false}}],"manual_composition":{"Concrete":{"name":"()","alias":null,"size":0,"align":1}},"implementation":{"ProtoNode":{"name":"graphene_core::vector::generator_nodes::EllipseNode"}},"visible":true,"skip_deduplication":false}],[7667878689218439065,{"inputs":[{"Node":{"node_id":18271512507682813443,"output_index":0,"lambda":false}},{"Node":{"node_id":5449860184735415958,"output_index":0,"lambda":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":3,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToElementNode"}},"visible":true,"skip_deduplication":false}],[3,{"inputs":[{"Node":{"node_id":1,"output_index":0,"lambda":false}},{"Node":{"node_id":2,"output_index":0,"lambda":false}},{"Reflection":"DocumentNodePath"}],"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","alias":null,"size":72,"align":8}},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::LayerNode"}},"visible":true,"skip_deduplication":false}],[2,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Network":{"import_type":{"Generic":"T"},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::graphic_element::ToGroupNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}],[14030142873804552388,{"inputs":[{"Value":{"tagged_value":{"VectorData":{"transform":[1.0,0.0,0.0,1.0,0.0,0.0],"style":{"stroke":{"color":{"red":0.0,"green":0.0,"blue":0.0,"alpha":1.0},"weight":0.0,"dash_lengths":[],"dash_offset":0.0,"line_cap":"Butt","line_join":"Miter","line_join_miter_limit":4.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]},"fill":"None"},"alpha_blending":{"opacity":1.0,"blend_mode":"Normal"},"colinear_manipulators":[],"point_domain":{"id":[],"positions":[]},"segment_domain":{"ids":[],"start_point":[],"end_point":[],"handles":[],"stroke":[]},"region_domain":{"ids":[],"segment_range":[],"fill":[]},"upstream_graphic_group":null}},"exposed":true}},{"Value":{"tagged_value":{"VectorModification":{"points":{"add":[11163144542703672167,7233902871991446034,9403888920678312544,5714042674660607880,9912917483675332510],"remove":[],"delta":[[9912917483675332510,[1536.0,254.00000000000009]],[11163144542703672167,[763.0,0.0]],[9403888920678312544,[1271.0,199.0]],[7233902871991446034,[908.0,134.0]],[5714042674660607880,[1536.0,0.0]]]},"segments":{"add":[7099980686025805826,11879054056208937348,7804540624589615499,3118709054343469746,12085471811343146506],"remove":[8174738144062904321],"start_point":[[12085471811343146506,9912917483675332510],[7804540624589615499,5714042674660607880],[7099980686025805826,11163144542703672167],[11879054056208937348,7233902871991446034],[3118709054343469746,9403888920678312544]],"end_point":[[3118709054343469746,9912917483675332510],[11879054056208937348,9403888920678312544],[7099980686025805826,7233902871991446034],[12085471811343146506,5714042674660607880],[7804540624589615499,11163144542703672167]],"handle_primary":[[11879054056208937348,[68.41365603453937,54.51084151791355]],[3118709054343469746,[191.0,-106.0]],[7099980686025805826,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[12085471811343146506,[0.0,0.0]]],"handle_end":[[3118709054343469746,[0.0,0.0]],[7099980686025805826,[-68.41365603453914,-54.51084151791349]],[12085471811343146506,[0.0,0.0]],[7804540624589615499,[0.0,0.0]],[11879054056208937348,[-121.83694366711715,67.61631428646292]]],"stroke":[[12085471811343146506,0],[11879054056208937348,0],[7804540624589615499,0],[7099980686025805826,0],[3118709054343469746,0]]},"regions":{"add":[],"remove":[],"segment_range":[],"fill":[]},"add_g1_continuous":[[{"ty":"End","segment":7099980686025805826},{"ty":"Primary","segment":11879054056208937348}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":8174738144062904321}],[{"ty":"End","segment":11879054056208937348},{"ty":"Primary","segment":3118709054343469746}]],"remove_g1_continuous":[[{"ty":"End","segment":3118709054343469746},{"ty":"Primary","segment":12085471811343146506}]]}},"exposed":false}}],"manual_composition":null,"implementation":{"Network":{"exports":[{"Node":{"node_id":1,"output_index":0,"lambda":false}}],"nodes":[[0,{"inputs":[{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::VectorData","alias":null,"size":488,"align":8}},"import_index":0}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::memo::MonitorNode"}},"visible":true,"skip_deduplication":true}],[1,{"inputs":[{"Node":{"node_id":0,"output_index":0,"lambda":false}},{"Network":{"import_type":{"Concrete":{"name":"graphene_core::vector::vector_data::modification::VectorModification","alias":null,"size":464,"align":8}},"import_index":1}}],"manual_composition":{"Generic":"T"},"implementation":{"ProtoNode":{"name":"graphene_core::vector::vector_data::modification::PathModifyNode"}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]}},"visible":true,"skip_deduplication":false}]],"scope_injections":[]},"network_metadata":{"persistent_metadata":{"node_metadata":[[3471746866096043087,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1662641269094032596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18271512507682813443,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139765080256493579,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-70,128]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1009114585722052052,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-55,57]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6194305264313730032,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4809200889774783438,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17131529656312051452,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13027689870767713939,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4560146526699152877,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4470272391975492611,{"persistent_metadata":{"reference":"Merge","display_name":"Rose Sliver Silhouette","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17285637344898461972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-62,81]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3109716240255919254,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eyebrow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8511737864852441844,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11201759760883367635,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-70,64]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6787585796949551500,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 1","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-7,12]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12922148192688274227,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8566844905246185636,{"persistent_metadata":{"reference":"Merge","display_name":"Mouth Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12276520439585231336,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11264395591110193456,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5488285068107445023,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1258994191538244490,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2185437945364824599,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13670206802546093234,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14950060858756810933,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-70,60]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17351444026127625357,{"persistent_metadata":{"reference":"Merge","display_name":"Face Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4771789845668099116,{"persistent_metadata":{"reference":"Merge","display_name":"Cheek Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[3750439930725791025,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5449860184735415958,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-70,114]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14030142873804552388,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-35,66]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1508440849951861669,{"persistent_metadata":{"reference":"Merge","display_name":"Face Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17223836790030950966,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11301831865756336526,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18188505856445531484,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6503655938154160104,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-35,44]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4102754869474520966,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4301099429811409147,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9338394475379815879,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":["Vector Data","Translation","Rotation","Scale","Skew","Pivot"],"output_names":["Data"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15930698052919171086,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18068340617333437755,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7480253252288032958,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6484183251661832039,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15817956847588799375,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10265035897167064154,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15433707377961038695,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-62,87]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14690269209726153565,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5888633415105234509,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[392274448837115448,{"persistent_metadata":{"reference":"Artboard","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-4,9]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-2,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Artboard","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-10,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Append Artboards","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[6,-4]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9563008199132558110,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14496934933990319842,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12145355397916841389,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8269257328703012432,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6616450276140292763,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17397123104674848450,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17299978721726771610,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10760002922115563021,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14257963317028524134,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6445954214067437701,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5856350938151339368,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16306737306999003555,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14228923746783465609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-49,125]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8887924609778270360,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17753909951719808506,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13446205009526451196,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7018444885869143173,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black - Dots","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12353675714904258944,{"persistent_metadata":{"reference":"Merge","display_name":"Nose Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15301503532602557206,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18081743490344004315,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6728362629909402903,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12494428953087324640,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1001728975241745659,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12234961922142600898,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":12}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15900830679378240619,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12709602171929957216,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Left Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7376049709233607419,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18031616785650843168,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-35,123]}}},"network_metadata":null}}],[17735408893002232096,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17036604842139972912,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13739729101529293427,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2025899804080897524,{"persistent_metadata":{"reference":"Merge","display_name":"Face White","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14698962747138962125,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16177422101884031678,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4807760870555738383,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Main Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[6726954210929537972,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[18053728639616073084,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18003287685830153881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-42,72]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5877930116725120460,{"persistent_metadata":{"reference":"Merge","display_name":"Rear Eyelash","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14808063168960305551,{"persistent_metadata":{"reference":"Merge","display_name":"Face Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12867379765049504290,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11210964267417873667,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14139129879376457893,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[9808637865669223270,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8297015715799006244,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17271572793812678706,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[876963243827503916,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13340751444307201866,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13353438235848911576,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11095670964487764044,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Strand 2","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9071802450034150503,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":["Vector Data","Fill","Backup Color","Backup Gradient"],"output_names":["VectorData"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8863346544623578893,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-49,90]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17696051535511578981,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Absolute":[-41,46]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[4421418468606442725,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13588160462734303101,{"persistent_metadata":{"reference":"Merge","display_name":"Hair Dots Red","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17740294143355019755,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7855094781869605606,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-49,87]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2723198387862533596,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12770183061753030023,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[1809704172129195322,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18095952297474762348,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12741076678082295759,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-42,108]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5486211022469996717,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-42,75]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7977952035097419157,{"persistent_metadata":{"reference":"Ellipse","display_name":"","input_names":["Primary","Radius X","Radius Y"],"output_names":["VectorData"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[804622576568168609,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11312003311374164325,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[6852799892628327372,{"persistent_metadata":{"reference":"Merge","display_name":"Head Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13203761224559198689,{"persistent_metadata":{"reference":"Merge","display_name":"Front Eye Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16785043320296790229,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[14684142559936015947,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3214181946162459584,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[18351415092709164412,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1627123781166851142,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Corner Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16780039553038473906,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16671141883125519098,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10286817149456341619,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11373527190663101881,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13916027199283115943,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[5954536408321808728,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16609137733952262762,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[4328376070224119511,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Orange","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[10080296672372912698,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7651693425519490419,{"persistent_metadata":{"reference":"Merge","display_name":"Top Right Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8426490990601560741,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[13602951545837529973,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[3050731459444225191,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7104261880154687267,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[990192925663920333,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[15354358358546908017,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[7667878689218439065,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[8359580532088731394,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17740496701763775226,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Blue","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2287485748649359627,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[140396870212231820,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[2834866505092039323,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14141479077115894852,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-56,87]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[11429506195623419966,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7201841978411396053,{"persistent_metadata":{"reference":"Merge","display_name":"Bottom Black","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":2}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17562801632450633291,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[14516211820212764316,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[10995640810984321903,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Bottom","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17952673493105230490,{"persistent_metadata":{"reference":"Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-42,123]}}},"network_metadata":null}}],[7755499790391969923,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1097494158696050491,{"persistent_metadata":{"reference":"Circle","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11684705487012407227,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[1491840484128555837,{"persistent_metadata":{"reference":"Merge","display_name":"Face Shadow","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[7104088139635280554,{"persistent_metadata":{"reference":"Solidify Stroke","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[2871608309888343463,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[17603523494627491590,{"persistent_metadata":{"reference":"Merge","display_name":"Lip Top","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Layer":{"position":{"Stack":0}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[15692102598187739001,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-63,57]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16759836951269190891,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[5014806436727666175,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[16304636129468583592,{"persistent_metadata":{"reference":"Path","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-70,125]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Path Modify","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[9135110142507605216,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[17495267820524300686,{"persistent_metadata":{"reference":"Transform","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[0,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"Transform","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[13646498613066619660,{"persistent_metadata":{"reference":"Boolean Operation","display_name":"","input_names":["Graphical Data","Operation"],"output_names":["Vector"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-35,108]}}},"network_metadata":{"persistent_metadata":{"node_metadata":[[1,{"persistent_metadata":{"reference":null,"display_name":"Cache","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[0,0]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"Boolean Operation","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,0]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}],[12185047359007423618,{"persistent_metadata":{"reference":"Fill","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[682567808439406093,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[8460565235419043665,{"persistent_metadata":{"reference":"Repeat","display_name":"","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":null}}],[11196821089257149774,{"persistent_metadata":{"reference":"Merge","display_name":"","input_names":["Graphical Data","Over"],"output_names":["Out"],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":"Chain"}},"network_metadata":{"persistent_metadata":{"node_metadata":[[3,{"persistent_metadata":{"reference":null,"display_name":"Layer","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[1,-3]}}},"network_metadata":null}}],[0,{"persistent_metadata":{"reference":null,"display_name":"To Element","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-1]}}},"network_metadata":null}}],[1,{"persistent_metadata":{"reference":null,"display_name":"To Group","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-14,-3]}}},"network_metadata":null}}],[2,{"persistent_metadata":{"reference":null,"display_name":"Monitor","input_names":[],"output_names":[],"has_primary_output":true,"locked":false,"node_type_metadata":{"Node":{"position":{"Absolute":[-7,-1]}}},"network_metadata":null}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[0.0,0.0],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,0.0,0.0],"node_graph_top_right":[0.0,0.0]},"selection_undo_history":[],"selection_redo_history":[]}}}}]],"previewing":"No","navigation_metadata":{"node_graph_ptz":{"pan":[772.9589087862537,-918.0745763033187],"tilt":0.0,"zoom":1.0},"node_graph_to_viewport":[1.0,0.0,0.0,1.0,1763.0,-338.0],"node_graph_top_right":[1980.796875,0.0]},"selection_undo_history":[[],[7104088139635280554],[],[4300461501253802544],[],[4300461501253802544],[7104088139635280554,4300461501253802544],[4300461501253802544,16785043320296790229,7104088139635280554],[],[4300461501253802544],[14257963317028524134],[],[14257963317028524134],[7018444885869143173],[],[],[9338394475379815879],[],[4300461501253802544],[],[],[10760002922115563021],[6503655938154160104],[6503655938154160104],[],[6503655938154160104],[17696051535511578981],[16780039553038473906],[6503655938154160104],[],[4328376070224119511,17740496701763775226,13027689870767713939,7201841978411396053],[16671141883125519098,17740496701763775226,7480253252288032958,17036604842139972912,1491840484128555837,4301099429811409147,1508440849951861669,140396870212231820,11196821089257149774,5888633415105234509,7201841978411396053,17735408893002232096,2025899804080897524,9808637865669223270,5954536408321808728,4328376070224119511,2834866505092039323,18031616785650843168,8460565235419043665,16306737306999003555,13588160462734303101,17131529656312051452,990192925663920333,11312003311374164325,13027689870767713939,7104261880154687267,13446205009526451196,8566844905246185636,18095952297474762348,17299978721726771610,3214181946162459584,13646498613066619660,11210964267417873667,1662641269094032596,17397123104674848450,9135110142507605216,13340751444307201866,14516211820212764316,6852799892628327372,13602951545837529973,16609137733952262762],[17299978721726771610,12867379765049504290,9808637865669223270,2871608309888343463,6852799892628327372,5014806436727666175,3471746866096043087,17397123104674848450,17753909951719808506,13602951545837529973,14141479077115894852,9563008199132558110,18068340617333437755,7201841978411396053,12276520439585231336,1491840484128555837,1508440849951861669,4421418468606442725,4328376070224119511,18188505856445531484,6484183251661832039,7855094781869605606,10080296672372912698,14496934933990319842,140396870212231820,3750439930725791025,12185047359007423618,2834866505092039323,6194305264313730032,2025899804080897524,17351444026127625357,18081743490344004315,14516211820212764316,5486211022469996717,12741076678082295759,1097494158696050491,1662641269094032596,15433707377961038695,3214181946162459584,17285637344898461972,990192925663920333,17735408893002232096,16609137733952262762,7480253252288032958,16306737306999003555,18031616785650843168,12709602171929957216,13670206802546093234,12494428953087324640,1809704172129195322,17740496701763775226,11210964267417873667,16671141883125519098,9135110142507605216,11312003311374164325,12922148192688274227,13446205009526451196,8297015715799006244,17131529656312051452,5954536408321808728,4560146526699152877,14228923746783465609,2185437945364824599,8887924609778270360,14808063168960305551,11264395591110193456,8863346544623578893,5888633415105234509,18095952297474762348,7104261880154687267,11684705487012407227,13340751444307201866,13588160462734303101,17036604842139972912,4301099429811409147,13027689870767713939,13916027199283115943,13646498613066619660,8460565235419043665,11196821089257149774,17952673493105230490,8566844905246185636,6445954214067437701],[18081743490344004315,1809704172129195322,18031616785650843168,1491840484128555837,3750439930725791025,11264395591110193456,15433707377961038695,4301099429811409147,4771789845668099116,18068340617333437755,13027689870767713939,13446205009526451196,5449860184735415958,8297015715799006244,7651693425519490419,14516211820212764316,8460565235419043665,16304636129468583592,8566844905246185636,12709602171929957216,14228923746783465609,6852799892628327372,5014806436727666175,17299978721726771610,18003287685830153881,17351444026127625357,13340751444307201866,13588160462734303101,17223836790030950966,5888633415105234509,7855094781869605606,14141479077115894852,17735408893002232096,2871608309888343463,17036604842139972912,3471746866096043087,13670206802546093234,17753909951719808506,12741076678082295759,4328376070224119511,14139765080256493579,12276520439585231336,14808063168960305551,1662641269094032596,3214181946162459584,990192925663920333,12185047359007423618,2025899804080897524,9808637865669223270,13646498613066619660,15930698052919171086,9563008199132558110,10080296672372912698,12867379765049504290,13602951545837529973,14030142873804552388,16306737306999003555,1097494158696050491,18188505856445531484,13916027199283115943,5486211022469996717,11312003311374164325,18095952297474762348,7201841978411396053,8511737864852441844,17740496701763775226,17131529656312051452,14684142559936015947,6484183251661832039,7480253252288032958,2185437945364824599,4560146526699152877,13739729101529293427,9135110142507605216,11210964267417873667,16671141883125519098,1508440849951861669,15817956847588799375,6445954214067437701,12494428953087324640,17952673493105230490,14496934933990319842,876963243827503916,5954536408321808728,140396870212231820,16609137733952262762,11684705487012407227,17397123104674848450,7104261880154687267,2834866505092039323,6194305264313730032,17285637344898461972,12922148192688274227,8863346544623578893,8887924609778270360,4421418468606442725,11196821089257149774],[17351444026127625357,3750439930725791025,11264395591110193456,13027689870767713939,5888633415105234509,17753909951719808506,17735408893002232096,14808063168960305551,14496934933990319842,18031616785650843168,17036604842139972912,4560146526699152877,12922148192688274227,876963243827503916,17285637344898461972,8863346544623578893,18095952297474762348,4301099429811409147,6852799892628327372,17299978721726771610,12276520439585231336,16671141883125519098,2834866505092039323,14516211820212764316,12185047359007423618,4102754869474520966,6484183251661832039,14684142559936015947,13916027199283115943,7104261880154687267,16304636129468583592,18068340617333437755,12867379765049504290,14228923746783465609,17223836790030950966,9808637865669223270,5014806436727666175,2723198387862533596,13646498613066619660,17397123104674848450,18003287685830153881,12741076678082295759,15433707377961038695,12709602171929957216,13446205009526451196,4328376070224119511,11201759760883367635,13602951545837529973,8269257328703012432,15930698052919171086,6194305264313730032,8511737864852441844,13670206802546093234,3214181946162459584,140396870212231820,6445954214067437701,17952673493105230490,2025899804080897524,17740496701763775226,1809704172129195322,16306737306999003555,1508440849951861669,12494428953087324640,18188505856445531484,4421418468606442725,8566844905246185636,4807760870555738383,11210964267417873667,7201841978411396053,990192925663920333,14030142873804552388,14139765080256493579,13340751444307201866,2871608309888343463,7855094781869605606,15817956847588799375,5954536408321808728,17131529656312051452,18081743490344004315,13739729101529293427,7480253252288032958,7651693425519490419,1097494158696050491,8887924609778270360,9135110142507605216,13588160462734303101,8460565235419043665,11196821089257149774,11312003311374164325,16609137733952262762,11684705487012407227,1491840484128555837,3471746866096043087,14141479077115894852,9563008199132558110,8297015715799006244,4771789845668099116,5449860184735415958,5486211022469996717,10080296672372912698,1662641269094032596,2185437945364824599],[14684142559936015947,1662641269094032596,3214181946162459584,12709602171929957216,4421418468606442725,876963243827503916,1809704172129195322,5486211022469996717,3471746866096043087,3750439930725791025,8887924609778270360,17952673493105230490,13646498613066619660,7855094781869605606,11196821089257149774,8863346544623578893,18188505856445531484,2025899804080897524,14808063168960305551,18095952297474762348,14228923746783465609,17131529656312051452,13916027199283115943,13340751444307201866,7651693425519490419,7104261880154687267,9135110142507605216,18003287685830153881,17753909951719808506,6194305264313730032,4807760870555738383,5014806436727666175,6484183251661832039,17397123104674848450,16304636129468583592,1097494158696050491,17740496701763775226,1508440849951861669,8511737864852441844,7480253252288032958,11201759760883367635,8269257328703012432,17223836790030950966,12494428953087324640,18031616785650843168,990192925663920333,8460565235419043665,5888633415105234509,5954536408321808728,1627123781166851142,14496934933990319842,2834866505092039323,11684705487012407227,13588160462734303101,12922148192688274227,12185047359007423618,13446205009526451196,11210964267417873667,13027689870767713939,16609137733952262762,4328376070224119511,4560146526699152877,4102754869474520966,4301099429811409147,9808637865669223270,140396870212231820,7201841978411396053,1491840484128555837,2185437945364824599,16306737306999003555,5449860184735415958,14141479077115894852,8566844905246185636,15817956847588799375,17735408893002232096,14516211820212764316,14030142873804552388,15433707377961038695,17299978721726771610,12276520439585231336,10080296672372912698,11312003311374164325,13670206802546093234,17351444026127625357,4771789845668099116,2723198387862533596,12741076678082295759,16671141883125519098,2871608309888343463,13739729101529293427,12867379765049504290,18081743490344004315,13602951545837529973,14139765080256493579,15930698052919171086,18068340617333437755,8297015715799006244,17036604842139972912,6445954214067437701,17285637344898461972,11264395591110193456,9563008199132558110,6852799892628327372],[15817956847588799375,14516211820212764316,17397123104674848450,11201759760883367635,1662641269094032596,17351444026127625357,13916027199283115943,4301099429811409147,15354358358546908017,2185437945364824599,876963243827503916,4102754869474520966,1809704172129195322,13027689870767713939,12867379765049504290,2871608309888343463,16304636129468583592,11196821089257149774,12922148192688274227,14496934933990319842,14139765080256493579,5888633415105234509,12741076678082295759,17740496701763775226,9135110142507605216,4560146526699152877,6194305264313730032,15433707377961038695,6852799892628327372,11264395591110193456,7651693425519490419,17952673493105230490,6484183251661832039,11684705487012407227,13646498613066619660,5449860184735415958,8269257328703012432,13739729101529293427,10080296672372912698,1491840484128555837,18081743490344004315,18068340617333437755,3750439930725791025,14808063168960305551,3471746866096043087,9808637865669223270,18095952297474762348,5014806436727666175,18031616785650843168,8511737864852441844,14228923746783465609,14684142559936015947,13588160462734303101,16609137733952262762,1508440849951861669,4328376070224119511,12276520439585231336,17285637344898461972,17753909951719808506,11210964267417873667,1097494158696050491,12185047359007423618,6445954214067437701,2025899804080897524,18188505856445531484,11312003311374164325,12709602171929957216,140396870212231820,17223836790030950966,2834866505092039323,12494428953087324640,7855094781869605606,16671141883125519098,17131529656312051452,7480253252288032958,5486211022469996717,5954536408321808728,9563008199132558110,8887924609778270360,17735408893002232096,14141479077115894852,8460565235419043665,8566844905246185636,15930698052919171086,8863346544623578893,4421418468606442725,7201841978411396053,14950060858756810933,17299978721726771610,17036604842139972912,4807760870555738383,18003287685830153881,8297015715799006244,3214181946162459584,13340751444307201866,4771789845668099116,16306737306999003555,990192925663920333,13670206802546093234,7104261880154687267,13602951545837529973,1627123781166851142,14030142873804552388,2723198387862533596,13446205009526451196],[13916027199283115943,12922148192688274227,18081743490344004315,14030142873804552388,17299978721726771610,3214181946162459584,17397123104674848450,11210964267417873667,16304636129468583592,4560146526699152877,4301099429811409147,7480253252288032958,14496934933990319842,15930698052919171086,17223836790030950966,3471746866096043087,5449860184735415958,8887924609778270360,17753909951719808506,18003287685830153881,8269257328703012432,8297015715799006244,18095952297474762348,9808637865669223270,12276520439585231336,9563008199132558110,13340751444307201866,2723198387862533596,6852799892628327372,14950060858756810933,1627123781166851142,7651693425519490419,7201841978411396053,11684705487012407227,18188505856445531484,13027689870767713939,12709602171929957216,16671141883125519098,7104261880154687267,15433707377961038695,1491840484128555837,17740496701763775226,4771789845668099116,1097494158696050491,18068340617333437755,5954536408321808728,14516211820212764316,13646498613066619660,12185047359007423618,2871608309888343463,3750439930725791025,11196821089257149774,14228923746783465609,11201759760883367635,13446205009526451196,2185437945364824599,17036604842139972912,990192925663920333,6194305264313730032,14684142559936015947,17131529656312051452,12867379765049504290,5888633415105234509,14139765080256493579,10080296672372912698,15692102598187739001,1809704172129195322,1508440849951861669,14141479077115894852,17351444026127625357,11264395591110193456,12494428953087324640,17735408893002232096,4807760870555738383,13588160462734303101,140396870212231820,8511737864852441844,8566844905246185636,6484183251661832039,16306737306999003555,12741076678082295759,7855094781869605606,13602951545837529973,15354358358546908017,17952673493105230490,5014806436727666175,8460565235419043665,11312003311374164325,6445954214067437701,2834866505092039323,15817956847588799375,4421418468606442725,9135110142507605216,17285637344898461972,13670206802546093234,14808063168960305551,13739729101529293427,8863346544623578893,16609137733952262762,4328376070224119511,4102754869474520966,5486211022469996717,2025899804080897524,1662641269094032596,18031616785650843168,876963243827503916],[4421418468606442725,8863346544623578893,140396870212231820,11210964267417873667,17397123104674848450,7104261880154687267,4102754869474520966,17740496701763775226,15817956847588799375,4301099429811409147,17753909951719808506,12867379765049504290,18351415092709164412,13739729101529293427,2025899804080897524,11312003311374164325,11264395591110193456,7480253252288032958,15930698052919171086,5888633415105234509,14808063168960305551,15692102598187739001,17735408893002232096,12276520439585231336,9808637865669223270,7201841978411396053,6194305264313730032,13602951545837529973,5014806436727666175,11201759760883367635,3750439930725791025,8269257328703012432,17299978721726771610,18003287685830153881,13340751444307201866,7651693425519490419,4560146526699152877,1097494158696050491,13646498613066619660,18081743490344004315,1491840484128555837,13670206802546093234,14030142873804552388,18068340617333437755,2185437945364824599,9563008199132558110,17036604842139972912,4807760870555738383,7855094781869605606,1627123781166851142,13916027199283115943,5954536408321808728,14684142559936015947,990192925663920333,8566844905246185636,6484183251661832039,14496934933990319842,15354358358546908017,12709602171929957216,17351444026127625357,17223836790030950966,16306737306999003555,8297015715799006244,5449860184735415958,4328376070224119511,14228923746783465609,18188505856445531484,16671141883125519098,1662641269094032596,16304636129468583592,2723198387862533596,1009114585722052052,8887924609778270360,3471746866096043087,16609137733952262762,14950060858756810933,18031616785650843168,9135110142507605216,6445954214067437701,8460565235419043665,1508440849951861669,13027689870767713939,12922148192688274227,13588160462734303101,1809704172129195322,14141479077115894852,17131529656312051452,11196821089257149774,14139765080256493579,13446205009526451196,10080296672372912698,17285637344898461972,18095952297474762348,12494428953087324640,4771789845668099116,12234961922142600898,876963243827503916,5486211022469996717,6852799892628327372,17952673493105230490,15433707377961038695,2834866505092039323,11684705487012407227,3214181946162459584,2871608309888343463,12185047359007423618,12741076678082295759,8511737864852441844,14516211820212764316],[4560146526699152877,990192925663920333,5486211022469996717,18031616785650843168,7855094781869605606,2871608309888343463,11196821089257149774,15930698052919171086,7104088139635280554,17223836790030950966,18095952297474762348,8511737864852441844,15817956847588799375,8863346544623578893,16785043320296790229,2834866505092039323,17735408893002232096,13739729101529293427,15692102598187739001,12741076678082295759,16304636129468583592,11684705487012407227,18068340617333437755,16306737306999003555,14139765080256493579,6194305264313730032,9808637865669223270,12922148192688274227,2185437945364824599,14950060858756810933,2723198387862533596,13602951545837529973,13446205009526451196,17036604842139972912,7651693425519490419,7480253252288032958,15354358358546908017,1491840484128555837,17131529656312051452,11201759760883367635,8269257328703012432,8887924609778270360,18003287685830153881,876963243827503916,14684142559936015947,17952673493105230490,12867379765049504290,12494428953087324640,13588160462734303101,17351444026127625357,1508440849951861669,12709602171929957216,8297015715799006244,12276520439585231336,10080296672372912698,4301099429811409147,8566844905246185636,3750439930725791025,140396870212231820,7201841978411396053,14516211820212764316,14496934933990319842,1097494158696050491,4771789845668099116,5449860184735415958,8460565235419043665,3471746866096043087,13646498613066619660,1662641269094032596,14030142873804552388,16671141883125519098,4328376070224119511,14141479077115894852,6484183251661832039,12185047359007423618,13916027199283115943,2025899804080897524,1809704172129195322,4807760870555738383,18188505856445531484,9563008199132558110,6852799892628327372,3214181946162459584,1009114585722052052,12234961922142600898,17753909951719808506,14808063168960305551,18351415092709164412,16609137733952262762,7104261880154687267,11264395591110193456,17397123104674848450,5014806436727666175,14228923746783465609,13027689870767713939,11210964267417873667,17740496701763775226,17285637344898461972,17299978721726771610,4102754869474520966,6445954214067437701,13340751444307201866,1627123781166851142,9135110142507605216,13670206802546093234,5888633415105234509,15433707377961038695,18081743490344004315,11312003311374164325,5954536408321808728,4421418468606442725],[],[],[17696051535511578981,16780039553038473906],[17696051535511578981,6503655938154160104,16780039553038473906],[16780039553038473906,17696051535511578981,6503655938154160104,9071802450034150503],[9338394475379815879,6503655938154160104,9071802450034150503,17696051535511578981,16780039553038473906],[7977952035097419157,16780039553038473906,9338394475379815879,6503655938154160104,9071802450034150503,17696051535511578981],[],[16785043320296790229],[],[],[7201841978411396053,4328376070224119511],[16306737306999003555,17740496701763775226,13340751444307201866,1508440849951861669,6852799892628327372,17397123104674848450,18095952297474762348,2834866505092039323,13646498613066619660,13027689870767713939,9135110142507605216,3750439930725791025,16671141883125519098,7104261880154687267,18031616785650843168,13446205009526451196,1662641269094032596,12741076678082295759,16609137733952262762,17952673493105230490,17735408893002232096,5888633415105234509,8566844905246185636,3214181946162459584,11196821089257149774,7480253252288032958,7201841978411396053,2025899804080897524,4328376070224119511,17131529656312051452],[140396870212231820,11684705487012407227,11264395591110193456,17131529656312051452,1809704172129195322,7104261880154687267,5449860184735415958,18188505856445531484,8460565235419043665,12709602171929957216,16671141883125519098,18068340617333437755,12922148192688274227,3750439930725791025,5888633415105234509,17952673493105230490,18031616785650843168,5954536408321808728,3214181946162459584,4421418468606442725,14139765080256493579,8511737864852441844,4301099429811409147,7855094781869605606,18095952297474762348,13588160462734303101,5014806436727666175,9135110142507605216,13027689870767713939,16306737306999003555,16609137733952262762,11312003311374164325,8297015715799006244,8566844905246185636,14496934933990319842,12867379765049504290,13446205009526451196,12276520439585231336,990192925663920333,17397123104674848450,9808637865669223270,2871608309888343463,8887924609778270360,17299978721726771610,17735408893002232096,14141479077115894852,14516211820212764316,16304636129468583592,13646498613066619660,1097494158696050491,11196821089257149774,7480253252288032958,17753909951719808506,1491840484128555837,12741076678082295759,13602951545837529973,2834866505092039323,9563008199132558110,12494428953087324640,2185437945364824599,18081743490344004315,17036604842139972912,14228923746783465609,2025899804080897524,11210964267417873667,7201841978411396053,17740496701763775226,6484183251661832039,13340751444307201866,1508440849951861669,4328376070224119511,6852799892628327372,8863346544623578893,1662641269094032596,15433707377961038695,13670206802546093234],[7201841978411396053,3750439930725791025,13739729101529293427,9563008199132558110,14808063168960305551,13602951545837529973,16306737306999003555,7855094781869605606,18031616785650843168,1662641269094032596,13916027199283115943,13646498613066619660,12922148192688274227,12185047359007423618,11196821089257149774,140396870212231820,11684705487012407227,11264395591110193456,13027689870767713939,13340751444307201866,3214181946162459584,9808637865669223270,17351444026127625357,5888633415105234509,17285637344898461972,17036604842139972912,8887924609778270360,14496934933990319842,16304636129468583592,8460565235419043665,16671141883125519098,4421418468606442725,12741076678082295759,2025899804080897524,9135110142507605216,12709602171929957216,12867379765049504290,8863346544623578893,11312003311374164325,8511737864852441844,13446205009526451196,1809704172129195322,16609137733952262762,13588160462734303101,6445954214067437701,2185437945364824599,18188505856445531484,17397123104674848450,13670206802546093234,6484183251661832039,14228923746783465609,18003287685830153881,4301099429811409147,4771789845668099116,17735408893002232096,17131529656312051452,18081743490344004315,17299978721726771610,6852799892628327372,5954536408321808728,5486211022469996717,15930698052919171086,1508440849951861669,7480253252288032958,990192925663920333,2834866505092039323,14516211820212764316,17753909951719808506,15433707377961038695,14684142559936015947,17740496701763775226,1097494158696050491,12276520439585231336,4328376070224119511,6194305264313730032,8566844905246185636,14141479077115894852,1491840484128555837,14139765080256493579,4560146526699152877,8297015715799006244,18095952297474762348,10080296672372912698,17952673493105230490,3471746866096043087,2871608309888343463,5014806436727666175,5449860184735415958,18068340617333437755,12494428953087324640,7104261880154687267,11210964267417873667],[14139765080256493579,13670206802546093234,1809704172129195322,18068340617333437755,15930698052919171086,17740496701763775226,6852799892628327372,17952673493105230490,9135110142507605216,13340751444307201866,1491840484128555837,17299978721726771610,18031616785650843168,16306737306999003555,13739729101529293427,990192925663920333,17036604842139972912,5014806436727666175,3750439930725791025,2025899804080897524,2185437945364824599,13916027199283115943,7104261880154687267,17131529656312051452,14141479077115894852,13646498613066619660,17397123104674848450,13446205009526451196,14684142559936015947,9808637865669223270,17753909951719808506,1097494158696050491,16304636129468583592,9563008199132558110,6194305264313730032,14808063168960305551,12867379765049504290,13588160462734303101,15433707377961038695,13602951545837529973,6445954214067437701,15817956847588799375,12494428953087324640,8511737864852441844,140396870212231820,8460565235419043665,3214181946162459584,12709602171929957216,4421418468606442725,11312003311374164325,5888633415105234509,8863346544623578893,8566844905246185636,7201841978411396053,14516211820212764316,14496934933990319842,4560146526699152877,4328376070224119511,1662641269094032596,7480253252288032958,13027689870767713939,1508440849951861669,16609137733952262762,7855094781869605606,18003287685830153881,7651693425519490419,6484183251661832039,8887924609778270360,4301099429811409147,10080296672372912698,5449860184735415958,14228923746783465609,5954536408321808728,2834866505092039323,12185047359007423618,18081743490344004315,11196821089257149774,5486211022469996717,2871608309888343463,11264395591110193456,18188505856445531484,11210964267417873667,11684705487012407227,16671141883125519098,12276520439585231336,4771789845668099116,18095952297474762348,12741076678082295759,12922148192688274227,3471746866096043087,17285637344898461972,8297015715799006244,17351444026127625357,17735408893002232096],[14496934933990319842,6194305264313730032,13670206802546093234,16609137733952262762,12276520439585231336,3471746866096043087,7480253252288032958,11312003311374164325,13027689870767713939,1491840484128555837,1809704172129195322,8863346544623578893,13446205009526451196,18095952297474762348,17740496701763775226,140396870212231820,2834866505092039323,16304636129468583592,17299978721726771610,13646498613066619660,8887924609778270360,11264395591110193456,17397123104674848450,4560146526699152877,17285637344898461972,13739729101529293427,18031616785650843168,7855094781869605606,16306737306999003555,4301099429811409147,11210964267417873667,2185437945364824599,17036604842139972912,5449860184735415958,14228923746783465609,14139765080256493579,14684142559936015947,14516211820212764316,5014806436727666175,17351444026127625357,11196821089257149774,14808063168960305551,15930698052919171086,3750439930725791025,9563008199132558110,1662641269094032596,876963243827503916,13916027199283115943,6445954214067437701,7651693425519490419,13602951545837529973,12185047359007423618,10080296672372912698,15817956847588799375,2025899804080897524,13588160462734303101,12709602171929957216,8566844905246185636,17131529656312051452,8297015715799006244,12867379765049504290,4771789845668099116,14030142873804552388,18003287685830153881,1508440849951861669,18081743490344004315,4328376070224119511,3214181946162459584,7201841978411396053,12741076678082295759,990192925663920333,9135110142507605216,5486211022469996717,5954536408321808728,14141479077115894852,6484183251661832039,8460565235419043665,9808637865669223270,16671141883125519098,5888633415105234509,15433707377961038695,13340751444307201866,6852799892628327372,17753909951719808506,17735408893002232096,7104261880154687267,17952673493105230490,8511737864852441844,18068340617333437755,17223836790030950966,11684705487012407227,1097494158696050491,2871608309888343463,18188505856445531484,4421418468606442725,12922148192688274227,12494428953087324640],[13646498613066619660,14516211820212764316,14030142873804552388,1491840484128555837,13446205009526451196,14684142559936015947,17036604842139972912,10080296672372912698,5954536408321808728,4560146526699152877,7480253252288032958,8887924609778270360,6194305264313730032,18068340617333437755,17753909951719808506,5486211022469996717,13670206802546093234,1809704172129195322,5449860184735415958,17223836790030950966,13602951545837529973,7104261880154687267,13916027199283115943,14808063168960305551,17740496701763775226,8460565235419043665,11196821089257149774,6445954214067437701,16306737306999003555,2723198387862533596,8511737864852441844,4102754869474520966,18031616785650843168,2871608309888343463,13340751444307201866,15930698052919171086,11312003311374164325,4328376070224119511,12185047359007423618,16671141883125519098,18188505856445531484,7651693425519490419,17285637344898461972,7855094781869605606,3471746866096043087,1097494158696050491,12709602171929957216,2025899804080897524,15433707377961038695,876963243827503916,14496934933990319842,13588160462734303101,6484183251661832039,12494428953087324640,9563008199132558110,16304636129468583592,17299978721726771610,12276520439585231336,11264395591110193456,17397123104674848450,18095952297474762348,4807760870555738383,4771789845668099116,4301099429811409147,1662641269094032596,1508440849951861669,14228923746783465609,18081743490344004315,140396870212231820,13027689870767713939,7201841978411396053,2834866505092039323,17952673493105230490,12922148192688274227,17735408893002232096,16609137733952262762,11201759760883367635,18003287685830153881,8566844905246185636,11210964267417873667,6852799892628327372,3214181946162459584,17131529656312051452,12867379765049504290,990192925663920333,14141479077115894852,8297015715799006244,5014806436727666175,14139765080256493579,9135110142507605216,13739729101529293427,2185437945364824599,17351444026127625357,9808637865669223270,8863346544623578893,5888633415105234509,8269257328703012432,3750439930725791025,4421418468606442725,12741076678082295759,11684705487012407227,15817956847588799375],[2834866505092039323,5486211022469996717,7201841978411396053,13670206802546093234,7651693425519490419,15354358358546908017,14141479077115894852,17285637344898461972,1491840484128555837,5014806436727666175,7480253252288032958,14139765080256493579,8460565235419043665,17299978721726771610,17223836790030950966,8863346544623578893,12185047359007423618,6194305264313730032,18081743490344004315,8887924609778270360,18031616785650843168,18003287685830153881,12276520439585231336,876963243827503916,1809704172129195322,18095952297474762348,17036604842139972912,7104261880154687267,13739729101529293427,2871608309888343463,4807760870555738383,6445954214067437701,14030142873804552388,18068340617333437755,4102754869474520966,14228923746783465609,15930698052919171086,1627123781166851142,13602951545837529973,14516211820212764316,8269257328703012432,4771789845668099116,17397123104674848450,2723198387862533596,4328376070224119511,8297015715799006244,8511737864852441844,14684142559936015947,1662641269094032596,17740496701763775226,1097494158696050491,14950060858756810933,16306737306999003555,17753909951719808506,12922148192688274227,14496934933990319842,3214181946162459584,12494428953087324640,10080296672372912698,9135110142507605216,5449860184735415958,11312003311374164325,11684705487012407227,13646498613066619660,16304636129468583592,11210964267417873667,13027689870767713939,17735408893002232096,17952673493105230490,5954536408321808728,8566844905246185636,4560146526699152877,11196821089257149774,6484183251661832039,7855094781869605606,3750439930725791025,11264395591110193456,12741076678082295759,990192925663920333,17351444026127625357,13916027199283115943,6852799892628327372,12709602171929957216,16671141883125519098,17131529656312051452,5888633415105234509,140396870212231820,1508440849951861669,18188505856445531484,4301099429811409147,11201759760883367635,15817956847588799375,9563008199132558110,13446205009526451196,14808063168960305551,2025899804080897524,2185437945364824599,3471746866096043087,12867379765049504290,9808637865669223270,13340751444307201866,4421418468606442725,13588160462734303101,15433707377961038695,16609137733952262762],[15433707377961038695,990192925663920333,7855094781869605606,12494428953087324640,12234961922142600898,14808063168960305551,17397123104674848450,14950060858756810933,8460565235419043665,16306737306999003555,4421418468606442725,7104261880154687267,4771789845668099116,18081743490344004315,17952673493105230490,8887924609778270360,6852799892628327372,15354358358546908017,1491840484128555837,12709602171929957216,7480253252288032958,15817956847588799375,13446205009526451196,11210964267417873667,13588160462734303101,17131529656312051452,7651693425519490419,2185437945364824599,17735408893002232096,2723198387862533596,18031616785650843168,6484183251661832039,13340751444307201866,11201759760883367635,4102754869474520966,17285637344898461972,5954536408321808728,140396870212231820,876963243827503916,8566844905246185636,11312003311374164325,9808637865669223270,15692102598187739001,17299978721726771610,3750439930725791025,5486211022469996717,14516211820212764316,13027689870767713939,6445954214067437701,14228923746783465609,1508440849951861669,12867379765049504290,8863346544623578893,2834866505092039323,1097494158696050491,18188505856445531484,17223836790030950966,8269257328703012432,13739729101529293427,18003287685830153881,16609137733952262762,7201841978411396053,16304636129468583592,12185047359007423618,1662641269094032596,14139765080256493579,5888633415105234509,4328376070224119511,10080296672372912698,14496934933990319842,11684705487012407227,13916027199283115943,6194305264313730032,14030142873804552388,2871608309888343463,3471746866096043087,17036604842139972912,4807760870555738383,18095952297474762348,3214181946162459584,5014806436727666175,9135110142507605216,8511737864852441844,17351444026127625357,2025899804080897524,8297015715799006244,12276520439585231336,4301099429811409147,18068340617333437755,12741076678082295759,11264395591110193456,4560146526699152877,1809704172129195322,12922148192688274227,9563008199132558110,13646498613066619660,7104088139635280554,13602951545837529973,11196821089257149774,13670206802546093234,15930698052919171086,1627123781166851142,16671141883125519098,17740496701763775226,14141479077115894852,5449860184735415958,14684142559936015947,17753909951719808506],[15433707377961038695,17952673493105230490,13739729101529293427,11312003311374164325,14496934933990319842,13670206802546093234,1627123781166851142,16306737306999003555,1662641269094032596,17285637344898461972,5888633415105234509,12234961922142600898,17036604842139972912,8566844905246185636,12867379765049504290,4560146526699152877,14808063168960305551,2723198387862533596,18068340617333437755,18095952297474762348,7651693425519490419,13446205009526451196,18188505856445531484,12494428953087324640,18031616785650843168,3750439930725791025,13588160462734303101,5954536408321808728,7104088139635280554,14516211820212764316,2185437945364824599,15692102598187739001,13340751444307201866,1809704172129195322,5014806436727666175,990192925663920333,15817956847588799375,4328376070224119511,8511737864852441844,9808637865669223270,13916027199283115943,1491840484128555837,4807760870555738383,12185047359007423618,8269257328703012432,18003287685830153881,8297015715799006244,3471746866096043087,4421418468606442725,5486211022469996717,2025899804080897524,16609137733952262762,6484183251661832039,17131529656312051452,17735408893002232096,2834866505092039323,13646498613066619660,15930698052919171086,17299978721726771610,11196821089257149774,12709602171929957216,7855094781869605606,876963243827503916,11264395591110193456,16304636129468583592,8460565235419043665,1009114585722052052,10080296672372912698,14030142873804552388,8887924609778270360,1508440849951861669,12276520439585231336,13027689870767713939,14228923746783465609,15354358358546908017,140396870212231820,3214181946162459584,17223836790030950966,6194305264313730032,11201759760883367635,14950060858756810933,9563008199132558110,5449860184735415958,8863346544623578893,17753909951719808506,13602951545837529973,7201841978411396053,14139765080256493579,4102754869474520966,18081743490344004315,17740496701763775226,17351444026127625357,16671141883125519098,1097494158696050491,12741076678082295759,9135110142507605216,6852799892628327372,4301099429811409147,11210964267417873667,14684142559936015947,17397123104674848450,7104261880154687267,11684705487012407227,12922148192688274227,7480253252288032958,6445954214067437701,18351415092709164412,14141479077115894852,4771789845668099116,2871608309888343463],[16306737306999003555,11210964267417873667,8566844905246185636,13739729101529293427,8297015715799006244,9563008199132558110,7855094781869605606,18081743490344004315,16609137733952262762,1491840484128555837,3750439930725791025,17740496701763775226,12741076678082295759,14684142559936015947,18068340617333437755,14496934933990319842,1508440849951861669,13588160462734303101,2723198387862533596,6852799892628327372,1097494158696050491,7104088139635280554,2025899804080897524,12185047359007423618,17131529656312051452,1809704172129195322,13340751444307201866,7480253252288032958,18188505856445531484,15930698052919171086,17397123104674848450,17285637344898461972,12494428953087324640,17036604842139972912,876963243827503916,11312003311374164325,3471746866096043087,4328376070224119511,1662641269094032596,13602951545837529973,12867379765049504290,4301099429811409147,990192925663920333,7651693425519490419,14228923746783465609,17351444026127625357,4771789845668099116,17299978721726771610,16304636129468583592,6194305264313730032,13670206802546093234,1627123781166851142,10080296672372912698,18351415092709164412,11196821089257149774,13027689870767713939,13446205009526451196,11264395591110193456,2185437945364824599,8863346544623578893,9135110142507605216,8460565235419043665,5888633415105234509,4102754869474520966,11201759760883367635,8511737864852441844,14950060858756810933,4560146526699152877,14139765080256493579,5014806436727666175,6445954214067437701,14030142873804552388,16780039553038473906,8887924609778270360,14516211820212764316,2834866505092039323,15433707377961038695,12234961922142600898,15817956847588799375,12922148192688274227,8269257328703012432,4807760870555738383,7104261880154687267,16671141883125519098,15354358358546908017,11684705487012407227,2871608309888343463,17952673493105230490,12276520439585231336,1009114585722052052,5486211022469996717,17735408893002232096,12709602171929957216,5954536408321808728,13646498613066619660,6484183251661832039,9808637865669223270,4421418468606442725,3214181946162459584,13916027199283115943,17753909951719808506,15692102598187739001,5449860184735415958,18031616785650843168,18095952297474762348,14808063168960305551,18003287685830153881,7201841978411396053,140396870212231820,14141479077115894852,17223836790030950966],[18068340617333437755,11312003311374164325,990192925663920333,1627123781166851142,14684142559936015947,4102754869474520966,11201759760883367635,7104261880154687267,1662641269094032596,3471746866096043087,17223836790030950966,6484183251661832039,6852799892628327372,4301099429811409147,8566844905246185636,1097494158696050491,15692102598187739001,13646498613066619660,4771789845668099116,6445954214067437701,14141479077115894852,3750439930725791025,7201841978411396053,12922148192688274227,4560146526699152877,8511737864852441844,17299978721726771610,13340751444307201866,8863346544623578893,13027689870767713939,16609137733952262762,11684705487012407227,11196821089257149774,11264395591110193456,8297015715799006244,12741076678082295759,1009114585722052052,15354358358546908017,17740496701763775226,17952673493105230490,14808063168960305551,4421418468606442725,1809704172129195322,5014806436727666175,9563008199132558110,2025899804080897524,18095952297474762348,15817956847588799375,11210964267417873667,13739729101529293427,17351444026127625357,12494428953087324640,3214181946162459584,12709602171929957216,13446205009526451196,16780039553038473906,2834866505092039323,13588160462734303101,5888633415105234509,5486211022469996717,14950060858756810933,9135110142507605216,15433707377961038695,18188505856445531484,8887924609778270360,13602951545837529973,15930698052919171086,9808637865669223270,16306737306999003555,14516211820212764316,13670206802546093234,2871608309888343463,14228923746783465609,5449860184735415958,1508440849951861669,7480253252288032958,14496934933990319842,16671141883125519098,7104088139635280554,876963243827503916,14139765080256493579,12867379765049504290,16304636129468583592,12185047359007423618,1491840484128555837,17753909951719808506,17131529656312051452,140396870212231820,18351415092709164412,8269257328703012432,7855094781869605606,2185437945364824599,18003287685830153881,7651693425519490419,17397123104674848450,8460565235419043665,16785043320296790229,17285637344898461972,4328376070224119511,17735408893002232096,2723198387862533596,6194305264313730032,18031616785650843168,14030142873804552388,17036604842139972912,12276520439585231336,18081743490344004315,12234961922142600898,13916027199283115943,5954536408321808728,10080296672372912698,4807760870555738383],[13446205009526451196,4301099429811409147,8269257328703012432,12709602171929957216,13602951545837529973,17952673493105230490,15817956847588799375,17299978721726771610,11684705487012407227,13588160462734303101,18188505856445531484,12741076678082295759,17223836790030950966,1097494158696050491,9135110142507605216,17036604842139972912,140396870212231820,6445954214067437701,13739729101529293427,2185437945364824599,1009114585722052052,13670206802546093234,14950060858756810933,16306737306999003555,14228923746783465609,17753909951719808506,4560146526699152877,1809704172129195322,12867379765049504290,16780039553038473906,5888633415105234509,4421418468606442725,2723198387862533596,11196821089257149774,12276520439585231336,12922148192688274227,16671141883125519098,17397123104674848450,14030142873804552388,11201759760883367635,17735408893002232096,6852799892628327372,18068340617333437755,14496934933990319842,16304636129468583592,1627123781166851142,4328376070224119511,2025899804080897524,18351415092709164412,6484183251661832039,7104088139635280554,13340751444307201866,5014806436727666175,8511737864852441844,9563008199132558110,876963243827503916,1491840484128555837,18003287685830153881,18031616785650843168,1662641269094032596,10080296672372912698,3471746866096043087,6194305264313730032,7104261880154687267,11210964267417873667,4102754869474520966,15354358358546908017,13027689870767713939,8566844905246185636,4807760870555738383,16785043320296790229,13916027199283115943,16609137733952262762,4771789845668099116,17351444026127625357,13646498613066619660,14139765080256493579,15433707377961038695,17740496701763775226,15692102598187739001,5486211022469996717,14141479077115894852,18081743490344004315,12234961922142600898,8297015715799006244,14684142559936015947,5954536408321808728,12185047359007423618,18095952297474762348,14516211820212764316,8460565235419043665,17131529656312051452,990192925663920333,5449860184735415958,3750439930725791025,17696051535511578981,7201841978411396053,15930698052919171086,1508440849951861669,11312003311374164325,2871608309888343463,11264395591110193456,17285637344898461972,12494428953087324640,7480253252288032958,8863346544623578893,14808063168960305551,3214181946162459584,2834866505092039323,9808637865669223270,8887924609778270360,7855094781869605606,7651693425519490419],[],[],[],[16780039553038473906,17696051535511578981],[9071802450034150503,17696051535511578981,16780039553038473906],[16780039553038473906,9071802450034150503,17696051535511578981,16785043320296790229],[9071802450034150503,16780039553038473906,17696051535511578981,16785043320296790229,9338394475379815879],[9071802450034150503,16785043320296790229,16780039553038473906,17696051535511578981],[17696051535511578981,16780039553038473906],[],[6503655938154160104],[],[7104088139635280554],[16785043320296790229],[],[],[16780039553038473906],[17696051535511578981,16780039553038473906,7104088139635280554],[16780039553038473906,9338394475379815879,7104088139635280554,17696051535511578981,16785043320296790229,9071802450034150503],[16785043320296790229,16780039553038473906,9071802450034150503,9338394475379815879,17696051535511578981,7977952035097419157,7104088139635280554],[17696051535511578981,16785043320296790229,7104088139635280554,16780039553038473906],[16785043320296790229,7104088139635280554,16780039553038473906],[16780039553038473906,7104088139635280554],[16780039553038473906],[],[16780039553038473906],[16780039553038473906,7104088139635280554],[7104088139635280554,16780039553038473906,9071802450034150503,17696051535511578981,9338394475379815879,16785043320296790229],[9338394475379815879,9071802450034150503,7977952035097419157,17696051535511578981,16785043320296790229,16780039553038473906,7104088139635280554],[],[],[16780039553038473906],[17696051535511578981,16780039553038473906],[],[1009114585722052052],[]],"selection_redo_history":[]}}},"collapsed":[],"name":"painted-dreams.graphite","commit_hash":"3a591dac6a53454813c8df6ceed5b44b91d1e816","document_ptz":{"pan":[-768.2748744089959,-384.56142660725646],"tilt":0.0,"zoom":1.0},"document_mode":"DesignMode","view_mode":"Normal","overlays_visible":true,"rulers_visible":true,"graph_view_overlay_open":false,"snapping_state":{"snapping_enabled":true,"grid_snapping":false,"bounds":{"edges":true,"corners":true,"edge_midpoints":false,"centers":true,"align":true,"distribute":true},"nodes":{"paths":true,"path_intersections":true,"anchors":true,"line_midpoints":true,"normals":true,"tangents":true,"align":false},"grid":{"origin":[0.0,0.0],"grid_type":{"Rectangle":{"spacing":[1.0,1.0]}},"grid_color":{"red":0.6038274,"green":0.6038274,"blue":0.6038274,"alpha":1.0},"dot_display":false},"tolerance":8.0,"artboards":true}} \ No newline at end of file diff --git a/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs b/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs index c967bb5f2c3..08b56025af0 100644 --- a/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs +++ b/editor/src/messages/portfolio/document/node_graph/document_node_definitions.rs @@ -2159,12 +2159,13 @@ fn static_nodes() -> Vec { DocumentNode { inputs: vec![NodeInput::network(concrete!(VectorData), 0), NodeInput::network(concrete!(vector::style::Fill), 1)], implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_std::vector::BooleanOperationNode")), + manual_composition: Some(generic!(T)), ..Default::default() }, DocumentNode { inputs: vec![NodeInput::node(NodeId(0), 0)], implementation: DocumentNodeImplementation::ProtoNode(ProtoNodeIdentifier::new("graphene_core::memo::ImpureMemoNode")), - manual_composition: Some(concrete!(Footprint)), + manual_composition: Some(generic!(T)), ..Default::default() }, ] diff --git a/editor/src/messages/portfolio/document/node_graph/node_properties.rs b/editor/src/messages/portfolio/document/node_graph/node_properties.rs index e500fc44bac..d47a2ee917a 100644 --- a/editor/src/messages/portfolio/document/node_graph/node_properties.rs +++ b/editor/src/messages/portfolio/document/node_graph/node_properties.rs @@ -2268,17 +2268,10 @@ pub(crate) fn generate_node_properties(document_node: &DocumentNode, node_id: No } pub(crate) fn boolean_operation_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec { - let group_of_paths_index = 0; let operation_index = 1; - - let mut widgets = start_widgets(document_node, node_id, group_of_paths_index, "Group of Paths", FrontendGraphDataType::Graphic, true); - - widgets.push(Separator::new(SeparatorType::Unrelated).widget_holder()); - widgets.push(TextLabel::new("The output of a layer stack, which contains all elements to operate on").widget_holder()); - let operation = boolean_operation_radio_buttons(document_node, node_id, operation_index, "Operation", true); - vec![LayoutGroup::Row { widgets }, operation] + vec![operation] } pub(crate) fn copy_to_points_properties(document_node: &DocumentNode, node_id: NodeId, _context: &mut NodePropertiesContext) -> Vec { diff --git a/node-graph/gstd/src/vector.rs b/node-graph/gstd/src/vector.rs index eb66a223246..4623b8c6b86 100644 --- a/node-graph/gstd/src/vector.rs +++ b/node-graph/gstd/src/vector.rs @@ -1,6 +1,4 @@ -use std::ops::{Div, Mul}; - -use crate::Node; +use crate::transform::Footprint; use bezier_rs::{ManipulatorGroup, Subpath}; use graphene_core::transform::Transform; @@ -10,13 +8,16 @@ use graphene_core::{Color, GraphicElement, GraphicGroup}; use glam::{DAffine2, DVec2}; use path_bool::PathBooleanOperation; +use std::ops::{Div, Mul}; -pub struct BooleanOperationNode { - operation: BooleanOp, -} +#[node_macro::node(category(""))] +async fn boolean_operation( + #[implementations((), Footprint)] footprint: F, + #[implementations(((), GraphicGroup), (Footprint, GraphicGroup))] group_of_paths: impl Node, + operation: BooleanOperation, +) -> VectorData { + let group_of_paths = group_of_paths.eval(footprint).await; -#[node_macro::old_node_fn(BooleanOperationNode)] -fn boolean_operation(group_of_paths: GraphicGroup, operation: BooleanOperation) -> VectorData { fn vector_from_image(image_frame: T) -> VectorData { let corner1 = DVec2::ZERO; let corner2 = DVec2::new(1., 1.); @@ -313,7 +314,7 @@ fn path_bool(a: Path, b: Path, op: PathBooleanOperation) -> Vec { Err(e) => { let a_path = path_bool::path_to_path_data(&a, 0.001); let b_path = path_bool::path_to_path_data(&b, 0.001); - log::error!("Boolean error {e:?} encontered while processing {a_path}\n {op:?}\n {b_path}"); + log::error!("Boolean error {e:?} encountered while processing {a_path}\n {op:?}\n {b_path}"); Vec::new() } } diff --git a/node-graph/interpreted-executor/src/node_registry.rs b/node-graph/interpreted-executor/src/node_registry.rs index 0124ea21ecf..bbfcd182ece 100644 --- a/node-graph/interpreted-executor/src/node_registry.rs +++ b/node-graph/interpreted-executor/src/node_registry.rs @@ -360,7 +360,6 @@ fn node_registry() -> HashMap, input: Footprint, fn_params: [Footprint => TextureFrame]), register_node!(graphene_core::structural::ConsNode<_, _>, input: Image, params: [&str]), register_node!(graphene_std::raster::ImageFrameNode<_, _>, input: Image, params: [DAffine2]), - register_node!(graphene_std::vector::BooleanOperationNode<_>, input: GraphicGroup, fn_params: [() => graphene_core::vector::misc::BooleanOperation]), ]; let mut map: HashMap> = HashMap::new(); for (id, entry) in graphene_core::registry::NODE_REGISTRY.lock().unwrap().iter() { From dd20465e19e278877ca682ae3a33ee6a7a557514 Mon Sep 17 00:00:00 2001 From: Keavon Chambers Date: Fri, 20 Sep 2024 16:42:34 -0700 Subject: [PATCH 39/39] Close subpaths with Z --- .../document/graph_operation/utility_types.rs | 6 +- libraries/path-bool/src/lib.rs | 19 ++++++- libraries/path-bool/src/path.rs | 55 +++++++++++-------- libraries/path-bool/src/path_boolean.rs | 2 +- 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs index a49238b1c77..01d710758ad 100644 --- a/editor/src/messages/portfolio/document/graph_operation/utility_types.rs +++ b/editor/src/messages/portfolio/document/graph_operation/utility_types.rs @@ -145,15 +145,15 @@ impl<'a> ModifyInputsContext<'a> { } pub fn insert_vector_data(&mut self, subpaths: Vec>, layer: LayerNodeIdentifier) { - let shape = resolve_document_node_type("Shape") - .expect("Shape node does not exist") + let path = resolve_document_node_type("Path") + .expect("Path node does not exist") .node_template_input_override([Some(NodeInput::value(TaggedValue::Subpaths(subpaths), false))]); let transform = resolve_document_node_type("Transform").expect("Transform node does not exist").default_node_template(); let fill = resolve_document_node_type("Fill").expect("Fill node does not exist").default_node_template(); let stroke = resolve_document_node_type("Stroke").expect("Stroke node does not exist").default_node_template(); let shape_id = NodeId(generate_uuid()); - self.network_interface.insert_node(shape_id, shape, &[]); + self.network_interface.insert_node(shape_id, path, &[]); self.network_interface.move_node_to_chain_start(&shape_id, layer, &[]); let transform_id = NodeId(generate_uuid()); diff --git a/libraries/path-bool/src/lib.rs b/libraries/path-bool/src/lib.rs index 748a3867ce3..6dd027199ac 100644 --- a/libraries/path-bool/src/lib.rs +++ b/libraries/path-bool/src/lib.rs @@ -92,7 +92,7 @@ mod test { #[test] fn simple_07() { let a = path_from_path_data("M 37.671452,24 C 52.46888,31.142429 42.887716,37.358779 24,37.671452 16.4505,37.796429 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 6.871598,10.389295 13.671452,13.671452 z", - ); + ); let b = path_from_path_data("M 37.671452,24 C 33.698699,53.634887 29.50935,49.018306 24,37.671452 20.7021,30.879219 10.328548,31.550534 10.328548,24 c 0,-7.550534 6.120918,-13.671452 13.671452,-13.671452 7.550534,0 14.674677,6.187863 13.671452,13.671452 z"); let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); @@ -235,6 +235,23 @@ mod test { let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Difference).unwrap(); + // Add assertions here based on expected results + assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); + dbg!(path_to_path_data(&result[0], 0.001)); + // Add more specific assertions about the resulting path if needed + assert!(!result[0].is_empty()); + } + #[test] + fn blobs() { + let a = path_from_path_data( + "m658.03348 118.4966c7.85928 4.83645 114.84582 7.8304 127.89652 6.52531 20.97932-2.09799 43.06722-24.79623 43.06722-24.79623 0 0-96.43723-26.02101-108.97311-28.54836-20.22849-4.07832-78.95651 36.37872-61.99063 46.81928z + m658.03348 115.88649c40.45718-30.01653 82.213-45.24662 103.10032-31.32163 7.83037 5.2203-3.58567 22.51547 13.05064 39.152 3.91519 3.9152-129.49099 2.06705-116.15096-7.83037z + m680.87214 56.0165c2.20775-9.60391 62.6449-29.65403 101.79518-30.01652 17.61846-0.16312 119.39605 40.30737 130.50668 54.8128 5.8045 7.57806-76.88558 29.08762-91.35464 31.32162-15.28899 2.36056-144.20983-41.92525-140.94722-56.1179z" + ); + let b = path_from_path_data(""); + + let result = path_boolean(&a, FillRule::NonZero, &b, FillRule::NonZero, PathBooleanOperation::Union).unwrap(); + // Add assertions here based on expected results assert_eq!(result.len(), 1, "Expected 1 resulting path for Union operation"); dbg!(path_to_path_data(&result[0], 0.001)); diff --git a/libraries/path-bool/src/path.rs b/libraries/path-bool/src/path.rs index f0bd19ab47c..7c71bb82cab 100644 --- a/libraries/path-bool/src/path.rs +++ b/libraries/path-bool/src/path.rs @@ -99,33 +99,40 @@ where { let mut last_point: Option = None; - segments.into_iter().flat_map(move |seg| { - let start = seg.start(); - let mut commands = Vec::new(); + segments + .into_iter() + .flat_map(move |seg| { + let start = seg.start(); + let mut commands = Vec::new(); - if last_point.map_or(true, |lp| !start.abs_diff_eq(lp, eps)) { - commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); - } + if last_point.map_or(true, |lp| !start.abs_diff_eq(lp, eps)) { + if last_point.is_some() { + commands.push(PathCommand::Absolute(AbsolutePathCommand::Z)); + } - match seg { - PathSegment::Line(_, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::L(*end))); - last_point = Some(*end); - } - PathSegment::Cubic(_, c1, c2, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::C(*c1, *c2, *end))); - last_point = Some(*end); - } - PathSegment::Quadratic(_, c, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::Q(*c, *end))); - last_point = Some(*end); + commands.push(PathCommand::Absolute(AbsolutePathCommand::M(start))); } - PathSegment::Arc(_, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { - commands.push(PathCommand::Absolute(AbsolutePathCommand::A(*rx, *ry, *x_axis_rotation, *large_arc_flag, *sweep_flag, *end))); - last_point = Some(*end); + + match seg { + PathSegment::Line(_, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::L(*end))); + last_point = Some(*end); + } + PathSegment::Cubic(_, c1, c2, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::C(*c1, *c2, *end))); + last_point = Some(*end); + } + PathSegment::Quadratic(_, c, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::Q(*c, *end))); + last_point = Some(*end); + } + PathSegment::Arc(_, rx, ry, x_axis_rotation, large_arc_flag, sweep_flag, end) => { + commands.push(PathCommand::Absolute(AbsolutePathCommand::A(*rx, *ry, *x_axis_rotation, *large_arc_flag, *sweep_flag, *end))); + last_point = Some(*end); + } } - } - commands - }) + commands + }) + .chain(std::iter::once(PathCommand::Absolute(AbsolutePathCommand::Z))) } diff --git a/libraries/path-bool/src/path_boolean.rs b/libraries/path-bool/src/path_boolean.rs index d795533976e..138bf0b6d82 100644 --- a/libraries/path-bool/src/path_boolean.rs +++ b/libraries/path-bool/src/path_boolean.rs @@ -1531,7 +1531,7 @@ pub enum BooleanError { /// ).unwrap(); /// /// let result_data = path_to_path_data(&result[0], 0.001); -/// assert_eq!(result_data, "M 36.666666666667,30.000000000000 L 23.333333333333,30.000000000000 L 30.000000000000,40.000000000000 L 36.666666666667,30.000000000000"); +/// assert_eq!(result_data, "M 36.666666666667,30.000000000000 L 23.333333333333,30.000000000000 L 30.000000000000,40.000000000000 L 36.666666666667,30.000000000000 Z"); /// ``` /// /// # Operations