This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

✨ Add a small, centered circle object, add (usize, usize).norm(), Region edge iterators

and maybe more? i dont remember

+361 -2146
+9
Cargo.lock
··· 2018 2018 checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 2019 2019 2020 2020 [[package]] 2021 + name = "playground" 2022 + version = "0.1.0" 2023 + dependencies = [ 2024 + "itertools 0.14.0", 2025 + "rand 0.9.2", 2026 + "shapemaker", 2027 + ] 2028 + 2029 + [[package]] 2021 2030 name = "png" 2022 2031 version = "0.17.16" 2023 2032 source = "registry+https://github.com/rust-lang/crates.io-index"
+1
Cargo.toml
··· 15 15 "examples/dna-analysis-machine", 16 16 "examples/schedule-hell", 17 17 "examples/specimen", 18 + "examples/playground", 18 19 "xtask", 19 20 ] 20 21
+15
bacon.toml
··· 1 + # This is a configuration file for the bacon tool 2 + # 3 + # Complete help on configuration: https://dystroy.org/bacon/config/ 4 + # 5 + # You may check the current default at 6 + # https://github.com/Canop/bacon/blob/main/defaults/default-bacon.toml 7 + 8 + default_job = "check" 9 + env.CARGO_TERM_COLOR = "always" 10 + 11 + 12 + [jobs.playground] 13 + workdir = "examples/playground" 14 + watch = ["examples/playground/src/**"] 15 + command = ["cargo", "run", "--"]
+1
examples/playground/.gitignore
··· 1 + # result.svg
+9
examples/playground/Cargo.toml
··· 1 + [package] 2 + name = "playground" 3 + version = "0.1.0" 4 + edition = "2024" 5 + 6 + [dependencies] 7 + itertools = "0.14.0" 8 + rand = "0.9.2" 9 + shapemaker = { version = "1.2.2", path = "../.." }
+39
examples/playground/result.svg
··· 1 + <svg height="470" viewBox="-10 -10 470 470" width="470" xmlns="http://www.w3.org/2000/svg"> 2 + <rect fill="#000000" height="470" width="470" x="-10" y="-10"/> 3 + <g class="layer" data-layer="connections"> 4 + <line data-object="connections--anon-0" stroke-width="3" x1="250" x2="100" y1="100" y2="150" style="stroke: #4fecec; fill: transparent;"/> 5 + <line data-object="connections--anon-1" stroke-width="3" x1="100" x2="0" y1="250" y2="250" style="stroke: #4fecec; fill: transparent;"/> 6 + <line data-object="connections--anon-10" stroke-width="3" x1="300" x2="350" y1="250" y2="200" style="stroke: #4fecec; fill: transparent;"/> 7 + <line data-object="connections--anon-2" stroke-width="3" x1="300" x2="400" y1="300" y2="150" style="stroke: #4fecec; fill: transparent;"/> 8 + <line data-object="connections--anon-3" stroke-width="3" x1="0" x2="0" y1="150" y2="250" style="stroke: #4fecec; fill: transparent;"/> 9 + <line data-object="connections--anon-4" stroke-width="3" x1="300" x2="250" y1="350" y2="400" style="stroke: #4fecec; fill: transparent;"/> 10 + <line data-object="connections--anon-5" stroke-width="3" x1="300" x2="400" y1="150" y2="150" style="stroke: #4fecec; fill: transparent;"/> 11 + <line data-object="connections--anon-6" stroke-width="3" x1="250" x2="400" y1="400" y2="300" style="stroke: #4fecec; fill: transparent;"/> 12 + <line data-object="connections--anon-7" stroke-width="3" x1="300" x2="400" y1="400" y2="350" style="stroke: #4fecec; fill: transparent;"/> 13 + <line data-object="connections--anon-8" stroke-width="3" x1="400" x2="400" y1="350" y2="300" style="stroke: #4fecec; fill: transparent;"/> 14 + <line data-object="connections--anon-9" stroke-width="3" x1="400" x2="400" y1="400" y2="250" style="stroke: #4fecec; fill: transparent;"/> 15 + </g><g class="layer" data-layer="dices"> 16 + <circle cx="200" cy="200" data-object="dices--anon-0" r="7" style="fill: #ffffff;"/> 17 + <circle cx="150" cy="0" data-object="dices--anon-1" r="7" style="fill: #ffffff;"/> 18 + <circle cx="400" cy="250" data-object="dices--anon-10" r="7" style="fill: #ffffff;"/> 19 + <circle cx="400" cy="150" data-object="dices--anon-11" r="7" style="fill: #ffffff;"/> 20 + <circle cx="150" cy="300" data-object="dices--anon-12" r="7" style="fill: #ffffff;"/> 21 + <circle cx="200" cy="350" data-object="dices--anon-13" r="7" style="fill: #ffffff;"/> 22 + <circle cx="250" cy="400" data-object="dices--anon-14" r="7" style="fill: #ffffff;"/> 23 + <circle cx="300" cy="300" data-object="dices--anon-15" r="7" style="fill: #ffffff;"/> 24 + <circle cx="300" cy="350" data-object="dices--anon-16" r="7" style="fill: #ffffff;"/> 25 + <circle cx="300" cy="400" data-object="dices--anon-17" r="7" style="fill: #ffffff;"/> 26 + <circle cx="400" cy="400" data-object="dices--anon-18" r="7" style="fill: #ffffff;"/> 27 + <circle cx="400" cy="350" data-object="dices--anon-19" r="7" style="fill: #ffffff;"/> 28 + <circle cx="250" cy="100" data-object="dices--anon-2" r="7" style="fill: #ffffff;"/> 29 + <circle cx="400" cy="300" data-object="dices--anon-20" r="7" style="fill: #ffffff;"/> 30 + <circle cx="0" cy="150" data-object="dices--anon-3" r="7" style="fill: #ffffff;"/> 31 + <circle cx="0" cy="250" data-object="dices--anon-4" r="7" style="fill: #ffffff;"/> 32 + <circle cx="100" cy="250" data-object="dices--anon-5" r="7" style="fill: #ffffff;"/> 33 + <circle cx="100" cy="150" data-object="dices--anon-6" r="7" style="fill: #ffffff;"/> 34 + <circle cx="300" cy="150" data-object="dices--anon-7" r="7" style="fill: #ffffff;"/> 35 + <circle cx="300" cy="250" data-object="dices--anon-8" r="7" style="fill: #ffffff;"/> 36 + <circle cx="350" cy="200" data-object="dices--anon-9" r="7" style="fill: #ffffff;"/> 37 + </g><g class="layer" data-layer="root"/> 38 + <defs /> 39 + </svg>
+142
examples/playground/src/main.rs
··· 1 + use itertools::Itertools; 2 + use rand::{Rng, seq::IteratorRandom}; 3 + use shapemaker::{geometry::Norm, *}; 4 + 5 + const DICES_GRID: Grid = Grid(3, 3); 6 + 7 + fn main() { 8 + let mut rng = rand::rng(); 9 + let mut canvas = Canvas::new(9, 9); 10 + canvas.object_sizes.small_circle_radius = 7.0; 11 + canvas.colormap = ColorMapping { 12 + black: "#000000".into(), 13 + white: "#ffffff".into(), 14 + red: "#cf0a2b".into(), 15 + green: "#22e753".into(), 16 + blue: "#2734e6".into(), 17 + yellow: "#f8e21e".into(), 18 + orange: "#f05811".into(), 19 + purple: "#6a24ec".into(), 20 + brown: "#a05634".into(), 21 + pink: "#e92e76".into(), 22 + gray: "#81a0a8".into(), 23 + cyan: "#4fecec".into(), 24 + }; 25 + 26 + dice(&mut canvas, Point(1, 1), vec![(1, 1)]); 27 + dice(&mut canvas, Point(1, 0), vec![(0, 0), (2, 2)]); 28 + dice( 29 + &mut canvas, 30 + Point(0, 1), 31 + vec![(0, 0), (0, 2), (2, 2), (2, 0)], 32 + ); 33 + dice( 34 + &mut canvas, 35 + Point(2, 1), 36 + vec![(0, 0), (0, 2), (1, 1), (2, 2), (2, 0)], 37 + ); 38 + dice(&mut canvas, Point(1, 2), vec![(0, 0), (1, 1), (2, 2)]); 39 + dice( 40 + &mut canvas, 41 + Point(2, 2), 42 + vec![(0, 0), (0, 1), (0, 2), (2, 2), (2, 1), (2, 0)], 43 + ); 44 + 45 + let dice_dots: Vec<_> = canvas 46 + .layer("dices") 47 + .unwrap() 48 + .objects 49 + .iter() 50 + .map(|(_, dot)| dot.region().center()) 51 + .collect(); 52 + 53 + let connections = canvas.layer_or_empty("connections"); 54 + 55 + for &point in &dice_dots { 56 + if rng.random_bool(0.5) { 57 + continue; 58 + } 59 + 60 + // Find another point that's not connected yet 61 + let other_point = dice_dots 62 + .iter() 63 + .filter(|&&p| p != point) 64 + .filter(|&&p| p.distance_to(&point).norm() <= 5.0) 65 + .filter(|&&p| { 66 + !connections.has_object_that(|obj| match obj.object { 67 + Line(..) => obj.object.intersects_with(Line(point, p, 0.)), 68 + _ => false, 69 + }) 70 + }) 71 + .choose(&mut rng); 72 + 73 + if let Some(&other_point) = other_point { 74 + connections.add_anon( 75 + Line(point, other_point, 3.0).colored(Cyan), // .opacified(0.5) 76 + // .filtered(Filter::glow(10.0)), 77 + ); 78 + } 79 + } 80 + 81 + // let world = canvas.world_region.clone(); 82 + // let grid = canvas.layer_or_empty("grid"); 83 + // for (Point(x, _), _, _) in world.top_edge().tuples() { 84 + // grid.add_anon(Line(Point(x, 0), Point(x, 9), 1.0).colored(Gray)); 85 + // } 86 + // for (_, _, Point(_, y)) in world.left_edge().tuples() { 87 + // grid.add_anon(Line(Point(0, y), Point(9, y), 1.0).colored(Gray)); 88 + // } 89 + 90 + canvas 91 + .render_to_svg_file("result.svg") 92 + .expect("Could not write SVG"); 93 + } 94 + 95 + fn dice(canvas: &mut Canvas, place_at: Point, dots_at: Vec<impl Into<Point>>) { 96 + let Region { start, end } = Region::from_topleft( 97 + place_at.coords_from(&DICES_GRID), 98 + DICES_GRID.size(), 99 + ) 100 + .unwrap(); 101 + 102 + // canvas.layer_or_empty("dices").add_anon( 103 + // Rectangle(start, end).filled(Fill::Hatches( 104 + // Gray, 105 + // Angle::from_degrees(45.), 106 + // 0.25, 107 + // 10.0, 108 + // )), 109 + // ); 110 + 111 + for point in dots_at { 112 + let at = point 113 + .into() 114 + .translated_by(place_at.coords_from(&DICES_GRID)); 115 + 116 + canvas 117 + .layer_or_empty("dices") 118 + .add_anon(BigDot(at).colored(White)); 119 + } 120 + } 121 + 122 + struct Grid(usize, usize); 123 + 124 + trait GridSnappable { 125 + // fn snapped_to(&self, grid: &Grid) -> Self; 126 + // fn snap_to(&mut self, grid: &Grid); 127 + fn coords_from(&self, grid: &Grid) -> Self; 128 + } 129 + 130 + impl GridSnappable for Point { 131 + fn coords_from(&self, grid: &Grid) -> Self { 132 + let Self(x, y) = self; 133 + 134 + Self(x * grid.0, y * grid.1) 135 + } 136 + } 137 + 138 + impl Grid { 139 + fn size(&self) -> (usize, usize) { 140 + (self.0, self.1) 141 + } 142 + }
-2058
examples/schedule-hell-backbone/backbone.svg
··· 1 - <svg height="470" viewBox="-10 -10 820 470" width="820" xmlns="http://www.w3.org/2000/svg"> 2 - <rect fill="#000000" height="470" width="820" x="-10" y="-10"/> 3 - <g class="layer" data-layer="root"> 4 - <g data-object="--1723786008909752869" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 250"> 5 - <line stroke-width="1.5" x1="400" x2="400" y1="0" y2="450"/> 6 - </g> 7 - <g data-object="--17245860894068223212" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="725 250"> 8 - <line stroke-width="1.5" x1="700" x2="700" y1="0" y2="450"/> 9 - </g> 10 - <g data-object="--7150881981631990133" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 25"> 11 - <line stroke-width="1.5" x1="0" x2="800" y1="0" y2="0"/> 12 - </g> 13 - <g data-object="--889417272986601758" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="675 250"> 14 - <line stroke-width="1.5" x1="650" x2="650" y1="0" y2="450"/> 15 - </g> 16 - <g data-object="--11953091058669335650" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 475"> 17 - <line stroke-width="1.5" x1="0" x2="800" y1="450" y2="450"/> 18 - </g> 19 - <g data-object="--11694979289308611482" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="375 250"> 20 - <line stroke-width="1.5" x1="350" x2="350" y1="0" y2="450"/> 21 - </g> 22 - <g data-object="--1246600269110827277" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="525 250"> 23 - <line stroke-width="1.5" x1="500" x2="500" y1="0" y2="450"/> 24 - </g> 25 - <g data-object="--12888037199664182502" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="75 250"> 26 - <line stroke-width="1.5" x1="50" x2="50" y1="0" y2="450"/> 27 - </g> 28 - <g data-object="--2491249182539333245" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="475 250"> 29 - <line stroke-width="1.5" x1="450" x2="450" y1="0" y2="450"/> 30 - </g> 31 - <g data-object="--15776983015486519707" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="325 250"> 32 - <line stroke-width="1.5" x1="300" x2="300" y1="0" y2="450"/> 33 - </g> 34 - <g data-object="--16802070992052716112" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 75"> 35 - <line stroke-width="1.5" x1="0" x2="800" y1="50" y2="50"/> 36 - </g> 37 - <g data-object="--3856778263945765087" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 175"> 38 - <line stroke-width="1.5" x1="0" x2="800" y1="150" y2="150"/> 39 - </g> 40 - <g data-object="--8831188579387803212" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="125 250"> 41 - <line stroke-width="1.5" x1="100" x2="100" y1="0" y2="450"/> 42 - </g> 43 - <g data-object="--11557417457942005104" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="625 250"> 44 - <line stroke-width="1.5" x1="600" x2="600" y1="0" y2="450"/> 45 - </g> 46 - <g data-object="--13259630562227921468" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="725 250"> 47 - <line stroke-width="1.5" x1="700" x2="700" y1="0" y2="450"/> 48 - </g> 49 - <g data-object="--11311463389219743240" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="525 250"> 50 - <line stroke-width="1.5" x1="500" x2="500" y1="0" y2="450"/> 51 - </g> 52 - <g data-object="--7478540029959621995" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="275 250"> 53 - <line stroke-width="1.5" x1="250" x2="250" y1="0" y2="450"/> 54 - </g> 55 - <g data-object="--1345572814813813864" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 25"> 56 - <line stroke-width="1.5" x1="0" x2="800" y1="0" y2="0"/> 57 - </g> 58 - <g data-object="--11153756761330152729" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 125"> 59 - <line stroke-width="1.5" x1="0" x2="800" y1="100" y2="100"/> 60 - </g> 61 - <g data-object="--7325632810727352368" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="275 250"> 62 - <line stroke-width="1.5" x1="250" x2="250" y1="0" y2="450"/> 63 - </g> 64 - <g data-object="--11475743603636251386" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="25 250"> 65 - <line stroke-width="1.5" x1="0" x2="0" y1="0" y2="450"/> 66 - </g> 67 - <g data-object="--1158494777154746382" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="825 250"> 68 - <line stroke-width="1.5" x1="800" x2="800" y1="0" y2="450"/> 69 - </g> 70 - <g data-object="--11139425720125577494" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="175 250"> 71 - <line stroke-width="1.5" x1="150" x2="150" y1="0" y2="450"/> 72 - </g> 73 - <g data-object="--7006380435768071760" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="675 250"> 74 - <line stroke-width="1.5" x1="650" x2="650" y1="0" y2="450"/> 75 - </g> 76 - <g data-object="--2295223418967521065" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="775 250"> 77 - <line stroke-width="1.5" x1="750" x2="750" y1="0" y2="450"/> 78 - </g> 79 - <g data-object="--7946426102433730002" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="625 250"> 80 - <line stroke-width="1.5" x1="600" x2="600" y1="0" y2="450"/> 81 - </g> 82 - <g data-object="--11617272696083394033" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="825 250"> 83 - <line stroke-width="1.5" x1="800" x2="800" y1="0" y2="450"/> 84 - </g> 85 - <g data-object="--354499047995339095" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 125"> 86 - <line stroke-width="1.5" x1="0" x2="800" y1="100" y2="100"/> 87 - </g> 88 - <g data-object="--8200332653767158550" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 175"> 89 - <line stroke-width="1.5" x1="0" x2="800" y1="150" y2="150"/> 90 - </g> 91 - <g data-object="--14699201793301608089" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 275"> 92 - <line stroke-width="1.5" x1="0" x2="800" y1="250" y2="250"/> 93 - </g> 94 - <g data-object="--11443818918147301271" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 275"> 95 - <line stroke-width="1.5" x1="0" x2="800" y1="250" y2="250"/> 96 - </g> 97 - <g data-object="--10823283783051669451" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 325"> 98 - <line stroke-width="1.5" x1="0" x2="800" y1="300" y2="300"/> 99 - </g> 100 - <g data-object="--17925228907683934875" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 375"> 101 - <line stroke-width="1.5" x1="0" x2="800" y1="350" y2="350"/> 102 - </g> 103 - <g data-object="--1852782724550385473" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="375 250"> 104 - <line stroke-width="1.5" x1="350" x2="350" y1="0" y2="450"/> 105 - </g> 106 - <g data-object="--14721966396410923771" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 375"> 107 - <line stroke-width="1.5" x1="0" x2="800" y1="350" y2="350"/> 108 - </g> 109 - <g data-object="--17699623565178929188" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 425"> 110 - <line stroke-width="1.5" x1="0" x2="800" y1="400" y2="400"/> 111 - </g> 112 - <g data-object="--11259610172045108977" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="325 250"> 113 - <line stroke-width="1.5" x1="300" x2="300" y1="0" y2="450"/> 114 - </g> 115 - <g data-object="--11706356887872730970" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="125 250"> 116 - <line stroke-width="1.5" x1="100" x2="100" y1="0" y2="450"/> 117 - </g> 118 - <g data-object="--9805953379122060922" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="575 250"> 119 - <line stroke-width="1.5" x1="550" x2="550" y1="0" y2="450"/> 120 - </g> 121 - <g data-object="--10874105105014793659" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 425"> 122 - <line stroke-width="1.5" x1="0" x2="800" y1="400" y2="400"/> 123 - </g> 124 - <g data-object="--15122542209440633166" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="25 250"> 125 - <line stroke-width="1.5" x1="0" x2="0" y1="0" y2="450"/> 126 - </g> 127 - <g data-object="--4917687913241232180" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 75"> 128 - <line stroke-width="1.5" x1="0" x2="800" y1="50" y2="50"/> 129 - </g> 130 - <g data-object="--17196146935923451015" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 250"> 131 - <line stroke-width="1.5" x1="400" x2="400" y1="0" y2="450"/> 132 - </g> 133 - <g data-object="--16804000713566344765" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="575 250"> 134 - <line stroke-width="1.5" x1="550" x2="550" y1="0" y2="450"/> 135 - </g> 136 - <g data-object="--6135665695456865196" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 325"> 137 - <line stroke-width="1.5" x1="0" x2="800" y1="300" y2="300"/> 138 - </g> 139 - <g data-object="--7606533131508489949" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="475 250"> 140 - <line stroke-width="1.5" x1="450" x2="450" y1="0" y2="450"/> 141 - </g> 142 - <g data-object="--14077980751795438057" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="775 250"> 143 - <line stroke-width="1.5" x1="750" x2="750" y1="0" y2="450"/> 144 - </g> 145 - <g data-object="--8277835271650984848" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 225"> 146 - <line stroke-width="1.5" x1="0" x2="800" y1="200" y2="200"/> 147 - </g> 148 - <g data-object="--14992955748040155301" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="225 250"> 149 - <line stroke-width="1.5" x1="200" x2="200" y1="0" y2="450"/> 150 - </g> 151 - <g data-object="--17917341269771658556" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 475"> 152 - <line stroke-width="1.5" x1="0" x2="800" y1="450" y2="450"/> 153 - </g> 154 - <g data-object="--14613343646539387347" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="225 250"> 155 - <line stroke-width="1.5" x1="200" x2="200" y1="0" y2="450"/> 156 - </g> 157 - <g data-object="--9373879993061866737" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="175 250"> 158 - <line stroke-width="1.5" x1="150" x2="150" y1="0" y2="450"/> 159 - </g> 160 - <g data-object="--12500908085060409049" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="75 250"> 161 - <line stroke-width="1.5" x1="50" x2="50" y1="0" y2="450"/> 162 - </g> 163 - <g data-object="--8564938333483667354" style="stroke: #FFFFFF; fill: transparent;transform-box: fill-box;" transform-origin="425 225"> 164 - <line stroke-width="1.5" x1="0" x2="800" y1="200" y2="200"/> 165 - </g> 166 - </g> 167 - <g class="layer" data-layer="occlusions"> 168 - <g data-object="--13863316562381474363" style="fill: #000000;transform-box: fill-box;" transform-origin="775 325"> 169 - <circle cx="750" cy="300" r="7.5"/> 170 - </g> 171 - <g data-object="--2771105045017926188" style="fill: #000000;transform-box: fill-box;" transform-origin="375 25"> 172 - <circle cx="350" cy="0" r="7.5"/> 173 - </g> 174 - <g data-object="--7328782114385118707" style="fill: #000000;transform-box: fill-box;" transform-origin="275 225"> 175 - <circle cx="250" cy="200" r="7.5"/> 176 - </g> 177 - <g data-object="--7716138076371543314" style="fill: #000000;transform-box: fill-box;" transform-origin="125 225"> 178 - <circle cx="100" cy="200" r="7.5"/> 179 - </g> 180 - <g data-object="--11538771263840651777" style="fill: #000000;transform-box: fill-box;" transform-origin="575 25"> 181 - <circle cx="550" cy="0" r="7.5"/> 182 - </g> 183 - <g data-object="--25808385513080872" style="fill: #000000;transform-box: fill-box;" transform-origin="825 225"> 184 - <circle cx="800" cy="200" r="7.5"/> 185 - </g> 186 - <g data-object="--17292381458923578564" style="fill: #000000;transform-box: fill-box;" transform-origin="225 275"> 187 - <circle cx="200" cy="250" r="7.5"/> 188 - </g> 189 - <g data-object="--7313095470071210654" style="fill: #000000;transform-box: fill-box;" transform-origin="475 225"> 190 - <circle cx="450" cy="200" r="7.5"/> 191 - </g> 192 - <g data-object="--11662071223921008768" style="fill: #000000;transform-box: fill-box;" transform-origin="375 125"> 193 - <circle cx="350" cy="100" r="7.5"/> 194 - </g> 195 - <g data-object="--11052834054624066152" style="fill: #000000;transform-box: fill-box;" transform-origin="725 375"> 196 - <circle cx="700" cy="350" r="7.5"/> 197 - </g> 198 - <g data-object="--843859429941470777" style="fill: #000000;transform-box: fill-box;" transform-origin="25 25"> 199 - <circle cx="0" cy="0" r="7.5"/> 200 - </g> 201 - <g data-object="--2693103460349804462" style="fill: #000000;transform-box: fill-box;" transform-origin="125 175"> 202 - <circle cx="100" cy="150" r="7.5"/> 203 - </g> 204 - <g data-object="--12759927908328281181" style="fill: #000000;transform-box: fill-box;" transform-origin="75 375"> 205 - <circle cx="50" cy="350" r="7.5"/> 206 - </g> 207 - <g data-object="--12015361754047988706" style="fill: #000000;transform-box: fill-box;" transform-origin="325 475"> 208 - <circle cx="300" cy="450" r="7.5"/> 209 - </g> 210 - <g data-object="--18346632825997089954" style="fill: #000000;transform-box: fill-box;" transform-origin="425 175"> 211 - <circle cx="400" cy="150" r="7.5"/> 212 - </g> 213 - <g data-object="--4743621234864136765" style="fill: #000000;transform-box: fill-box;" transform-origin="225 175"> 214 - <circle cx="200" cy="150" r="7.5"/> 215 - </g> 216 - <g data-object="--917859874144420054" style="fill: #000000;transform-box: fill-box;" transform-origin="725 225"> 217 - <circle cx="700" cy="200" r="7.5"/> 218 - </g> 219 - <g data-object="--16549685226777403968" style="fill: #000000;transform-box: fill-box;" transform-origin="275 275"> 220 - <circle cx="250" cy="250" r="7.5"/> 221 - </g> 222 - <g data-object="--2287367483310498908" style="fill: #000000;transform-box: fill-box;" transform-origin="75 75"> 223 - <circle cx="50" cy="50" r="7.5"/> 224 - </g> 225 - <g data-object="--1365931281285139217" style="fill: #000000;transform-box: fill-box;" transform-origin="225 125"> 226 - <circle cx="200" cy="100" r="7.5"/> 227 - </g> 228 - <g data-object="--14544688171461583963" style="fill: #000000;transform-box: fill-box;" transform-origin="375 175"> 229 - <circle cx="350" cy="150" r="7.5"/> 230 - </g> 231 - <g data-object="--14813145546559438723" style="fill: #000000;transform-box: fill-box;" transform-origin="25 225"> 232 - <circle cx="0" cy="200" r="7.5"/> 233 - </g> 234 - <g data-object="--9374046330640626439" style="fill: #000000;transform-box: fill-box;" transform-origin="675 275"> 235 - <circle cx="650" cy="250" r="7.5"/> 236 - </g> 237 - <g data-object="--12819823539417923633" style="fill: #000000;transform-box: fill-box;" transform-origin="475 325"> 238 - <circle cx="450" cy="300" r="7.5"/> 239 - </g> 240 - <g data-object="--12907707101812348395" style="fill: #000000;transform-box: fill-box;" transform-origin="325 425"> 241 - <circle cx="300" cy="400" r="7.5"/> 242 - </g> 243 - <g data-object="--6994406996387991148" style="fill: #000000;transform-box: fill-box;" transform-origin="525 425"> 244 - <circle cx="500" cy="400" r="7.5"/> 245 - </g> 246 - <g data-object="--11296221816215929968" style="fill: #000000;transform-box: fill-box;" transform-origin="825 275"> 247 - <circle cx="800" cy="250" r="7.5"/> 248 - </g> 249 - <g data-object="--10940628286966330704" style="fill: #000000;transform-box: fill-box;" transform-origin="75 325"> 250 - <circle cx="50" cy="300" r="7.5"/> 251 - </g> 252 - <g data-object="--6176755482756262972" style="fill: #000000;transform-box: fill-box;" transform-origin="575 475"> 253 - <circle cx="550" cy="450" r="7.5"/> 254 - </g> 255 - <g data-object="--18267304672935740326" style="fill: #000000;transform-box: fill-box;" transform-origin="675 475"> 256 - <circle cx="650" cy="450" r="7.5"/> 257 - </g> 258 - <g data-object="--11952041955564138744" style="fill: #000000;transform-box: fill-box;" transform-origin="25 175"> 259 - <circle cx="0" cy="150" r="7.5"/> 260 - </g> 261 - <g data-object="--8553333716402982289" style="fill: #000000;transform-box: fill-box;" transform-origin="275 25"> 262 - <circle cx="250" cy="0" r="7.5"/> 263 - </g> 264 - <g data-object="--4143013047783588655" style="fill: #000000;transform-box: fill-box;" transform-origin="575 175"> 265 - <circle cx="550" cy="150" r="7.5"/> 266 - </g> 267 - <g data-object="--7286395016623537531" style="fill: #000000;transform-box: fill-box;" transform-origin="625 325"> 268 - <circle cx="600" cy="300" r="7.5"/> 269 - </g> 270 - <g data-object="--5866688492091497079" style="fill: #000000;transform-box: fill-box;" transform-origin="325 375"> 271 - <circle cx="300" cy="350" r="7.5"/> 272 - </g> 273 - <g data-object="--4959887741163013188" style="fill: #000000;transform-box: fill-box;" transform-origin="475 275"> 274 - <circle cx="450" cy="250" r="7.5"/> 275 - </g> 276 - <g data-object="--17433953628724476100" style="fill: #000000;transform-box: fill-box;" transform-origin="825 375"> 277 - <circle cx="800" cy="350" r="7.5"/> 278 - </g> 279 - <g data-object="--12256612426985556625" style="fill: #000000;transform-box: fill-box;" transform-origin="275 375"> 280 - <circle cx="250" cy="350" r="7.5"/> 281 - </g> 282 - <g data-object="--12791313588171364999" style="fill: #000000;transform-box: fill-box;" transform-origin="725 425"> 283 - <circle cx="700" cy="400" r="7.5"/> 284 - </g> 285 - <g data-object="--12590692984064085175" style="fill: #000000;transform-box: fill-box;" transform-origin="525 75"> 286 - <circle cx="500" cy="50" r="7.5"/> 287 - </g> 288 - <g data-object="--4727781839220615938" style="fill: #000000;transform-box: fill-box;" transform-origin="625 25"> 289 - <circle cx="600" cy="0" r="7.5"/> 290 - </g> 291 - <g data-object="--17822490030762284275" style="fill: #000000;transform-box: fill-box;" transform-origin="225 25"> 292 - <circle cx="200" cy="0" r="7.5"/> 293 - </g> 294 - <g data-object="--8409272603040169414" style="fill: #000000;transform-box: fill-box;" transform-origin="325 225"> 295 - <circle cx="300" cy="200" r="7.5"/> 296 - </g> 297 - <g data-object="--10160414240712233543" style="fill: #000000;transform-box: fill-box;" transform-origin="575 375"> 298 - <circle cx="550" cy="350" r="7.5"/> 299 - </g> 300 - <g data-object="--267239338320825496" style="fill: #000000;transform-box: fill-box;" transform-origin="675 125"> 301 - <circle cx="650" cy="100" r="7.5"/> 302 - </g> 303 - <g data-object="--7935238130953184126" style="fill: #000000;transform-box: fill-box;" transform-origin="625 125"> 304 - <circle cx="600" cy="100" r="7.5"/> 305 - </g> 306 - <g data-object="--14058235067400379790" style="fill: #000000;transform-box: fill-box;" transform-origin="775 375"> 307 - <circle cx="750" cy="350" r="7.5"/> 308 - </g> 309 - <g data-object="--5625946474355967282" style="fill: #000000;transform-box: fill-box;" transform-origin="75 475"> 310 - <circle cx="50" cy="450" r="7.5"/> 311 - </g> 312 - <g data-object="--14415087942921658920" style="fill: #000000;transform-box: fill-box;" transform-origin="675 225"> 313 - <circle cx="650" cy="200" r="7.5"/> 314 - </g> 315 - <g data-object="--4371562608307594220" style="fill: #000000;transform-box: fill-box;" transform-origin="825 175"> 316 - <circle cx="800" cy="150" r="7.5"/> 317 - </g> 318 - <g data-object="--16941781078579692576" style="fill: #000000;transform-box: fill-box;" transform-origin="575 275"> 319 - <circle cx="550" cy="250" r="7.5"/> 320 - </g> 321 - <g data-object="--13759217597504353522" style="fill: #000000;transform-box: fill-box;" transform-origin="25 475"> 322 - <circle cx="0" cy="450" r="7.5"/> 323 - </g> 324 - <g data-object="--15074091590740396117" style="fill: #000000;transform-box: fill-box;" transform-origin="625 275"> 325 - <circle cx="600" cy="250" r="7.5"/> 326 - </g> 327 - <g data-object="--7921627599928311581" style="fill: #000000;transform-box: fill-box;" transform-origin="325 325"> 328 - <circle cx="300" cy="300" r="7.5"/> 329 - </g> 330 - <g data-object="--2709487841891779661" style="fill: #000000;transform-box: fill-box;" transform-origin="675 75"> 331 - <circle cx="650" cy="50" r="7.5"/> 332 - </g> 333 - <g data-object="--7975233728403321355" style="fill: #000000;transform-box: fill-box;" transform-origin="325 25"> 334 - <circle cx="300" cy="0" r="7.5"/> 335 - </g> 336 - <g data-object="--16657943626641884437" style="fill: #000000;transform-box: fill-box;" transform-origin="625 375"> 337 - <circle cx="600" cy="350" r="7.5"/> 338 - </g> 339 - <g data-object="--3845215096944061602" style="fill: #000000;transform-box: fill-box;" transform-origin="625 75"> 340 - <circle cx="600" cy="50" r="7.5"/> 341 - </g> 342 - <g data-object="--11301385440752054765" style="fill: #000000;transform-box: fill-box;" transform-origin="175 275"> 343 - <circle cx="150" cy="250" r="7.5"/> 344 - </g> 345 - <g data-object="--3592560592332764832" style="fill: #000000;transform-box: fill-box;" transform-origin="125 25"> 346 - <circle cx="100" cy="0" r="7.5"/> 347 - </g> 348 - <g data-object="--5176675000364091213" style="fill: #000000;transform-box: fill-box;" transform-origin="275 175"> 349 - <circle cx="250" cy="150" r="7.5"/> 350 - </g> 351 - <g data-object="--951523634182308867" style="fill: #000000;transform-box: fill-box;" transform-origin="225 475"> 352 - <circle cx="200" cy="450" r="7.5"/> 353 - </g> 354 - <g data-object="--819796739713743740" style="fill: #000000;transform-box: fill-box;" transform-origin="425 475"> 355 - <circle cx="400" cy="450" r="7.5"/> 356 - </g> 357 - <g data-object="--8468811290163653594" style="fill: #000000;transform-box: fill-box;" transform-origin="175 325"> 358 - <circle cx="150" cy="300" r="7.5"/> 359 - </g> 360 - <g data-object="--2086257808749371582" style="fill: #000000;transform-box: fill-box;" transform-origin="775 275"> 361 - <circle cx="750" cy="250" r="7.5"/> 362 - </g> 363 - <g data-object="--15548360914178182664" style="fill: #000000;transform-box: fill-box;" transform-origin="575 225"> 364 - <circle cx="550" cy="200" r="7.5"/> 365 - </g> 366 - <g data-object="--16457808405830132690" style="fill: #000000;transform-box: fill-box;" transform-origin="375 425"> 367 - <circle cx="350" cy="400" r="7.5"/> 368 - </g> 369 - <g data-object="--1493373365995049455" style="fill: #000000;transform-box: fill-box;" transform-origin="525 25"> 370 - <circle cx="500" cy="0" r="7.5"/> 371 - </g> 372 - <g data-object="--7173634658143306240" style="fill: #000000;transform-box: fill-box;" transform-origin="425 425"> 373 - <circle cx="400" cy="400" r="7.5"/> 374 - </g> 375 - <g data-object="--13403424591054559502" style="fill: #000000;transform-box: fill-box;" transform-origin="775 125"> 376 - <circle cx="750" cy="100" r="7.5"/> 377 - </g> 378 - <g data-object="--13333112917377691390" style="fill: #000000;transform-box: fill-box;" transform-origin="125 375"> 379 - <circle cx="100" cy="350" r="7.5"/> 380 - </g> 381 - <g data-object="--18133431357596616148" style="fill: #000000;transform-box: fill-box;" transform-origin="225 425"> 382 - <circle cx="200" cy="400" r="7.5"/> 383 - </g> 384 - <g data-object="--14969971602033488218" style="fill: #000000;transform-box: fill-box;" transform-origin="25 75"> 385 - <circle cx="0" cy="50" r="7.5"/> 386 - </g> 387 - <g data-object="--12006356082386353883" style="fill: #000000;transform-box: fill-box;" transform-origin="175 75"> 388 - <circle cx="150" cy="50" r="7.5"/> 389 - </g> 390 - <g data-object="--13677161417105769883" style="fill: #000000;transform-box: fill-box;" transform-origin="325 125"> 391 - <circle cx="300" cy="100" r="7.5"/> 392 - </g> 393 - <g data-object="--12070925609132731503" style="fill: #000000;transform-box: fill-box;" transform-origin="25 125"> 394 - <circle cx="0" cy="100" r="7.5"/> 395 - </g> 396 - <g data-object="--2272073655389725207" style="fill: #000000;transform-box: fill-box;" transform-origin="75 275"> 397 - <circle cx="50" cy="250" r="7.5"/> 398 - </g> 399 - <g data-object="--8907789152428911565" style="fill: #000000;transform-box: fill-box;" transform-origin="275 425"> 400 - <circle cx="250" cy="400" r="7.5"/> 401 - </g> 402 - <g data-object="--11168547882904454784" style="fill: #000000;transform-box: fill-box;" transform-origin="375 475"> 403 - <circle cx="350" cy="450" r="7.5"/> 404 - </g> 405 - <g data-object="--8141864550662393707" style="fill: #000000;transform-box: fill-box;" transform-origin="475 475"> 406 - <circle cx="450" cy="450" r="7.5"/> 407 - </g> 408 - <g data-object="--3545162977295562486" style="fill: #000000;transform-box: fill-box;" transform-origin="425 275"> 409 - <circle cx="400" cy="250" r="7.5"/> 410 - </g> 411 - <g data-object="--6204664473655111826" style="fill: #000000;transform-box: fill-box;" transform-origin="375 225"> 412 - <circle cx="350" cy="200" r="7.5"/> 413 - </g> 414 - <g data-object="--18357489733982433688" style="fill: #000000;transform-box: fill-box;" transform-origin="25 375"> 415 - <circle cx="0" cy="350" r="7.5"/> 416 - </g> 417 - <g data-object="--11699336165293002071" style="fill: #000000;transform-box: fill-box;" transform-origin="325 175"> 418 - <circle cx="300" cy="150" r="7.5"/> 419 - </g> 420 - <g data-object="--3606756695989070733" style="fill: #000000;transform-box: fill-box;" transform-origin="725 475"> 421 - <circle cx="700" cy="450" r="7.5"/> 422 - </g> 423 - <g data-object="--5793671015596831820" style="fill: #000000;transform-box: fill-box;" transform-origin="775 475"> 424 - <circle cx="750" cy="450" r="7.5"/> 425 - </g> 426 - <g data-object="--2075901528662346322" style="fill: #000000;transform-box: fill-box;" transform-origin="175 125"> 427 - <circle cx="150" cy="100" r="7.5"/> 428 - </g> 429 - <g data-object="--3127427700038695142" style="fill: #000000;transform-box: fill-box;" transform-origin="75 175"> 430 - <circle cx="50" cy="150" r="7.5"/> 431 - </g> 432 - <g data-object="--3203973184268862060" style="fill: #000000;transform-box: fill-box;" transform-origin="225 225"> 433 - <circle cx="200" cy="200" r="7.5"/> 434 - </g> 435 - <g data-object="--15734364651784439670" style="fill: #000000;transform-box: fill-box;" transform-origin="525 175"> 436 - <circle cx="500" cy="150" r="7.5"/> 437 - </g> 438 - <g data-object="--16863007926384728418" style="fill: #000000;transform-box: fill-box;" transform-origin="575 425"> 439 - <circle cx="550" cy="400" r="7.5"/> 440 - </g> 441 - <g data-object="--16538516494216774738" style="fill: #000000;transform-box: fill-box;" transform-origin="825 475"> 442 - <circle cx="800" cy="450" r="7.5"/> 443 - </g> 444 - <g data-object="--166614714331799111" style="fill: #000000;transform-box: fill-box;" transform-origin="725 25"> 445 - <circle cx="700" cy="0" r="7.5"/> 446 - </g> 447 - <g data-object="--9548036169195955826" style="fill: #000000;transform-box: fill-box;" transform-origin="825 75"> 448 - <circle cx="800" cy="50" r="7.5"/> 449 - </g> 450 - <g data-object="--5344948205038631504" style="fill: #000000;transform-box: fill-box;" transform-origin="425 325"> 451 - <circle cx="400" cy="300" r="7.5"/> 452 - </g> 453 - <g data-object="--16336311347039641633" style="fill: #000000;transform-box: fill-box;" transform-origin="775 175"> 454 - <circle cx="750" cy="150" r="7.5"/> 455 - </g> 456 - <g data-object="--13511663800978165674" style="fill: #000000;transform-box: fill-box;" transform-origin="525 475"> 457 - <circle cx="500" cy="450" r="7.5"/> 458 - </g> 459 - <g data-object="--12845555619725568414" style="fill: #000000;transform-box: fill-box;" transform-origin="675 25"> 460 - <circle cx="650" cy="0" r="7.5"/> 461 - </g> 462 - <g data-object="--6556635535309049285" style="fill: #000000;transform-box: fill-box;" transform-origin="625 225"> 463 - <circle cx="600" cy="200" r="7.5"/> 464 - </g> 465 - <g data-object="--7751593237145891301" style="fill: #000000;transform-box: fill-box;" transform-origin="475 25"> 466 - <circle cx="450" cy="0" r="7.5"/> 467 - </g> 468 - <g data-object="--2213375066722088296" style="fill: #000000;transform-box: fill-box;" transform-origin="625 175"> 469 - <circle cx="600" cy="150" r="7.5"/> 470 - </g> 471 - <g data-object="--14226206357802469051" style="fill: #000000;transform-box: fill-box;" transform-origin="325 75"> 472 - <circle cx="300" cy="50" r="7.5"/> 473 - </g> 474 - <g data-object="--986103085752043887" style="fill: #000000;transform-box: fill-box;" transform-origin="525 225"> 475 - <circle cx="500" cy="200" r="7.5"/> 476 - </g> 477 - <g data-object="--9849787324381619634" style="fill: #000000;transform-box: fill-box;" transform-origin="175 25"> 478 - <circle cx="150" cy="0" r="7.5"/> 479 - </g> 480 - <g data-object="--12636842319143820187" style="fill: #000000;transform-box: fill-box;" transform-origin="625 425"> 481 - <circle cx="600" cy="400" r="7.5"/> 482 - </g> 483 - <g data-object="--18290826000855843035" style="fill: #000000;transform-box: fill-box;" transform-origin="125 75"> 484 - <circle cx="100" cy="50" r="7.5"/> 485 - </g> 486 - <g data-object="--12517912275634218652" style="fill: #000000;transform-box: fill-box;" transform-origin="525 125"> 487 - <circle cx="500" cy="100" r="7.5"/> 488 - </g> 489 - <g data-object="--5980628203044252184" style="fill: #000000;transform-box: fill-box;" transform-origin="775 425"> 490 - <circle cx="750" cy="400" r="7.5"/> 491 - </g> 492 - <g data-object="--6657486239415299124" style="fill: #000000;transform-box: fill-box;" transform-origin="175 225"> 493 - <circle cx="150" cy="200" r="7.5"/> 494 - </g> 495 - <g data-object="--7967966250566260047" style="fill: #000000;transform-box: fill-box;" transform-origin="525 275"> 496 - <circle cx="500" cy="250" r="7.5"/> 497 - </g> 498 - <g data-object="--5687012594027456958" style="fill: #000000;transform-box: fill-box;" transform-origin="175 175"> 499 - <circle cx="150" cy="150" r="7.5"/> 500 - </g> 501 - <g data-object="--15333963145246558101" style="fill: #000000;transform-box: fill-box;" transform-origin="825 125"> 502 - <circle cx="800" cy="100" r="7.5"/> 503 - </g> 504 - <g data-object="--17561301212880619338" style="fill: #000000;transform-box: fill-box;" transform-origin="125 475"> 505 - <circle cx="100" cy="450" r="7.5"/> 506 - </g> 507 - <g data-object="--5638160107618916738" style="fill: #000000;transform-box: fill-box;" transform-origin="575 125"> 508 - <circle cx="550" cy="100" r="7.5"/> 509 - </g> 510 - <g data-object="--4389757272976643115" style="fill: #000000;transform-box: fill-box;" transform-origin="725 325"> 511 - <circle cx="700" cy="300" r="7.5"/> 512 - </g> 513 - <g data-object="--14122208306235402057" style="fill: #000000;transform-box: fill-box;" transform-origin="625 475"> 514 - <circle cx="600" cy="450" r="7.5"/> 515 - </g> 516 - <g data-object="--8042924132012583541" style="fill: #000000;transform-box: fill-box;" transform-origin="475 425"> 517 - <circle cx="450" cy="400" r="7.5"/> 518 - </g> 519 - <g data-object="--9248166905083758200" style="fill: #000000;transform-box: fill-box;" transform-origin="725 125"> 520 - <circle cx="700" cy="100" r="7.5"/> 521 - </g> 522 - <g data-object="--11913175651440551117" style="fill: #000000;transform-box: fill-box;" transform-origin="75 225"> 523 - <circle cx="50" cy="200" r="7.5"/> 524 - </g> 525 - <g data-object="--10644031826155019164" style="fill: #000000;transform-box: fill-box;" transform-origin="725 275"> 526 - <circle cx="700" cy="250" r="7.5"/> 527 - </g> 528 - <g data-object="--2234712862135019251" style="fill: #000000;transform-box: fill-box;" transform-origin="825 25"> 529 - <circle cx="800" cy="0" r="7.5"/> 530 - </g> 531 - <g data-object="--16168597141768875580" style="fill: #000000;transform-box: fill-box;" transform-origin="775 225"> 532 - <circle cx="750" cy="200" r="7.5"/> 533 - </g> 534 - <g data-object="--2735909033132548656" style="fill: #000000;transform-box: fill-box;" transform-origin="175 375"> 535 - <circle cx="150" cy="350" r="7.5"/> 536 - </g> 537 - <g data-object="--15921158086463457488" style="fill: #000000;transform-box: fill-box;" transform-origin="275 475"> 538 - <circle cx="250" cy="450" r="7.5"/> 539 - </g> 540 - <g data-object="--15355650530952414172" style="fill: #000000;transform-box: fill-box;" transform-origin="425 125"> 541 - <circle cx="400" cy="100" r="7.5"/> 542 - </g> 543 - <g data-object="--8942974599644703605" style="fill: #000000;transform-box: fill-box;" transform-origin="25 275"> 544 - <circle cx="0" cy="250" r="7.5"/> 545 - </g> 546 - <g data-object="--9742695593786510245" style="fill: #000000;transform-box: fill-box;" transform-origin="475 75"> 547 - <circle cx="450" cy="50" r="7.5"/> 548 - </g> 549 - <g data-object="--13923210221744302247" style="fill: #000000;transform-box: fill-box;" transform-origin="375 75"> 550 - <circle cx="350" cy="50" r="7.5"/> 551 - </g> 552 - <g data-object="--14354257214540136203" style="fill: #000000;transform-box: fill-box;" transform-origin="575 75"> 553 - <circle cx="550" cy="50" r="7.5"/> 554 - </g> 555 - <g data-object="--17396074440336846919" style="fill: #000000;transform-box: fill-box;" transform-origin="225 325"> 556 - <circle cx="200" cy="300" r="7.5"/> 557 - </g> 558 - <g data-object="--9877230466091143384" style="fill: #000000;transform-box: fill-box;" transform-origin="475 125"> 559 - <circle cx="450" cy="100" r="7.5"/> 560 - </g> 561 - <g data-object="--2036909261340572117" style="fill: #000000;transform-box: fill-box;" transform-origin="275 325"> 562 - <circle cx="250" cy="300" r="7.5"/> 563 - </g> 564 - <g data-object="--6705707363441574148" style="fill: #000000;transform-box: fill-box;" transform-origin="675 325"> 565 - <circle cx="650" cy="300" r="7.5"/> 566 - </g> 567 - <g data-object="--15739416285909229239" style="fill: #000000;transform-box: fill-box;" transform-origin="225 375"> 568 - <circle cx="200" cy="350" r="7.5"/> 569 - </g> 570 - <g data-object="--6643976618566445732" style="fill: #000000;transform-box: fill-box;" transform-origin="525 375"> 571 - <circle cx="500" cy="350" r="7.5"/> 572 - </g> 573 - <g data-object="--16651738331583184066" style="fill: #000000;transform-box: fill-box;" transform-origin="175 475"> 574 - <circle cx="150" cy="450" r="7.5"/> 575 - </g> 576 - <g data-object="--14704784546431841928" style="fill: #000000;transform-box: fill-box;" transform-origin="825 425"> 577 - <circle cx="800" cy="400" r="7.5"/> 578 - </g> 579 - <g data-object="--2816353561199387200" style="fill: #000000;transform-box: fill-box;" transform-origin="25 425"> 580 - <circle cx="0" cy="400" r="7.5"/> 581 - </g> 582 - <g data-object="--1170543742861071161" style="fill: #000000;transform-box: fill-box;" transform-origin="475 175"> 583 - <circle cx="450" cy="150" r="7.5"/> 584 - </g> 585 - <g data-object="--1688681302304880510" style="fill: #000000;transform-box: fill-box;" transform-origin="75 25"> 586 - <circle cx="50" cy="0" r="7.5"/> 587 - </g> 588 - <g data-object="--15321782490498466661" style="fill: #000000;transform-box: fill-box;" transform-origin="725 175"> 589 - <circle cx="700" cy="150" r="7.5"/> 590 - </g> 591 - <g data-object="--3535062817872027455" style="fill: #000000;transform-box: fill-box;" transform-origin="825 325"> 592 - <circle cx="800" cy="300" r="7.5"/> 593 - </g> 594 - <g data-object="--4422956754985049716" style="fill: #000000;transform-box: fill-box;" transform-origin="275 75"> 595 - <circle cx="250" cy="50" r="7.5"/> 596 - </g> 597 - <g data-object="--17595980085591277521" style="fill: #000000;transform-box: fill-box;" transform-origin="575 325"> 598 - <circle cx="550" cy="300" r="7.5"/> 599 - </g> 600 - <g data-object="--15706068451182840876" style="fill: #000000;transform-box: fill-box;" transform-origin="225 75"> 601 - <circle cx="200" cy="50" r="7.5"/> 602 - </g> 603 - <g data-object="--14613540588410433451" style="fill: #000000;transform-box: fill-box;" transform-origin="425 25"> 604 - <circle cx="400" cy="0" r="7.5"/> 605 - </g> 606 - <g data-object="--10091743051042637565" style="fill: #000000;transform-box: fill-box;" transform-origin="675 175"> 607 - <circle cx="650" cy="150" r="7.5"/> 608 - </g> 609 - <g data-object="--3307805225475798232" style="fill: #000000;transform-box: fill-box;" transform-origin="425 75"> 610 - <circle cx="400" cy="50" r="7.5"/> 611 - </g> 612 - <g data-object="--15798742094819135970" style="fill: #000000;transform-box: fill-box;" transform-origin="675 425"> 613 - <circle cx="650" cy="400" r="7.5"/> 614 - </g> 615 - <g data-object="--16819771807174889952" style="fill: #000000;transform-box: fill-box;" transform-origin="425 225"> 616 - <circle cx="400" cy="200" r="7.5"/> 617 - </g> 618 - <g data-object="--17352031639269061075" style="fill: #000000;transform-box: fill-box;" transform-origin="775 25"> 619 - <circle cx="750" cy="0" r="7.5"/> 620 - </g> 621 - <g data-object="--12397647533298171157" style="fill: #000000;transform-box: fill-box;" transform-origin="775 75"> 622 - <circle cx="750" cy="50" r="7.5"/> 623 - </g> 624 - <g data-object="--4699780712674493825" style="fill: #000000;transform-box: fill-box;" transform-origin="275 125"> 625 - <circle cx="250" cy="100" r="7.5"/> 626 - </g> 627 - <g data-object="--5532145975735661861" style="fill: #000000;transform-box: fill-box;" transform-origin="125 325"> 628 - <circle cx="100" cy="300" r="7.5"/> 629 - </g> 630 - <g data-object="--15207276401749746550" style="fill: #000000;transform-box: fill-box;" transform-origin="675 375"> 631 - <circle cx="650" cy="350" r="7.5"/> 632 - </g> 633 - <g data-object="--2424534406215775712" style="fill: #000000;transform-box: fill-box;" transform-origin="475 375"> 634 - <circle cx="450" cy="350" r="7.5"/> 635 - </g> 636 - <g data-object="--11314174272900599134" style="fill: #000000;transform-box: fill-box;" transform-origin="125 275"> 637 - <circle cx="100" cy="250" r="7.5"/> 638 - </g> 639 - <g data-object="--11306892642513129836" style="fill: #000000;transform-box: fill-box;" transform-origin="725 75"> 640 - <circle cx="700" cy="50" r="7.5"/> 641 - </g> 642 - <g data-object="--3360232500551759830" style="fill: #000000;transform-box: fill-box;" transform-origin="25 325"> 643 - <circle cx="0" cy="300" r="7.5"/> 644 - </g> 645 - <g data-object="--7791571135171893975" style="fill: #000000;transform-box: fill-box;" transform-origin="375 375"> 646 - <circle cx="350" cy="350" r="7.5"/> 647 - </g> 648 - <g data-object="--10648275624594487054" style="fill: #000000;transform-box: fill-box;" transform-origin="325 275"> 649 - <circle cx="300" cy="250" r="7.5"/> 650 - </g> 651 - <g data-object="--2655981694345738672" style="fill: #000000;transform-box: fill-box;" transform-origin="75 425"> 652 - <circle cx="50" cy="400" r="7.5"/> 653 - </g> 654 - <g data-object="--14113622739921497979" style="fill: #000000;transform-box: fill-box;" transform-origin="375 275"> 655 - <circle cx="350" cy="250" r="7.5"/> 656 - </g> 657 - <g data-object="--13349689739101818887" style="fill: #000000;transform-box: fill-box;" transform-origin="125 425"> 658 - <circle cx="100" cy="400" r="7.5"/> 659 - </g> 660 - <g data-object="--7902712698544157747" style="fill: #000000;transform-box: fill-box;" transform-origin="525 325"> 661 - <circle cx="500" cy="300" r="7.5"/> 662 - </g> 663 - <g data-object="--6234811504278425115" style="fill: #000000;transform-box: fill-box;" transform-origin="75 125"> 664 - <circle cx="50" cy="100" r="7.5"/> 665 - </g> 666 - <g data-object="--7626618870373744610" style="fill: #000000;transform-box: fill-box;" transform-origin="175 425"> 667 - <circle cx="150" cy="400" r="7.5"/> 668 - </g> 669 - <g data-object="--8150905853094090884" style="fill: #000000;transform-box: fill-box;" transform-origin="425 375"> 670 - <circle cx="400" cy="350" r="7.5"/> 671 - </g> 672 - <g data-object="--15320653913009382973" style="fill: #000000;transform-box: fill-box;" transform-origin="375 325"> 673 - <circle cx="350" cy="300" r="7.5"/> 674 - </g> 675 - <g data-object="--5773585217306513243" style="fill: #000000;transform-box: fill-box;" transform-origin="125 125"> 676 - <circle cx="100" cy="100" r="7.5"/> 677 - </g> 678 - </g> 679 - <g class="layer" data-layer="flickers"> 680 - <g data-object="--18132692946632765217" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 250"> 681 - <line stroke-width="2" x1="100" x2="150" y1="250" y2="200"/> 682 - </g> 683 - <g data-object="--1334856637403335427" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 350"> 684 - <line stroke-width="2" x1="50" x2="100" y1="350" y2="300"/> 685 - </g> 686 - <g data-object="--396537304977599370" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 150"> 687 - <line stroke-width="2" x1="550" x2="600" y1="150" y2="100"/> 688 - </g> 689 - <g data-object="--7530976053877549273" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 50"> 690 - <line stroke-width="2" x1="550" x2="600" y1="50" y2="0"/> 691 - </g> 692 - <g data-object="--11557711172218859524" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 350"> 693 - <line stroke-width="2" x1="350" x2="400" y1="300" y2="350"/> 694 - </g> 695 - <g data-object="--8627631909224221311" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 250"> 696 - <line stroke-width="2" x1="100" x2="150" y1="200" y2="250"/> 697 - </g> 698 - <g data-object="--16064941669530725103" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 50"> 699 - <line stroke-width="2" x1="750" x2="800" y1="0" y2="50"/> 700 - </g> 701 - <g data-object="--3085327210942796828" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 50"> 702 - <line stroke-width="2" x1="400" x2="450" y1="0" y2="50"/> 703 - </g> 704 - <g data-object="--16988257517348725521" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 100"> 705 - <line stroke-width="2" x1="150" x2="200" y1="50" y2="100"/> 706 - </g> 707 - <g data-object="--6506793104527786746" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 150"> 708 - <line stroke-width="2" x1="600" x2="650" y1="100" y2="150"/> 709 - </g> 710 - <g data-object="--14042358391548833571" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 150"> 711 - <line stroke-width="2" x1="350" x2="400" y1="100" y2="150"/> 712 - </g> 713 - <g data-object="--2824904205922287553" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 450"> 714 - <line stroke-width="2" x1="450" x2="500" y1="450" y2="400"/> 715 - </g> 716 - <g data-object="--13487535136686143129" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 300"> 717 - <line stroke-width="2" x1="500" x2="550" y1="300" y2="250"/> 718 - </g> 719 - <g data-object="--8983561434008086074" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 350"> 720 - <line stroke-width="2" x1="450" x2="500" y1="300" y2="350"/> 721 - </g> 722 - <g data-object="--4147350521450447844" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 300"> 723 - <line stroke-width="2" x1="700" x2="750" y1="300" y2="250"/> 724 - </g> 725 - <g data-object="--1002414805231867548" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 300"> 726 - <line stroke-width="2" x1="100" x2="150" y1="250" y2="300"/> 727 - </g> 728 - <g data-object="--16881475202303380112" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 200"> 729 - <line stroke-width="2" x1="550" x2="600" y1="200" y2="150"/> 730 - </g> 731 - <g data-object="--5571601864616703278" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 450"> 732 - <line stroke-width="2" x1="700" x2="750" y1="450" y2="400"/> 733 - </g> 734 - <g data-object="--16470642757298150786" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 450"> 735 - <line stroke-width="2" x1="700" x2="750" y1="400" y2="450"/> 736 - </g> 737 - <g data-object="--2966552719368530215" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 350"> 738 - <line stroke-width="2" x1="700" x2="750" y1="300" y2="350"/> 739 - </g> 740 - <g data-object="--9982923362887572859" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 350"> 741 - <line stroke-width="2" x1="150" x2="200" y1="300" y2="350"/> 742 - </g> 743 - <g data-object="--18404262717005854308" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 150"> 744 - <line stroke-width="2" x1="100" x2="150" y1="150" y2="100"/> 745 - </g> 746 - <g data-object="--16179102613185602269" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 350"> 747 - <line stroke-width="2" x1="150" x2="200" y1="350" y2="300"/> 748 - </g> 749 - <g data-object="--6893691687178511195" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 150"> 750 - <line stroke-width="2" x1="600" x2="650" y1="150" y2="100"/> 751 - </g> 752 - <g data-object="--3878908865697966835" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 100"> 753 - <line stroke-width="2" x1="50" x2="100" y1="100" y2="50"/> 754 - </g> 755 - <g data-object="--7107450895866678196" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 150"> 756 - <line stroke-width="2" x1="150" x2="200" y1="100" y2="150"/> 757 - </g> 758 - <g data-object="--1279906255409961014" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 250"> 759 - <line stroke-width="2" x1="350" x2="400" y1="200" y2="250"/> 760 - </g> 761 - <g data-object="--15208218282832542187" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 400"> 762 - <line stroke-width="2" x1="50" x2="100" y1="400" y2="350"/> 763 - </g> 764 - <g data-object="--3089514925512950031" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 300"> 765 - <line stroke-width="2" x1="50" x2="100" y1="300" y2="250"/> 766 - </g> 767 - <g data-object="--4174162423489119923" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 250"> 768 - <line stroke-width="2" x1="600" x2="650" y1="200" y2="250"/> 769 - </g> 770 - <g data-object="--8126093972277340883" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 450"> 771 - <line stroke-width="2" x1="600" x2="650" y1="400" y2="450"/> 772 - </g> 773 - <g data-object="--9562343221637815569" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 100"> 774 - <line stroke-width="2" x1="250" x2="300" y1="50" y2="100"/> 775 - </g> 776 - <g data-object="--3694676503622301019" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 350"> 777 - <line stroke-width="2" x1="650" x2="700" y1="350" y2="300"/> 778 - </g> 779 - <g data-object="--6435562919924084094" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 100"> 780 - <line stroke-width="2" x1="450" x2="500" y1="100" y2="50"/> 781 - </g> 782 - <g data-object="--7738417755668050021" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 200"> 783 - <line stroke-width="2" x1="50" x2="100" y1="150" y2="200"/> 784 - </g> 785 - <g data-object="--4733626297093299156" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 150"> 786 - <line stroke-width="2" x1="700" x2="750" y1="100" y2="150"/> 787 - </g> 788 - <g data-object="--14941702609405287099" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 50"> 789 - <line stroke-width="2" x1="0" x2="50" y1="0" y2="50"/> 790 - </g> 791 - <g data-object="--16482184059107964917" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 350"> 792 - <line stroke-width="2" x1="550" x2="600" y1="350" y2="300"/> 793 - </g> 794 - <g data-object="--8133913365425798703" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 400"> 795 - <line stroke-width="2" x1="600" x2="650" y1="400" y2="350"/> 796 - </g> 797 - <g data-object="--12308945726841461997" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 400"> 798 - <line stroke-width="2" x1="750" x2="800" y1="350" y2="400"/> 799 - </g> 800 - <g data-object="--13674335063610459684" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 300"> 801 - <line stroke-width="2" x1="400" x2="450" y1="250" y2="300"/> 802 - </g> 803 - <g data-object="--17697086465514598580" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 300"> 804 - <line stroke-width="2" x1="300" x2="350" y1="300" y2="250"/> 805 - </g> 806 - <g data-object="--18045531167033981567" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 100"> 807 - <line stroke-width="2" x1="100" x2="150" y1="100" y2="50"/> 808 - </g> 809 - <g data-object="--4776627222439085800" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 100"> 810 - <line stroke-width="2" x1="450" x2="500" y1="50" y2="100"/> 811 - </g> 812 - <g data-object="--5253867635860530458" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 400"> 813 - <line stroke-width="2" x1="350" x2="400" y1="400" y2="350"/> 814 - </g> 815 - <g data-object="--7081784345966472952" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 150"> 816 - <line stroke-width="2" x1="500" x2="550" y1="100" y2="150"/> 817 - </g> 818 - <g data-object="--9846707114183872844" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 200"> 819 - <line stroke-width="2" x1="400" x2="450" y1="200" y2="150"/> 820 - </g> 821 - <g data-object="--5820124084745886373" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 450"> 822 - <line stroke-width="2" x1="750" x2="800" y1="450" y2="400"/> 823 - </g> 824 - <g data-object="--6019458126548719746" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 100"> 825 - <line stroke-width="2" x1="350" x2="400" y1="100" y2="50"/> 826 - </g> 827 - <g data-object="--9881623723187125070" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 350"> 828 - <line stroke-width="2" x1="400" x2="450" y1="350" y2="300"/> 829 - </g> 830 - <g data-object="--8428238019806687609" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 150"> 831 - <line stroke-width="2" x1="400" x2="450" y1="100" y2="150"/> 832 - </g> 833 - <g data-object="--12742366661099572425" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 150"> 834 - <line stroke-width="2" x1="400" x2="450" y1="150" y2="100"/> 835 - </g> 836 - <g data-object="--3026122404861204392" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 150"> 837 - <line stroke-width="2" x1="500" x2="550" y1="150" y2="100"/> 838 - </g> 839 - <g data-object="--2843453552211743485" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 200"> 840 - <line stroke-width="2" x1="200" x2="250" y1="150" y2="200"/> 841 - </g> 842 - <g data-object="--68416149755043596" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 400"> 843 - <line stroke-width="2" x1="200" x2="250" y1="350" y2="400"/> 844 - </g> 845 - <g data-object="--12343306275440964907" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 350"> 846 - <line stroke-width="2" x1="500" x2="550" y1="350" y2="300"/> 847 - </g> 848 - <g data-object="--7385869064633259306" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 200"> 849 - <line stroke-width="2" x1="250" x2="300" y1="150" y2="200"/> 850 - </g> 851 - <g data-object="--4304968983346602110" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 100"> 852 - <line stroke-width="2" x1="0" x2="50" y1="50" y2="100"/> 853 - </g> 854 - <g data-object="--11540906991766022973" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 250"> 855 - <line stroke-width="2" x1="350" x2="400" y1="250" y2="200"/> 856 - </g> 857 - <g data-object="--9789959437139853948" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 400"> 858 - <line stroke-width="2" x1="400" x2="450" y1="350" y2="400"/> 859 - </g> 860 - <g data-object="--6324161338895732922" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 450"> 861 - <line stroke-width="2" x1="150" x2="200" y1="450" y2="400"/> 862 - </g> 863 - <g data-object="--11660655559025708867" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 50"> 864 - <line stroke-width="2" x1="200" x2="250" y1="0" y2="50"/> 865 - </g> 866 - <g data-object="--14422790204422026203" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 450"> 867 - <line stroke-width="2" x1="300" x2="350" y1="400" y2="450"/> 868 - </g> 869 - <g data-object="--15526018179484943709" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 200"> 870 - <line stroke-width="2" x1="150" x2="200" y1="200" y2="150"/> 871 - </g> 872 - <g data-object="--10409952417119607960" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 200"> 873 - <line stroke-width="2" x1="500" x2="550" y1="150" y2="200"/> 874 - </g> 875 - <g data-object="--17361975180072473205" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 300"> 876 - <line stroke-width="2" x1="150" x2="200" y1="300" y2="250"/> 877 - </g> 878 - <g data-object="--3039938741072423162" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 350"> 879 - <line stroke-width="2" x1="750" x2="800" y1="350" y2="300"/> 880 - </g> 881 - <g data-object="--994786920005473580" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 350"> 882 - <line stroke-width="2" x1="350" x2="400" y1="350" y2="300"/> 883 - </g> 884 - <g data-object="--8173814630159955571" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 150"> 885 - <line stroke-width="2" x1="50" x2="100" y1="150" y2="100"/> 886 - </g> 887 - <g data-object="--8873090348641578111" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 400"> 888 - <line stroke-width="2" x1="100" x2="150" y1="350" y2="400"/> 889 - </g> 890 - <g data-object="--3505534762507228487" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 150"> 891 - <line stroke-width="2" x1="200" x2="250" y1="100" y2="150"/> 892 - </g> 893 - <g data-object="--498330938378427910" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 250"> 894 - <line stroke-width="2" x1="500" x2="550" y1="200" y2="250"/> 895 - </g> 896 - <g data-object="--6709864617304103952" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 50"> 897 - <line stroke-width="2" x1="700" x2="750" y1="0" y2="50"/> 898 - </g> 899 - <g data-object="--10730222499523281450" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 150"> 900 - <line stroke-width="2" x1="300" x2="350" y1="150" y2="100"/> 901 - </g> 902 - <g data-object="--13184966743038732363" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 150"> 903 - <line stroke-width="2" x1="350" x2="400" y1="150" y2="100"/> 904 - </g> 905 - <g data-object="--11762304456938971621" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 300"> 906 - <line stroke-width="2" x1="0" x2="50" y1="300" y2="250"/> 907 - </g> 908 - <g data-object="--10300018665267284610" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 50"> 909 - <line stroke-width="2" x1="150" x2="200" y1="0" y2="50"/> 910 - </g> 911 - <g data-object="--7427710856370139359" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 250"> 912 - <line stroke-width="2" x1="200" x2="250" y1="250" y2="200"/> 913 - </g> 914 - <g data-object="--12449721584338318270" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 300"> 915 - <line stroke-width="2" x1="250" x2="300" y1="250" y2="300"/> 916 - </g> 917 - <g data-object="--8669257074216714939" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 300"> 918 - <line stroke-width="2" x1="500" x2="550" y1="250" y2="300"/> 919 - </g> 920 - <g data-object="--8707760288963291101" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 350"> 921 - <line stroke-width="2" x1="0" x2="50" y1="350" y2="300"/> 922 - </g> 923 - <g data-object="--1154436188692364773" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 350"> 924 - <line stroke-width="2" x1="250" x2="300" y1="350" y2="300"/> 925 - </g> 926 - <g data-object="--12910082734768869702" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 350"> 927 - <line stroke-width="2" x1="400" x2="450" y1="300" y2="350"/> 928 - </g> 929 - <g data-object="--17959689521207283278" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 300"> 930 - <line stroke-width="2" x1="350" x2="400" y1="250" y2="300"/> 931 - </g> 932 - <g data-object="--11427779937041450755" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 350"> 933 - <line stroke-width="2" x1="750" x2="800" y1="300" y2="350"/> 934 - </g> 935 - <g data-object="--278270383871462568" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 400"> 936 - <line stroke-width="2" x1="100" x2="150" y1="400" y2="350"/> 937 - </g> 938 - <g data-object="--4520308903869972383" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 200"> 939 - <line stroke-width="2" x1="0" x2="50" y1="200" y2="150"/> 940 - </g> 941 - <g data-object="--12577989570260228742" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 450"> 942 - <line stroke-width="2" x1="200" x2="250" y1="400" y2="450"/> 943 - </g> 944 - <g data-object="--2996391684706393029" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 400"> 945 - <line stroke-width="2" x1="500" x2="550" y1="400" y2="350"/> 946 - </g> 947 - <g data-object="--3558813755701981218" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 350"> 948 - <line stroke-width="2" x1="300" x2="350" y1="350" y2="300"/> 949 - </g> 950 - <g data-object="--14849775709766972281" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 400"> 951 - <line stroke-width="2" x1="0" x2="50" y1="400" y2="350"/> 952 - </g> 953 - <g data-object="--14149118441956844292" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 450"> 954 - <line stroke-width="2" x1="50" x2="100" y1="450" y2="400"/> 955 - </g> 956 - <g data-object="--4224823799649772523" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 250"> 957 - <line stroke-width="2" x1="400" x2="450" y1="200" y2="250"/> 958 - </g> 959 - <g data-object="--16550664851178662583" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 450"> 960 - <line stroke-width="2" x1="250" x2="300" y1="450" y2="400"/> 961 - </g> 962 - <g data-object="--7734988273268405918" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 100"> 963 - <line stroke-width="2" x1="0" x2="50" y1="100" y2="50"/> 964 - </g> 965 - <g data-object="--14334259699435783936" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 100"> 966 - <line stroke-width="2" x1="550" x2="600" y1="100" y2="50"/> 967 - </g> 968 - <g data-object="--17305633158703435924" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 200"> 969 - <line stroke-width="2" x1="550" x2="600" y1="150" y2="200"/> 970 - </g> 971 - <g data-object="--5794125035192208445" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 100"> 972 - <line stroke-width="2" x1="500" x2="550" y1="100" y2="50"/> 973 - </g> 974 - <g data-object="--14572267873094102341" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 150"> 975 - <line stroke-width="2" x1="650" x2="700" y1="150" y2="100"/> 976 - </g> 977 - <g data-object="--5044389258072444504" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 300"> 978 - <line stroke-width="2" x1="450" x2="500" y1="250" y2="300"/> 979 - </g> 980 - <g data-object="--3595823236822334513" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 400"> 981 - <line stroke-width="2" x1="300" x2="350" y1="350" y2="400"/> 982 - </g> 983 - <g data-object="--10804215623712773020" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 50"> 984 - <line stroke-width="2" x1="200" x2="250" y1="50" y2="0"/> 985 - </g> 986 - <g data-object="--9730281266968951214" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 200"> 987 - <line stroke-width="2" x1="450" x2="500" y1="200" y2="150"/> 988 - </g> 989 - <g data-object="--8042845544670735433" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 400"> 990 - <line stroke-width="2" x1="450" x2="500" y1="350" y2="400"/> 991 - </g> 992 - <g data-object="--14508478796210302110" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 150"> 993 - <line stroke-width="2" x1="750" x2="800" y1="100" y2="150"/> 994 - </g> 995 - <g data-object="--7523826761756504763" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 200"> 996 - <line stroke-width="2" x1="750" x2="800" y1="150" y2="200"/> 997 - </g> 998 - <g data-object="--6445758102282926888" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 250"> 999 - <line stroke-width="2" x1="750" x2="800" y1="250" y2="200"/> 1000 - </g> 1001 - <g data-object="--5364919922458840906" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 300"> 1002 - <line stroke-width="2" x1="250" x2="300" y1="300" y2="250"/> 1003 - </g> 1004 - <g data-object="--14559318461809695036" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 150"> 1005 - <line stroke-width="2" x1="50" x2="100" y1="100" y2="150"/> 1006 - </g> 1007 - <g data-object="--10121783319574047727" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 250"> 1008 - <line stroke-width="2" x1="50" x2="100" y1="250" y2="200"/> 1009 - </g> 1010 - <g data-object="--3892873161047434961" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 150"> 1011 - <line stroke-width="2" x1="0" x2="50" y1="100" y2="150"/> 1012 - </g> 1013 - <g data-object="--4581586531406240866" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 300"> 1014 - <line stroke-width="2" x1="150" x2="200" y1="250" y2="300"/> 1015 - </g> 1016 - <g data-object="--9551330406437779849" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 250"> 1017 - <line stroke-width="2" x1="250" x2="300" y1="250" y2="200"/> 1018 - </g> 1019 - <g data-object="--10348494297593113826" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 300"> 1020 - <line stroke-width="2" x1="200" x2="250" y1="250" y2="300"/> 1021 - </g> 1022 - <g data-object="--9318618118634895336" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 150"> 1023 - <line stroke-width="2" x1="150" x2="200" y1="150" y2="100"/> 1024 - </g> 1025 - <g data-object="--4407728955354292249" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 250"> 1026 - <line stroke-width="2" x1="400" x2="450" y1="250" y2="200"/> 1027 - </g> 1028 - <g data-object="--18404534792488199030" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 300"> 1029 - <line stroke-width="2" x1="400" x2="450" y1="300" y2="250"/> 1030 - </g> 1031 - <g data-object="--12952723326194259235" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 350"> 1032 - <line stroke-width="2" x1="600" x2="650" y1="350" y2="300"/> 1033 - </g> 1034 - <g data-object="--5172380106678991298" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 400"> 1035 - <line stroke-width="2" x1="750" x2="800" y1="400" y2="350"/> 1036 - </g> 1037 - <g data-object="--727944518299580347" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 50"> 1038 - <line stroke-width="2" x1="650" x2="700" y1="0" y2="50"/> 1039 - </g> 1040 - <g data-object="--2466916979816007795" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 250"> 1041 - <line stroke-width="2" x1="550" x2="600" y1="200" y2="250"/> 1042 - </g> 1043 - <g data-object="--6518711966741546728" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 400"> 1044 - <line stroke-width="2" x1="500" x2="550" y1="350" y2="400"/> 1045 - </g> 1046 - <g data-object="--987214435679693075" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 200"> 1047 - <line stroke-width="2" x1="200" x2="250" y1="200" y2="150"/> 1048 - </g> 1049 - <g data-object="--2213388391763134808" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 250"> 1050 - <line stroke-width="2" x1="200" x2="250" y1="200" y2="250"/> 1051 - </g> 1052 - <g data-object="--14599200699261845791" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 450"> 1053 - <line stroke-width="2" x1="600" x2="650" y1="450" y2="400"/> 1054 - </g> 1055 - <g data-object="--7454542594099515181" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 350"> 1056 - <line stroke-width="2" x1="250" x2="300" y1="300" y2="350"/> 1057 - </g> 1058 - <g data-object="--13211015423406965162" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 250"> 1059 - <line stroke-width="2" x1="650" x2="700" y1="250" y2="200"/> 1060 - </g> 1061 - <g data-object="--4112460216518845198" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 250"> 1062 - <line stroke-width="2" x1="0" x2="50" y1="200" y2="250"/> 1063 - </g> 1064 - <g data-object="--11697815639397849930" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 100"> 1065 - <line stroke-width="2" x1="750" x2="800" y1="50" y2="100"/> 1066 - </g> 1067 - <g data-object="--1751025762710511176" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 300"> 1068 - <line stroke-width="2" x1="650" x2="700" y1="250" y2="300"/> 1069 - </g> 1070 - <g data-object="--3662769176403419615" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 150"> 1071 - <line stroke-width="2" x1="650" x2="700" y1="100" y2="150"/> 1072 - </g> 1073 - <g data-object="--1280145673416498837" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 200"> 1074 - <line stroke-width="2" x1="100" x2="150" y1="200" y2="150"/> 1075 - </g> 1076 - <g data-object="--16128782271729361574" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 250"> 1077 - <line stroke-width="2" x1="450" x2="500" y1="200" y2="250"/> 1078 - </g> 1079 - <g data-object="--10798481842008911536" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 250"> 1080 - <line stroke-width="2" x1="500" x2="550" y1="250" y2="200"/> 1081 - </g> 1082 - <g data-object="--7288560574771779328" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 150"> 1083 - <line stroke-width="2" x1="200" x2="250" y1="150" y2="100"/> 1084 - </g> 1085 - <g data-object="--12117143271519638502" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 450"> 1086 - <line stroke-width="2" x1="100" x2="150" y1="450" y2="400"/> 1087 - </g> 1088 - <g data-object="--13949315122018870020" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 50"> 1089 - <line stroke-width="2" x1="450" x2="500" y1="0" y2="50"/> 1090 - </g> 1091 - <g data-object="--5014580102665897725" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 100"> 1092 - <line stroke-width="2" x1="600" x2="650" y1="100" y2="50"/> 1093 - </g> 1094 - <g data-object="--17308128126281623041" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 300"> 1095 - <line stroke-width="2" x1="300" x2="350" y1="250" y2="300"/> 1096 - </g> 1097 - <g data-object="--9861990145724486597" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 200"> 1098 - <line stroke-width="2" x1="500" x2="550" y1="200" y2="150"/> 1099 - </g> 1100 - <g data-object="--14720588664611258959" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 250"> 1101 - <line stroke-width="2" x1="150" x2="200" y1="250" y2="200"/> 1102 - </g> 1103 - <g data-object="--13900365425646327945" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 300"> 1104 - <line stroke-width="2" x1="350" x2="400" y1="300" y2="250"/> 1105 - </g> 1106 - <g data-object="--4273624599134495935" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 450"> 1107 - <line stroke-width="2" x1="250" x2="300" y1="400" y2="450"/> 1108 - </g> 1109 - <g data-object="--8094560753161096895" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 150"> 1110 - <line stroke-width="2" x1="750" x2="800" y1="150" y2="100"/> 1111 - </g> 1112 - <g data-object="--10613033021607956285" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 200"> 1113 - <line stroke-width="2" x1="700" x2="750" y1="150" y2="200"/> 1114 - </g> 1115 - <g data-object="--1935801911133314395" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 50"> 1116 - <line stroke-width="2" x1="50" x2="100" y1="50" y2="0"/> 1117 - </g> 1118 - <g data-object="--11911674794117415852" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 150"> 1119 - <line stroke-width="2" x1="450" x2="500" y1="150" y2="100"/> 1120 - </g> 1121 - <g data-object="--18444790433002837754" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 200"> 1122 - <line stroke-width="2" x1="650" x2="700" y1="200" y2="150"/> 1123 - </g> 1124 - <g data-object="--13676885330087907689" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 50"> 1125 - <line stroke-width="2" x1="500" x2="550" y1="0" y2="50"/> 1126 - </g> 1127 - <g data-object="--17179240843149995685" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 100"> 1128 - <line stroke-width="2" x1="150" x2="200" y1="100" y2="50"/> 1129 - </g> 1130 - <g data-object="--17034956521772093491" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 250"> 1131 - <line stroke-width="2" x1="550" x2="600" y1="250" y2="200"/> 1132 - </g> 1133 - <g data-object="--9016813586508693039" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 50"> 1134 - <line stroke-width="2" x1="100" x2="150" y1="0" y2="50"/> 1135 - </g> 1136 - <g data-object="--4482582269358885760" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 300"> 1137 - <line stroke-width="2" x1="650" x2="700" y1="300" y2="250"/> 1138 - </g> 1139 - <g data-object="--4420968025427447125" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 200"> 1140 - <line stroke-width="2" x1="700" x2="750" y1="200" y2="150"/> 1141 - </g> 1142 - <g data-object="--14913376926936842419" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 450"> 1143 - <line stroke-width="2" x1="350" x2="400" y1="450" y2="400"/> 1144 - </g> 1145 - <g data-object="--4626164784266020564" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 50"> 1146 - <line stroke-width="2" x1="0" x2="50" y1="50" y2="0"/> 1147 - </g> 1148 - <g data-object="--2403001541245732063" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 50"> 1149 - <line stroke-width="2" x1="250" x2="300" y1="50" y2="0"/> 1150 - </g> 1151 - <g data-object="--17460222964100239931" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 250"> 1152 - <line stroke-width="2" x1="300" x2="350" y1="250" y2="200"/> 1153 - </g> 1154 - <g data-object="--12928995180288068144" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 50"> 1155 - <line stroke-width="2" x1="650" x2="700" y1="50" y2="0"/> 1156 - </g> 1157 - <g data-object="--1170685301515471821" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 100"> 1158 - <line stroke-width="2" x1="300" x2="350" y1="50" y2="100"/> 1159 - </g> 1160 - <g data-object="--6377871079232158962" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 300"> 1161 - <line stroke-width="2" x1="0" x2="50" y1="250" y2="300"/> 1162 - </g> 1163 - <g data-object="--3570543222681228947" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 300"> 1164 - <line stroke-width="2" x1="750" x2="800" y1="300" y2="250"/> 1165 - </g> 1166 - <g data-object="--12842932946090639917" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 450"> 1167 - <line stroke-width="2" x1="650" x2="700" y1="450" y2="400"/> 1168 - </g> 1169 - <g data-object="--4204389512486351482" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 450"> 1170 - <line stroke-width="2" x1="450" x2="500" y1="400" y2="450"/> 1171 - </g> 1172 - <g data-object="--5778446308852346879" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 200"> 1173 - <line stroke-width="2" x1="650" x2="700" y1="150" y2="200"/> 1174 - </g> 1175 - <g data-object="--8554340518313462198" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 250"> 1176 - <line stroke-width="2" x1="650" x2="700" y1="200" y2="250"/> 1177 - </g> 1178 - <g data-object="--9996759868667298862" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 350"> 1179 - <line stroke-width="2" x1="300" x2="350" y1="300" y2="350"/> 1180 - </g> 1181 - <g data-object="--6417507778811170707" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 100"> 1182 - <line stroke-width="2" x1="400" x2="450" y1="100" y2="50"/> 1183 - </g> 1184 - <g data-object="--14379264732934613196" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 300"> 1185 - <line stroke-width="2" x1="450" x2="500" y1="300" y2="250"/> 1186 - </g> 1187 - <g data-object="--1158760155401728110" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 450"> 1188 - <line stroke-width="2" x1="100" x2="150" y1="400" y2="450"/> 1189 - </g> 1190 - <g data-object="--4842633496057347109" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 50"> 1191 - <line stroke-width="2" x1="150" x2="200" y1="50" y2="0"/> 1192 - </g> 1193 - <g data-object="--18381080682842901415" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 300"> 1194 - <line stroke-width="2" x1="100" x2="150" y1="300" y2="250"/> 1195 - </g> 1196 - <g data-object="--11736791723464597505" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 400"> 1197 - <line stroke-width="2" x1="550" x2="600" y1="400" y2="350"/> 1198 - </g> 1199 - <g data-object="--7988523556075338911" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 450"> 1200 - <line stroke-width="2" x1="0" x2="50" y1="450" y2="400"/> 1201 - </g> 1202 - <g data-object="--9359077065898627570" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 250"> 1203 - <line stroke-width="2" x1="250" x2="300" y1="200" y2="250"/> 1204 - </g> 1205 - <g data-object="--10001529883057100361" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 100"> 1206 - <line stroke-width="2" x1="650" x2="700" y1="50" y2="100"/> 1207 - </g> 1208 - <g data-object="--10576799603104824335" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 400"> 1209 - <line stroke-width="2" x1="350" x2="400" y1="350" y2="400"/> 1210 - </g> 1211 - <g data-object="--8036777363995705339" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 400"> 1212 - <line stroke-width="2" x1="700" x2="750" y1="400" y2="350"/> 1213 - </g> 1214 - <g data-object="--642231240242322720" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 250"> 1215 - <line stroke-width="2" x1="600" x2="650" y1="250" y2="200"/> 1216 - </g> 1217 - <g data-object="--11357752616848728529" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 200"> 1218 - <line stroke-width="2" x1="150" x2="200" y1="150" y2="200"/> 1219 - </g> 1220 - <g data-object="--12699751626306950150" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 200"> 1221 - <line stroke-width="2" x1="0" x2="50" y1="150" y2="200"/> 1222 - </g> 1223 - <g data-object="--12777134196419121691" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 50"> 1224 - <line stroke-width="2" x1="100" x2="150" y1="50" y2="0"/> 1225 - </g> 1226 - <g data-object="--2943233090560754629" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 50"> 1227 - <line stroke-width="2" x1="300" x2="350" y1="50" y2="0"/> 1228 - </g> 1229 - <g data-object="--17318204224682991970" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 150"> 1230 - <line stroke-width="2" x1="0" x2="50" y1="150" y2="100"/> 1231 - </g> 1232 - <g data-object="--13141746606792790265" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 250"> 1233 - <line stroke-width="2" x1="0" x2="50" y1="250" y2="200"/> 1234 - </g> 1235 - <g data-object="--9352722703829650943" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 300"> 1236 - <line stroke-width="2" x1="200" x2="250" y1="300" y2="250"/> 1237 - </g> 1238 - <g data-object="--14176726108855112015" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 350"> 1239 - <line stroke-width="2" x1="50" x2="100" y1="300" y2="350"/> 1240 - </g> 1241 - <g data-object="--11147042182493240953" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 200"> 1242 - <line stroke-width="2" x1="400" x2="450" y1="150" y2="200"/> 1243 - </g> 1244 - <g data-object="--12446824062888589588" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 200"> 1245 - <line stroke-width="2" x1="350" x2="400" y1="150" y2="200"/> 1246 - </g> 1247 - <g data-object="--12153601581436166901" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 50"> 1248 - <line stroke-width="2" x1="450" x2="500" y1="50" y2="0"/> 1249 - </g> 1250 - <g data-object="--8153318405522458923" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 100"> 1251 - <line stroke-width="2" x1="400" x2="450" y1="50" y2="100"/> 1252 - </g> 1253 - <g data-object="--6097742610209997230" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 450"> 1254 - <line stroke-width="2" x1="200" x2="250" y1="450" y2="400"/> 1255 - </g> 1256 - <g data-object="--10480840703099254357" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 200"> 1257 - <line stroke-width="2" x1="600" x2="650" y1="200" y2="150"/> 1258 - </g> 1259 - <g data-object="--16441824467866873457" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 200"> 1260 - <line stroke-width="2" x1="750" x2="800" y1="200" y2="150"/> 1261 - </g> 1262 - <g data-object="--12617292453637826047" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 150"> 1263 - <line stroke-width="2" x1="100" x2="150" y1="100" y2="150"/> 1264 - </g> 1265 - <g data-object="--1617508113844739527" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 400"> 1266 - <line stroke-width="2" x1="150" x2="200" y1="400" y2="350"/> 1267 - </g> 1268 - <g data-object="--6033194493994199818" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 400"> 1269 - <line stroke-width="2" x1="250" x2="300" y1="400" y2="350"/> 1270 - </g> 1271 - <g data-object="--3556820891817635612" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 50"> 1272 - <line stroke-width="2" x1="300" x2="350" y1="0" y2="50"/> 1273 - </g> 1274 - <g data-object="--5474358496958601672" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 450"> 1275 - <line stroke-width="2" x1="150" x2="200" y1="400" y2="450"/> 1276 - </g> 1277 - <g data-object="--13632753779993539840" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 400"> 1278 - <line stroke-width="2" x1="650" x2="700" y1="350" y2="400"/> 1279 - </g> 1280 - <g data-object="--17722650385225921472" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 100"> 1281 - <line stroke-width="2" x1="300" x2="350" y1="100" y2="50"/> 1282 - </g> 1283 - <g data-object="--8257526232596996585" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 100"> 1284 - <line stroke-width="2" x1="50" x2="100" y1="50" y2="100"/> 1285 - </g> 1286 - <g data-object="--9283389704065617978" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 150"> 1287 - <line stroke-width="2" x1="250" x2="300" y1="100" y2="150"/> 1288 - </g> 1289 - <g data-object="--9595298222674083251" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 350"> 1290 - <line stroke-width="2" x1="0" x2="50" y1="300" y2="350"/> 1291 - </g> 1292 - <g data-object="--10973569008299457464" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 450"> 1293 - <line stroke-width="2" x1="650" x2="700" y1="400" y2="450"/> 1294 - </g> 1295 - <g data-object="--2433597610095098694" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 350"> 1296 - <line stroke-width="2" x1="100" x2="150" y1="350" y2="300"/> 1297 - </g> 1298 - <g data-object="--8645983086600731103" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 200"> 1299 - <line stroke-width="2" x1="300" x2="350" y1="200" y2="150"/> 1300 - </g> 1301 - <g data-object="--14661544297593934097" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 200"> 1302 - <line stroke-width="2" x1="350" x2="400" y1="200" y2="150"/> 1303 - </g> 1304 - <g data-object="--17735146058914279646" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 400"> 1305 - <line stroke-width="2" x1="650" x2="700" y1="400" y2="350"/> 1306 - </g> 1307 - <g data-object="--12662851226352726410" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 400"> 1308 - <line stroke-width="2" x1="600" x2="650" y1="350" y2="400"/> 1309 - </g> 1310 - <g data-object="--12977288375654599539" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 200"> 1311 - <line stroke-width="2" x1="450" x2="500" y1="150" y2="200"/> 1312 - </g> 1313 - <g data-object="--16488353012550481468" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 50"> 1314 - <line stroke-width="2" x1="500" x2="550" y1="50" y2="0"/> 1315 - </g> 1316 - <g data-object="--1401312401584580788" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 200"> 1317 - <line stroke-width="2" x1="100" x2="150" y1="150" y2="200"/> 1318 - </g> 1319 - <g data-object="--2526115080476382097" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 50"> 1320 - <line stroke-width="2" x1="400" x2="450" y1="50" y2="0"/> 1321 - </g> 1322 - <g data-object="--3429766703247586145" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 300"> 1323 - <line stroke-width="2" x1="750" x2="800" y1="250" y2="300"/> 1324 - </g> 1325 - <g data-object="--17883792222781924831" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 300"> 1326 - <line stroke-width="2" x1="50" x2="100" y1="250" y2="300"/> 1327 - </g> 1328 - <g data-object="--16645850387566318424" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 350"> 1329 - <line stroke-width="2" x1="450" x2="500" y1="350" y2="300"/> 1330 - </g> 1331 - <g data-object="--13095536099626507927" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 100"> 1332 - <line stroke-width="2" x1="200" x2="250" y1="50" y2="100"/> 1333 - </g> 1334 - <g data-object="--559503915870513664" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 50"> 1335 - <line stroke-width="2" x1="350" x2="400" y1="50" y2="0"/> 1336 - </g> 1337 - <g data-object="--3495764698157227780" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 150"> 1338 - <line stroke-width="2" x1="700" x2="750" y1="150" y2="100"/> 1339 - </g> 1340 - <g data-object="--4524182473466799379" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 400"> 1341 - <line stroke-width="2" x1="700" x2="750" y1="350" y2="400"/> 1342 - </g> 1343 - <g data-object="--4479808127657298906" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 50"> 1344 - <line stroke-width="2" x1="50" x2="100" y1="0" y2="50"/> 1345 - </g> 1346 - <g data-object="--2294694993849068996" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 50"> 1347 - <line stroke-width="2" x1="600" x2="650" y1="0" y2="50"/> 1348 - </g> 1349 - <g data-object="--9505413847768001949" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 100"> 1350 - <line stroke-width="2" x1="500" x2="550" y1="50" y2="100"/> 1351 - </g> 1352 - <g data-object="--11723356056243702582" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 400"> 1353 - <line stroke-width="2" x1="400" x2="450" y1="400" y2="350"/> 1354 - </g> 1355 - <g data-object="--9503654953009677816" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 100"> 1356 - <line stroke-width="2" x1="250" x2="300" y1="100" y2="50"/> 1357 - </g> 1358 - <g data-object="--18034660760197739664" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 150"> 1359 - <line stroke-width="2" x1="300" x2="350" y1="100" y2="150"/> 1360 - </g> 1361 - <g data-object="--12075066205609454278" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 350"> 1362 - <line stroke-width="2" x1="100" x2="150" y1="300" y2="350"/> 1363 - </g> 1364 - <g data-object="--17884075924802878557" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 250"> 1365 - <line stroke-width="2" x1="150" x2="200" y1="200" y2="250"/> 1366 - </g> 1367 - <g data-object="--14025702108588251189" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 400"> 1368 - <line stroke-width="2" x1="0" x2="50" y1="350" y2="400"/> 1369 - </g> 1370 - <g data-object="--1902403153062649436" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 50"> 1371 - <line stroke-width="2" x1="250" x2="300" y1="0" y2="50"/> 1372 - </g> 1373 - <g data-object="--3668686886064532091" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 450"> 1374 - <line stroke-width="2" x1="500" x2="550" y1="450" y2="400"/> 1375 - </g> 1376 - <g data-object="--12828654711559457232" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 50"> 1377 - <line stroke-width="2" x1="550" x2="600" y1="0" y2="50"/> 1378 - </g> 1379 - <g data-object="--1989734916224916079" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 100"> 1380 - <line stroke-width="2" x1="700" x2="750" y1="50" y2="100"/> 1381 - </g> 1382 - <g data-object="--1673375954122850052" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 200"> 1383 - <line stroke-width="2" x1="600" x2="650" y1="150" y2="200"/> 1384 - </g> 1385 - <g data-object="--16403811021343369837" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 150"> 1386 - <line stroke-width="2" x1="450" x2="500" y1="100" y2="150"/> 1387 - </g> 1388 - <g data-object="--1921182388666578" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 300"> 1389 - <line stroke-width="2" x1="550" x2="600" y1="300" y2="250"/> 1390 - </g> 1391 - <g data-object="--5879685662951923412" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 350"> 1392 - <line stroke-width="2" x1="200" x2="250" y1="350" y2="300"/> 1393 - </g> 1394 - <g data-object="--6339718623599617533" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 400"> 1395 - <line stroke-width="2" x1="550" x2="600" y1="350" y2="400"/> 1396 - </g> 1397 - <g data-object="--9717951136982330995" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 200"> 1398 - <line stroke-width="2" x1="300" x2="350" y1="150" y2="200"/> 1399 - </g> 1400 - <g data-object="--455467382327200921" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 300"> 1401 - <line stroke-width="2" x1="700" x2="750" y1="250" y2="300"/> 1402 - </g> 1403 - <g data-object="--15685014016595145118" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 150"> 1404 - <line stroke-width="2" x1="250" x2="300" y1="150" y2="100"/> 1405 - </g> 1406 - <g data-object="--1868367838208966005" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="200 400"> 1407 - <line stroke-width="2" x1="150" x2="200" y1="350" y2="400"/> 1408 - </g> 1409 - <g data-object="--2938724019493856426" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 350"> 1410 - <line stroke-width="2" x1="600" x2="650" y1="300" y2="350"/> 1411 - </g> 1412 - <g data-object="--5914730260674139536" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="50 450"> 1413 - <line stroke-width="2" x1="0" x2="50" y1="400" y2="450"/> 1414 - </g> 1415 - <g data-object="--9823041508111168979" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 250"> 1416 - <line stroke-width="2" x1="750" x2="800" y1="200" y2="250"/> 1417 - </g> 1418 - <g data-object="--515094784951518615" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 350"> 1419 - <line stroke-width="2" x1="500" x2="550" y1="300" y2="350"/> 1420 - </g> 1421 - <g data-object="--1081575042889465272" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 250"> 1422 - <line stroke-width="2" x1="300" x2="350" y1="200" y2="250"/> 1423 - </g> 1424 - <g data-object="--14276250279942934008" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 450"> 1425 - <line stroke-width="2" x1="400" x2="450" y1="450" y2="400"/> 1426 - </g> 1427 - <g data-object="--17443544531962865234" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 100"> 1428 - <line stroke-width="2" x1="600" x2="650" y1="50" y2="100"/> 1429 - </g> 1430 - <g data-object="--901345362515397604" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 50"> 1431 - <line stroke-width="2" x1="700" x2="750" y1="50" y2="0"/> 1432 - </g> 1433 - <g data-object="--12481866626701871980" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 200"> 1434 - <line stroke-width="2" x1="250" x2="300" y1="200" y2="150"/> 1435 - </g> 1436 - <g data-object="--6288004080389216293" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 350"> 1437 - <line stroke-width="2" x1="550" x2="600" y1="300" y2="350"/> 1438 - </g> 1439 - <g data-object="--2266355846531585964" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 400"> 1440 - <line stroke-width="2" x1="200" x2="250" y1="400" y2="350"/> 1441 - </g> 1442 - <g data-object="--4722165817073488999" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 250"> 1443 - <line stroke-width="2" x1="450" x2="500" y1="250" y2="200"/> 1444 - </g> 1445 - <g data-object="--12625527512742369973" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 400"> 1446 - <line stroke-width="2" x1="50" x2="100" y1="350" y2="400"/> 1447 - </g> 1448 - <g data-object="--11792534634100664275" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="150 100"> 1449 - <line stroke-width="2" x1="100" x2="150" y1="50" y2="100"/> 1450 - </g> 1451 - <g data-object="--16375018136065229841" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 350"> 1452 - <line stroke-width="2" x1="200" x2="250" y1="300" y2="350"/> 1453 - </g> 1454 - <g data-object="--5561740019709277184" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 400"> 1455 - <line stroke-width="2" x1="300" x2="350" y1="400" y2="350"/> 1456 - </g> 1457 - <g data-object="--9708180035879820501" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="700 350"> 1458 - <line stroke-width="2" x1="650" x2="700" y1="300" y2="350"/> 1459 - </g> 1460 - <g data-object="--15676819778008701383" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 100"> 1461 - <line stroke-width="2" x1="750" x2="800" y1="100" y2="50"/> 1462 - </g> 1463 - <g data-object="--2835793339517653595" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 350"> 1464 - <line stroke-width="2" x1="700" x2="750" y1="350" y2="300"/> 1465 - </g> 1466 - <g data-object="--8194130346798589345" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 50"> 1467 - <line stroke-width="2" x1="750" x2="800" y1="50" y2="0"/> 1468 - </g> 1469 - <g data-object="--2878553298443158379" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 50"> 1470 - <line stroke-width="2" x1="600" x2="650" y1="50" y2="0"/> 1471 - </g> 1472 - <g data-object="--2895462168738942338" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 250"> 1473 - <line stroke-width="2" x1="50" x2="100" y1="200" y2="250"/> 1474 - </g> 1475 - <g data-object="--18020481592472300763" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="800 450"> 1476 - <line stroke-width="2" x1="750" x2="800" y1="400" y2="450"/> 1477 - </g> 1478 - <g data-object="--9956005532354708734" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="350 450"> 1479 - <line stroke-width="2" x1="300" x2="350" y1="450" y2="400"/> 1480 - </g> 1481 - <g data-object="--4088842763033497294" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 450"> 1482 - <line stroke-width="2" x1="550" x2="600" y1="400" y2="450"/> 1483 - </g> 1484 - <g data-object="--316619211747897682" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 250"> 1485 - <line stroke-width="2" x1="700" x2="750" y1="200" y2="250"/> 1486 - </g> 1487 - <g data-object="--6954559834360840293" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 450"> 1488 - <line stroke-width="2" x1="550" x2="600" y1="450" y2="400"/> 1489 - </g> 1490 - <g data-object="--5945322309823777695" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 250"> 1491 - <line stroke-width="2" x1="700" x2="750" y1="250" y2="200"/> 1492 - </g> 1493 - <g data-object="--16011435825677164908" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 300"> 1494 - <line stroke-width="2" x1="550" x2="600" y1="250" y2="300"/> 1495 - </g> 1496 - <g data-object="--11909763888294168084" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="450 450"> 1497 - <line stroke-width="2" x1="400" x2="450" y1="400" y2="450"/> 1498 - </g> 1499 - <g data-object="--13247970727586279405" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 100"> 1500 - <line stroke-width="2" x1="350" x2="400" y1="50" y2="100"/> 1501 - </g> 1502 - <g data-object="--7057792675350694231" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 200"> 1503 - <line stroke-width="2" x1="50" x2="100" y1="200" y2="150"/> 1504 - </g> 1505 - <g data-object="--7838855265983792718" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 300"> 1506 - <line stroke-width="2" x1="600" x2="650" y1="250" y2="300"/> 1507 - </g> 1508 - <g data-object="--8770028130504492469" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="750 100"> 1509 - <line stroke-width="2" x1="700" x2="750" y1="100" y2="50"/> 1510 - </g> 1511 - <g data-object="--892951778850081071" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 450"> 1512 - <line stroke-width="2" x1="350" x2="400" y1="400" y2="450"/> 1513 - </g> 1514 - <g data-object="--4188955577190514584" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="650 300"> 1515 - <line stroke-width="2" x1="600" x2="650" y1="300" y2="250"/> 1516 - </g> 1517 - <g data-object="--1513502906529882284" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="100 450"> 1518 - <line stroke-width="2" x1="50" x2="100" y1="400" y2="450"/> 1519 - </g> 1520 - <g data-object="--15095912342533874050" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 150"> 1521 - <line stroke-width="2" x1="550" x2="600" y1="100" y2="150"/> 1522 - </g> 1523 - <g data-object="--6464503475380451148" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="500 400"> 1524 - <line stroke-width="2" x1="450" x2="500" y1="400" y2="350"/> 1525 - </g> 1526 - <g data-object="--791252575378671530" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="550 450"> 1527 - <line stroke-width="2" x1="500" x2="550" y1="400" y2="450"/> 1528 - </g> 1529 - <g data-object="--12783481553322290616" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="400 50"> 1530 - <line stroke-width="2" x1="350" x2="400" y1="0" y2="50"/> 1531 - </g> 1532 - <g data-object="--991884794270470256" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="300 400"> 1533 - <line stroke-width="2" x1="250" x2="300" y1="350" y2="400"/> 1534 - </g> 1535 - <g data-object="--13982758534046797463" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="600 100"> 1536 - <line stroke-width="2" x1="550" x2="600" y1="50" y2="100"/> 1537 - </g> 1538 - <g data-object="--5848024462241460949" style="stroke: #da40f5; fill: transparent;transform-box: fill-box;" transform-origin="250 100"> 1539 - <line stroke-width="2" x1="200" x2="250" y1="100" y2="50"/> 1540 - </g> 1541 - <g data-object="--10843019877851969350" style="stroke: #da40f5; fill: transparent;transform-box: fill-box; transform-origin: center; transform: scale(50%)"> 1542 - <line stroke-width="2" x1="650" x2="700" y1="100" y2="50"/> 1543 - </g> 1544 - </g> 1545 - <g class="layer" data-layer="flickers_occlusions"> 1546 - <g data-object="--10657852064890133288" style="fill: #000000;transform-box: fill-box;" transform-origin="425 175"> 1547 - <circle cx="400" cy="150" r="10"/> 1548 - </g> 1549 - <g data-object="--10490533865693858299" style="fill: #000000;transform-box: fill-box;" transform-origin="775 375"> 1550 - <circle cx="750" cy="350" r="10"/> 1551 - </g> 1552 - <g data-object="--1892469684408034290" style="fill: #000000;transform-box: fill-box;" transform-origin="175 75"> 1553 - <circle cx="150" cy="50" r="10"/> 1554 - </g> 1555 - <g data-object="--13259715688714100661" style="fill: #000000;transform-box: fill-box;" transform-origin="375 125"> 1556 - <circle cx="350" cy="100" r="10"/> 1557 - </g> 1558 - <g data-object="--15597131582620240270" style="fill: #000000;transform-box: fill-box;" transform-origin="775 125"> 1559 - <circle cx="750" cy="100" r="10"/> 1560 - </g> 1561 - <g data-object="--2540387399982016081" style="fill: #000000;transform-box: fill-box;" transform-origin="425 275"> 1562 - <circle cx="400" cy="250" r="10"/> 1563 - </g> 1564 - <g data-object="--9954190403499947110" style="fill: #000000;transform-box: fill-box;" transform-origin="25 375"> 1565 - <circle cx="0" cy="350" r="10"/> 1566 - </g> 1567 - <g data-object="--10389600029520172473" style="fill: #000000;transform-box: fill-box;" transform-origin="475 425"> 1568 - <circle cx="450" cy="400" r="10"/> 1569 - </g> 1570 - <g data-object="--4726767370102053221" style="fill: #000000;transform-box: fill-box;" transform-origin="675 425"> 1571 - <circle cx="650" cy="400" r="10"/> 1572 - </g> 1573 - <g data-object="--9941587023384894723" style="fill: #000000;transform-box: fill-box;" transform-origin="225 475"> 1574 - <circle cx="200" cy="450" r="10"/> 1575 - </g> 1576 - <g data-object="--397843559114829540" style="fill: #000000;transform-box: fill-box;" transform-origin="675 75"> 1577 - <circle cx="650" cy="50" r="10"/> 1578 - </g> 1579 - <g data-object="--1663210157166949683" style="fill: #000000;transform-box: fill-box;" transform-origin="625 325"> 1580 - <circle cx="600" cy="300" r="10"/> 1581 - </g> 1582 - <g data-object="--433103782158205119" style="fill: #000000;transform-box: fill-box;" transform-origin="475 275"> 1583 - <circle cx="450" cy="250" r="10"/> 1584 - </g> 1585 - <g data-object="--732102730558308283" style="fill: #000000;transform-box: fill-box;" transform-origin="225 375"> 1586 - <circle cx="200" cy="350" r="10"/> 1587 - </g> 1588 - <g data-object="--12851024218228336786" style="fill: #000000;transform-box: fill-box;" transform-origin="425 225"> 1589 - <circle cx="400" cy="200" r="10"/> 1590 - </g> 1591 - <g data-object="--16879003982761263239" style="fill: #000000;transform-box: fill-box;" transform-origin="775 475"> 1592 - <circle cx="750" cy="450" r="10"/> 1593 - </g> 1594 - <g data-object="--17739459047083837172" style="fill: #000000;transform-box: fill-box;" transform-origin="675 475"> 1595 - <circle cx="650" cy="450" r="10"/> 1596 - </g> 1597 - <g data-object="--7489299256532591049" style="fill: #000000;transform-box: fill-box;" transform-origin="825 425"> 1598 - <circle cx="800" cy="400" r="10"/> 1599 - </g> 1600 - <g data-object="--9205833977017413374" style="fill: #000000;transform-box: fill-box;" transform-origin="25 175"> 1601 - <circle cx="0" cy="150" r="10"/> 1602 - </g> 1603 - <g data-object="--15129310002737908185" style="fill: #000000;transform-box: fill-box;" transform-origin="325 325"> 1604 - <circle cx="300" cy="300" r="10"/> 1605 - </g> 1606 - <g data-object="--17580714651473948508" style="fill: #000000;transform-box: fill-box;" transform-origin="475 375"> 1607 - <circle cx="450" cy="350" r="10"/> 1608 - </g> 1609 - <g data-object="--7758382784819653206" style="fill: #000000;transform-box: fill-box;" transform-origin="75 425"> 1610 - <circle cx="50" cy="400" r="10"/> 1611 - </g> 1612 - <g data-object="--9372709215488216258" style="fill: #000000;transform-box: fill-box;" transform-origin="275 475"> 1613 - <circle cx="250" cy="450" r="10"/> 1614 - </g> 1615 - <g data-object="--9890328494370066518" style="fill: #000000;transform-box: fill-box;" transform-origin="625 475"> 1616 - <circle cx="600" cy="450" r="10"/> 1617 - </g> 1618 - <g data-object="--4915060405466461572" style="fill: #000000;transform-box: fill-box;" transform-origin="275 225"> 1619 - <circle cx="250" cy="200" r="10"/> 1620 - </g> 1621 - <g data-object="--16902748271667297404" style="fill: #000000;transform-box: fill-box;" transform-origin="75 75"> 1622 - <circle cx="50" cy="50" r="10"/> 1623 - </g> 1624 - <g data-object="--11625308688940849274" style="fill: #000000;transform-box: fill-box;" transform-origin="825 175"> 1625 - <circle cx="800" cy="150" r="10"/> 1626 - </g> 1627 - <g data-object="--1662350770620784180" style="fill: #000000;transform-box: fill-box;" transform-origin="825 25"> 1628 - <circle cx="800" cy="0" r="10"/> 1629 - </g> 1630 - <g data-object="--336466593562015086" style="fill: #000000;transform-box: fill-box;" transform-origin="625 75"> 1631 - <circle cx="600" cy="50" r="10"/> 1632 - </g> 1633 - <g data-object="--3706234630611643167" style="fill: #000000;transform-box: fill-box;" transform-origin="675 175"> 1634 - <circle cx="650" cy="150" r="10"/> 1635 - </g> 1636 - <g data-object="--16125174248130021941" style="fill: #000000;transform-box: fill-box;" transform-origin="525 75"> 1637 - <circle cx="500" cy="50" r="10"/> 1638 - </g> 1639 - <g data-object="--17636880331261872993" style="fill: #000000;transform-box: fill-box;" transform-origin="825 275"> 1640 - <circle cx="800" cy="250" r="10"/> 1641 - </g> 1642 - <g data-object="--5932615668955012408" style="fill: #000000;transform-box: fill-box;" transform-origin="425 325"> 1643 - <circle cx="400" cy="300" r="10"/> 1644 - </g> 1645 - <g data-object="--10942167641146755936" style="fill: #000000;transform-box: fill-box;" transform-origin="225 325"> 1646 - <circle cx="200" cy="300" r="10"/> 1647 - </g> 1648 - <g data-object="--16018493706611494325" style="fill: #000000;transform-box: fill-box;" transform-origin="375 425"> 1649 - <circle cx="350" cy="400" r="10"/> 1650 - </g> 1651 - <g data-object="--6163035866032540763" style="fill: #000000;transform-box: fill-box;" transform-origin="325 375"> 1652 - <circle cx="300" cy="350" r="10"/> 1653 - </g> 1654 - <g data-object="--3724862611204110750" style="fill: #000000;transform-box: fill-box;" transform-origin="625 25"> 1655 - <circle cx="600" cy="0" r="10"/> 1656 - </g> 1657 - <g data-object="--295460613020989453" style="fill: #000000;transform-box: fill-box;" transform-origin="725 225"> 1658 - <circle cx="700" cy="200" r="10"/> 1659 - </g> 1660 - <g data-object="--1740395496315954948" style="fill: #000000;transform-box: fill-box;" transform-origin="575 275"> 1661 - <circle cx="550" cy="250" r="10"/> 1662 - </g> 1663 - <g data-object="--15378427213864877928" style="fill: #000000;transform-box: fill-box;" transform-origin="275 375"> 1664 - <circle cx="250" cy="350" r="10"/> 1665 - </g> 1666 - <g data-object="--17789966745977321403" style="fill: #000000;transform-box: fill-box;" transform-origin="625 375"> 1667 - <circle cx="600" cy="350" r="10"/> 1668 - </g> 1669 - <g data-object="--1959015400411049674" style="fill: #000000;transform-box: fill-box;" transform-origin="325 475"> 1670 - <circle cx="300" cy="450" r="10"/> 1671 - </g> 1672 - <g data-object="--2876324509154944292" style="fill: #000000;transform-box: fill-box;" transform-origin="425 475"> 1673 - <circle cx="400" cy="450" r="10"/> 1674 - </g> 1675 - <g data-object="--6763554884521004454" style="fill: #000000;transform-box: fill-box;" transform-origin="375 325"> 1676 - <circle cx="350" cy="300" r="10"/> 1677 - </g> 1678 - <g data-object="--10276064271818950275" style="fill: #000000;transform-box: fill-box;" transform-origin="325 25"> 1679 - <circle cx="300" cy="0" r="10"/> 1680 - </g> 1681 - <g data-object="--8236802021233655586" style="fill: #000000;transform-box: fill-box;" transform-origin="475 25"> 1682 - <circle cx="450" cy="0" r="10"/> 1683 - </g> 1684 - <g data-object="--11657708348565754164" style="fill: #000000;transform-box: fill-box;" transform-origin="325 75"> 1685 - <circle cx="300" cy="50" r="10"/> 1686 - </g> 1687 - <g data-object="--210231234685528404" style="fill: #000000;transform-box: fill-box;" transform-origin="125 175"> 1688 - <circle cx="100" cy="150" r="10"/> 1689 - </g> 1690 - <g data-object="--5022011802282203682" style="fill: #000000;transform-box: fill-box;" transform-origin="525 175"> 1691 - <circle cx="500" cy="150" r="10"/> 1692 - </g> 1693 - <g data-object="--6925956551892108367" style="fill: #000000;transform-box: fill-box;" transform-origin="25 225"> 1694 - <circle cx="0" cy="200" r="10"/> 1695 - </g> 1696 - <g data-object="--6745985872077423624" style="fill: #000000;transform-box: fill-box;" transform-origin="175 225"> 1697 - <circle cx="150" cy="200" r="10"/> 1698 - </g> 1699 - <g data-object="--4748380676007640421" style="fill: #000000;transform-box: fill-box;" transform-origin="75 275"> 1700 - <circle cx="50" cy="250" r="10"/> 1701 - </g> 1702 - <g data-object="--8751467112048113733" style="fill: #000000;transform-box: fill-box;" transform-origin="125 75"> 1703 - <circle cx="100" cy="50" r="10"/> 1704 - </g> 1705 - <g data-object="--16260214028834033030" style="fill: #000000;transform-box: fill-box;" transform-origin="475 325"> 1706 - <circle cx="450" cy="300" r="10"/> 1707 - </g> 1708 - <g data-object="--2009367546308862432" style="fill: #000000;transform-box: fill-box;" transform-origin="675 375"> 1709 - <circle cx="650" cy="350" r="10"/> 1710 - </g> 1711 - <g data-object="--2923817583783013711" style="fill: #000000;transform-box: fill-box;" transform-origin="375 275"> 1712 - <circle cx="350" cy="250" r="10"/> 1713 - </g> 1714 - <g data-object="--9630920814233037798" style="fill: #000000;transform-box: fill-box;" transform-origin="425 125"> 1715 - <circle cx="400" cy="100" r="10"/> 1716 - </g> 1717 - <g data-object="--14992970676248031758" style="fill: #000000;transform-box: fill-box;" transform-origin="525 225"> 1718 - <circle cx="500" cy="200" r="10"/> 1719 - </g> 1720 - <g data-object="--11541137553644693748" style="fill: #000000;transform-box: fill-box;" transform-origin="25 275"> 1721 - <circle cx="0" cy="250" r="10"/> 1722 - </g> 1723 - <g data-object="--11263662755694395873" style="fill: #000000;transform-box: fill-box;" transform-origin="225 275"> 1724 - <circle cx="200" cy="250" r="10"/> 1725 - </g> 1726 - <g data-object="--5456627987321039237" style="fill: #000000;transform-box: fill-box;" transform-origin="175 125"> 1727 - <circle cx="150" cy="100" r="10"/> 1728 - </g> 1729 - <g data-object="--14173542886537280247" style="fill: #000000;transform-box: fill-box;" transform-origin="775 175"> 1730 - <circle cx="750" cy="150" r="10"/> 1731 - </g> 1732 - <g data-object="--13599118777380201340" style="fill: #000000;transform-box: fill-box;" transform-origin="275 175"> 1733 - <circle cx="250" cy="150" r="10"/> 1734 - </g> 1735 - <g data-object="--13724748690395797675" style="fill: #000000;transform-box: fill-box;" transform-origin="525 425"> 1736 - <circle cx="500" cy="400" r="10"/> 1737 - </g> 1738 - <g data-object="--3664135602799385508" style="fill: #000000;transform-box: fill-box;" transform-origin="775 75"> 1739 - <circle cx="750" cy="50" r="10"/> 1740 - </g> 1741 - <g data-object="--13491193836062103866" style="fill: #000000;transform-box: fill-box;" transform-origin="175 475"> 1742 - <circle cx="150" cy="450" r="10"/> 1743 - </g> 1744 - <g data-object="--6777720918847603190" style="fill: #000000;transform-box: fill-box;" transform-origin="575 75"> 1745 - <circle cx="550" cy="50" r="10"/> 1746 - </g> 1747 - <g data-object="--8203459255611358376" style="fill: #000000;transform-box: fill-box;" transform-origin="475 75"> 1748 - <circle cx="450" cy="50" r="10"/> 1749 - </g> 1750 - <g data-object="--4048690723626906853" style="fill: #000000;transform-box: fill-box;" transform-origin="325 125"> 1751 - <circle cx="300" cy="100" r="10"/> 1752 - </g> 1753 - <g data-object="--5381597636808716186" style="fill: #000000;transform-box: fill-box;" transform-origin="125 275"> 1754 - <circle cx="100" cy="250" r="10"/> 1755 - </g> 1756 - <g data-object="--12629762226986248445" style="fill: #000000;transform-box: fill-box;" transform-origin="125 325"> 1757 - <circle cx="100" cy="300" r="10"/> 1758 - </g> 1759 - <g data-object="--5309383424590195009" style="fill: #000000;transform-box: fill-box;" transform-origin="825 75"> 1760 - <circle cx="800" cy="50" r="10"/> 1761 - </g> 1762 - <g data-object="--6547833319335745535" style="fill: #000000;transform-box: fill-box;" transform-origin="575 175"> 1763 - <circle cx="550" cy="150" r="10"/> 1764 - </g> 1765 - <g data-object="--11237693812782288089" style="fill: #000000;transform-box: fill-box;" transform-origin="575 125"> 1766 - <circle cx="550" cy="100" r="10"/> 1767 - </g> 1768 - <g data-object="--4999640973290323487" style="fill: #000000;transform-box: fill-box;" transform-origin="725 75"> 1769 - <circle cx="700" cy="50" r="10"/> 1770 - </g> 1771 - <g data-object="--9597132526228160150" style="fill: #000000;transform-box: fill-box;" transform-origin="25 75"> 1772 - <circle cx="0" cy="50" r="10"/> 1773 - </g> 1774 - <g data-object="--8511274239611239955" style="fill: #000000;transform-box: fill-box;" transform-origin="375 225"> 1775 - <circle cx="350" cy="200" r="10"/> 1776 - </g> 1777 - <g data-object="--666393042295835774" style="fill: #000000;transform-box: fill-box;" transform-origin="425 25"> 1778 - <circle cx="400" cy="0" r="10"/> 1779 - </g> 1780 - <g data-object="--6139523477352430609" style="fill: #000000;transform-box: fill-box;" transform-origin="175 425"> 1781 - <circle cx="150" cy="400" r="10"/> 1782 - </g> 1783 - <g data-object="--8310694918768677134" style="fill: #000000;transform-box: fill-box;" transform-origin="325 425"> 1784 - <circle cx="300" cy="400" r="10"/> 1785 - </g> 1786 - <g data-object="--8634830337593931442" style="fill: #000000;transform-box: fill-box;" transform-origin="575 425"> 1787 - <circle cx="550" cy="400" r="10"/> 1788 - </g> 1789 - <g data-object="--15906568971868648943" style="fill: #000000;transform-box: fill-box;" transform-origin="575 475"> 1790 - <circle cx="550" cy="450" r="10"/> 1791 - </g> 1792 - <g data-object="--14904011539701874387" style="fill: #000000;transform-box: fill-box;" transform-origin="225 425"> 1793 - <circle cx="200" cy="400" r="10"/> 1794 - </g> 1795 - <g data-object="--670669698226288098" style="fill: #000000;transform-box: fill-box;" transform-origin="125 475"> 1796 - <circle cx="100" cy="450" r="10"/> 1797 - </g> 1798 - <g data-object="--16364162009484487176" style="fill: #000000;transform-box: fill-box;" transform-origin="175 25"> 1799 - <circle cx="150" cy="0" r="10"/> 1800 - </g> 1801 - <g data-object="--2742107561739533888" style="fill: #000000;transform-box: fill-box;" transform-origin="725 175"> 1802 - <circle cx="700" cy="150" r="10"/> 1803 - </g> 1804 - <g data-object="--775630167692512561" style="fill: #000000;transform-box: fill-box;" transform-origin="775 225"> 1805 - <circle cx="750" cy="200" r="10"/> 1806 - </g> 1807 - <g data-object="--7672294823709653841" style="fill: #000000;transform-box: fill-box;" transform-origin="775 275"> 1808 - <circle cx="750" cy="250" r="10"/> 1809 - </g> 1810 - <g data-object="--14036481309177710238" style="fill: #000000;transform-box: fill-box;" transform-origin="675 125"> 1811 - <circle cx="650" cy="100" r="10"/> 1812 - </g> 1813 - <g data-object="--5712896497586754424" style="fill: #000000;transform-box: fill-box;" transform-origin="725 325"> 1814 - <circle cx="700" cy="300" r="10"/> 1815 - </g> 1816 - <g data-object="--6137441446565514720" style="fill: #000000;transform-box: fill-box;" transform-origin="825 375"> 1817 - <circle cx="800" cy="350" r="10"/> 1818 - </g> 1819 - <g data-object="--11308473517603334831" style="fill: #000000;transform-box: fill-box;" transform-origin="375 25"> 1820 - <circle cx="350" cy="0" r="10"/> 1821 - </g> 1822 - <g data-object="--17738566511814448743" style="fill: #000000;transform-box: fill-box;" transform-origin="725 475"> 1823 - <circle cx="700" cy="450" r="10"/> 1824 - </g> 1825 - <g data-object="--8642618214480060352" style="fill: #000000;transform-box: fill-box;" transform-origin="625 225"> 1826 - <circle cx="600" cy="200" r="10"/> 1827 - </g> 1828 - <g data-object="--14380215990479390180" style="fill: #000000;transform-box: fill-box;" transform-origin="225 25"> 1829 - <circle cx="200" cy="0" r="10"/> 1830 - </g> 1831 - <g data-object="--2036708430996894178" style="fill: #000000;transform-box: fill-box;" transform-origin="575 225"> 1832 - <circle cx="550" cy="200" r="10"/> 1833 - </g> 1834 - <g data-object="--16558327594736114037" style="fill: #000000;transform-box: fill-box;" transform-origin="275 275"> 1835 - <circle cx="250" cy="250" r="10"/> 1836 - </g> 1837 - <g data-object="--10237211544296589154" style="fill: #000000;transform-box: fill-box;" transform-origin="425 375"> 1838 - <circle cx="400" cy="350" r="10"/> 1839 - </g> 1840 - <g data-object="--15117117200514756078" style="fill: #000000;transform-box: fill-box;" transform-origin="625 125"> 1841 - <circle cx="600" cy="100" r="10"/> 1842 - </g> 1843 - <g data-object="--14764926049477907654" style="fill: #000000;transform-box: fill-box;" transform-origin="775 25"> 1844 - <circle cx="750" cy="0" r="10"/> 1845 - </g> 1846 - <g data-object="--7703865513570516743" style="fill: #000000;transform-box: fill-box;" transform-origin="125 375"> 1847 - <circle cx="100" cy="350" r="10"/> 1848 - </g> 1849 - <g data-object="--5447389867148352943" style="fill: #000000;transform-box: fill-box;" transform-origin="175 375"> 1850 - <circle cx="150" cy="350" r="10"/> 1851 - </g> 1852 - <g data-object="--2611461148097945378" style="fill: #000000;transform-box: fill-box;" transform-origin="75 125"> 1853 - <circle cx="50" cy="100" r="10"/> 1854 - </g> 1855 - <g data-object="--2878893428022486866" style="fill: #000000;transform-box: fill-box;" transform-origin="475 475"> 1856 - <circle cx="450" cy="450" r="10"/> 1857 - </g> 1858 - <g data-object="--15180399426967413938" style="fill: #000000;transform-box: fill-box;" transform-origin="225 175"> 1859 - <circle cx="200" cy="150" r="10"/> 1860 - </g> 1861 - <g data-object="--3994139584473059459" style="fill: #000000;transform-box: fill-box;" transform-origin="725 375"> 1862 - <circle cx="700" cy="350" r="10"/> 1863 - </g> 1864 - <g data-object="--12570540491041012052" style="fill: #000000;transform-box: fill-box;" transform-origin="75 25"> 1865 - <circle cx="50" cy="0" r="10"/> 1866 - </g> 1867 - <g data-object="--15261893812885506922" style="fill: #000000;transform-box: fill-box;" transform-origin="275 25"> 1868 - <circle cx="250" cy="0" r="10"/> 1869 - </g> 1870 - <g data-object="--4831160924151732023" style="fill: #000000;transform-box: fill-box;" transform-origin="775 425"> 1871 - <circle cx="750" cy="400" r="10"/> 1872 - </g> 1873 - <g data-object="--2803604819126470414" style="fill: #000000;transform-box: fill-box;" transform-origin="675 25"> 1874 - <circle cx="650" cy="0" r="10"/> 1875 - </g> 1876 - <g data-object="--12094330810995074947" style="fill: #000000;transform-box: fill-box;" transform-origin="125 25"> 1877 - <circle cx="100" cy="0" r="10"/> 1878 - </g> 1879 - <g data-object="--13562092501069336701" style="fill: #000000;transform-box: fill-box;" transform-origin="725 125"> 1880 - <circle cx="700" cy="100" r="10"/> 1881 - </g> 1882 - <g data-object="--10456969276589753143" style="fill: #000000;transform-box: fill-box;" transform-origin="425 75"> 1883 - <circle cx="400" cy="50" r="10"/> 1884 - </g> 1885 - <g data-object="--9102121487292702361" style="fill: #000000;transform-box: fill-box;" transform-origin="125 125"> 1886 - <circle cx="100" cy="100" r="10"/> 1887 - </g> 1888 - <g data-object="--7432974564877421412" style="fill: #000000;transform-box: fill-box;" transform-origin="475 225"> 1889 - <circle cx="450" cy="200" r="10"/> 1890 - </g> 1891 - <g data-object="--17524229554298469609" style="fill: #000000;transform-box: fill-box;" transform-origin="625 425"> 1892 - <circle cx="600" cy="400" r="10"/> 1893 - </g> 1894 - <g data-object="--253003420189648870" style="fill: #000000;transform-box: fill-box;" transform-origin="475 125"> 1895 - <circle cx="450" cy="100" r="10"/> 1896 - </g> 1897 - <g data-object="--6752678168762790808" style="fill: #000000;transform-box: fill-box;" transform-origin="375 75"> 1898 - <circle cx="350" cy="50" r="10"/> 1899 - </g> 1900 - <g data-object="--9577283477448528105" style="fill: #000000;transform-box: fill-box;" transform-origin="325 225"> 1901 - <circle cx="300" cy="200" r="10"/> 1902 - </g> 1903 - <g data-object="--10878232797347581153" style="fill: #000000;transform-box: fill-box;" transform-origin="225 75"> 1904 - <circle cx="200" cy="50" r="10"/> 1905 - </g> 1906 - <g data-object="--8494434488253857706" style="fill: #000000;transform-box: fill-box;" transform-origin="75 175"> 1907 - <circle cx="50" cy="150" r="10"/> 1908 - </g> 1909 - <g data-object="--15006362112734488181" style="fill: #000000;transform-box: fill-box;" transform-origin="825 225"> 1910 - <circle cx="800" cy="200" r="10"/> 1911 - </g> 1912 - <g data-object="--16687596770371736787" style="fill: #000000;transform-box: fill-box;" transform-origin="525 325"> 1913 - <circle cx="500" cy="300" r="10"/> 1914 - </g> 1915 - <g data-object="--18095774699824648117" style="fill: #000000;transform-box: fill-box;" transform-origin="725 25"> 1916 - <circle cx="700" cy="0" r="10"/> 1917 - </g> 1918 - <g data-object="--14628898891983652844" style="fill: #000000;transform-box: fill-box;" transform-origin="375 175"> 1919 - <circle cx="350" cy="150" r="10"/> 1920 - </g> 1921 - <g data-object="--18385757795762956901" style="fill: #000000;transform-box: fill-box;" transform-origin="475 175"> 1922 - <circle cx="450" cy="150" r="10"/> 1923 - </g> 1924 - <g data-object="--2690786532008550212" style="fill: #000000;transform-box: fill-box;" transform-origin="675 275"> 1925 - <circle cx="650" cy="250" r="10"/> 1926 - </g> 1927 - <g data-object="--13705101949151265360" style="fill: #000000;transform-box: fill-box;" transform-origin="575 325"> 1928 - <circle cx="550" cy="300" r="10"/> 1929 - </g> 1930 - <g data-object="--8075789022099736369" style="fill: #000000;transform-box: fill-box;" transform-origin="725 275"> 1931 - <circle cx="700" cy="250" r="10"/> 1932 - </g> 1933 - <g data-object="--11514860251350818546" style="fill: #000000;transform-box: fill-box;" transform-origin="625 175"> 1934 - <circle cx="600" cy="150" r="10"/> 1935 - </g> 1936 - <g data-object="--17086665395820593536" style="fill: #000000;transform-box: fill-box;" transform-origin="825 325"> 1937 - <circle cx="800" cy="300" r="10"/> 1938 - </g> 1939 - <g data-object="--5367462066681177937" style="fill: #000000;transform-box: fill-box;" transform-origin="75 375"> 1940 - <circle cx="50" cy="350" r="10"/> 1941 - </g> 1942 - <g data-object="--3234354618071683576" style="fill: #000000;transform-box: fill-box;" transform-origin="525 275"> 1943 - <circle cx="500" cy="250" r="10"/> 1944 - </g> 1945 - <g data-object="--1243900731778555434" style="fill: #000000;transform-box: fill-box;" transform-origin="525 125"> 1946 - <circle cx="500" cy="100" r="10"/> 1947 - </g> 1948 - <g data-object="--11317813671379894946" style="fill: #000000;transform-box: fill-box;" transform-origin="625 275"> 1949 - <circle cx="600" cy="250" r="10"/> 1950 - </g> 1951 - <g data-object="--3246555449954363313" style="fill: #000000;transform-box: fill-box;" transform-origin="225 225"> 1952 - <circle cx="200" cy="200" r="10"/> 1953 - </g> 1954 - <g data-object="--17556350234099758875" style="fill: #000000;transform-box: fill-box;" transform-origin="675 325"> 1955 - <circle cx="650" cy="300" r="10"/> 1956 - </g> 1957 - <g data-object="--7415883923406980574" style="fill: #000000;transform-box: fill-box;" transform-origin="525 375"> 1958 - <circle cx="500" cy="350" r="10"/> 1959 - </g> 1960 - <g data-object="--922012324427242350" style="fill: #000000;transform-box: fill-box;" transform-origin="575 375"> 1961 - <circle cx="550" cy="350" r="10"/> 1962 - </g> 1963 - <g data-object="--13801889002714387563" style="fill: #000000;transform-box: fill-box;" transform-origin="125 425"> 1964 - <circle cx="100" cy="400" r="10"/> 1965 - </g> 1966 - <g data-object="--16923112562017075887" style="fill: #000000;transform-box: fill-box;" transform-origin="425 425"> 1967 - <circle cx="400" cy="400" r="10"/> 1968 - </g> 1969 - <g data-object="--16976926388604098817" style="fill: #000000;transform-box: fill-box;" transform-origin="75 325"> 1970 - <circle cx="50" cy="300" r="10"/> 1971 - </g> 1972 - <g data-object="--9023640749101015360" style="fill: #000000;transform-box: fill-box;" transform-origin="25 125"> 1973 - <circle cx="0" cy="100" r="10"/> 1974 - </g> 1975 - <g data-object="--7281257313816860922" style="fill: #000000;transform-box: fill-box;" transform-origin="575 25"> 1976 - <circle cx="550" cy="0" r="10"/> 1977 - </g> 1978 - <g data-object="--337412597446937350" style="fill: #000000;transform-box: fill-box;" transform-origin="275 325"> 1979 - <circle cx="250" cy="300" r="10"/> 1980 - </g> 1981 - <g data-object="--8238115599992751780" style="fill: #000000;transform-box: fill-box;" transform-origin="25 425"> 1982 - <circle cx="0" cy="400" r="10"/> 1983 - </g> 1984 - <g data-object="--15766196805649389107" style="fill: #000000;transform-box: fill-box;" transform-origin="175 325"> 1985 - <circle cx="150" cy="300" r="10"/> 1986 - </g> 1987 - <g data-object="--13337288792159123754" style="fill: #000000;transform-box: fill-box;" transform-origin="675 225"> 1988 - <circle cx="650" cy="200" r="10"/> 1989 - </g> 1990 - <g data-object="--2616045416629958739" style="fill: #000000;transform-box: fill-box;" transform-origin="725 425"> 1991 - <circle cx="700" cy="400" r="10"/> 1992 - </g> 1993 - <g data-object="--2210094086658674042" style="fill: #000000;transform-box: fill-box;" transform-origin="25 475"> 1994 - <circle cx="0" cy="450" r="10"/> 1995 - </g> 1996 - <g data-object="--13022596781830211186" style="fill: #000000;transform-box: fill-box;" transform-origin="75 475"> 1997 - <circle cx="50" cy="450" r="10"/> 1998 - </g> 1999 - <g data-object="--3735554916642915866" style="fill: #000000;transform-box: fill-box;" transform-origin="375 475"> 2000 - <circle cx="350" cy="450" r="10"/> 2001 - </g> 2002 - <g data-object="--15222092456843005002" style="fill: #000000;transform-box: fill-box;" transform-origin="175 175"> 2003 - <circle cx="150" cy="150" r="10"/> 2004 - </g> 2005 - <g data-object="--7195168411254896611" style="fill: #000000;transform-box: fill-box;" transform-origin="525 475"> 2006 - <circle cx="500" cy="450" r="10"/> 2007 - </g> 2008 - <g data-object="--18231915498547452169" style="fill: #000000;transform-box: fill-box;" transform-origin="525 25"> 2009 - <circle cx="500" cy="0" r="10"/> 2010 - </g> 2011 - <g data-object="--5520592796932747962" style="fill: #000000;transform-box: fill-box;" transform-origin="325 275"> 2012 - <circle cx="300" cy="250" r="10"/> 2013 - </g> 2014 - <g data-object="--5130419373305423513" style="fill: #000000;transform-box: fill-box;" transform-origin="825 475"> 2015 - <circle cx="800" cy="450" r="10"/> 2016 - </g> 2017 - <g data-object="--5900071147294260141" style="fill: #000000;transform-box: fill-box;" transform-origin="25 25"> 2018 - <circle cx="0" cy="0" r="10"/> 2019 - </g> 2020 - <g data-object="--13029026124669303971" style="fill: #000000;transform-box: fill-box;" transform-origin="225 125"> 2021 - <circle cx="200" cy="100" r="10"/> 2022 - </g> 2023 - <g data-object="--12421376206641069742" style="fill: #000000;transform-box: fill-box;" transform-origin="325 175"> 2024 - <circle cx="300" cy="150" r="10"/> 2025 - </g> 2026 - <g data-object="--3629329302712993510" style="fill: #000000;transform-box: fill-box;" transform-origin="275 75"> 2027 - <circle cx="250" cy="50" r="10"/> 2028 - </g> 2029 - <g data-object="--16709702759956969007" style="fill: #000000;transform-box: fill-box;" transform-origin="25 325"> 2030 - <circle cx="0" cy="300" r="10"/> 2031 - </g> 2032 - <g data-object="--5102901758280307309" style="fill: #000000;transform-box: fill-box;" transform-origin="775 325"> 2033 - <circle cx="750" cy="300" r="10"/> 2034 - </g> 2035 - <g data-object="--16472594784268024155" style="fill: #000000;transform-box: fill-box;" transform-origin="275 425"> 2036 - <circle cx="250" cy="400" r="10"/> 2037 - </g> 2038 - <g data-object="--15689797651799451555" style="fill: #000000;transform-box: fill-box;" transform-origin="375 375"> 2039 - <circle cx="350" cy="350" r="10"/> 2040 - </g> 2041 - <g data-object="--2010992729943886186" style="fill: #000000;transform-box: fill-box;" transform-origin="175 275"> 2042 - <circle cx="150" cy="250" r="10"/> 2043 - </g> 2044 - <g data-object="--5268880146244475824" style="fill: #000000;transform-box: fill-box;" transform-origin="825 125"> 2045 - <circle cx="800" cy="100" r="10"/> 2046 - </g> 2047 - <g data-object="--10461182773825300676" style="fill: #000000;transform-box: fill-box;" transform-origin="275 125"> 2048 - <circle cx="250" cy="100" r="10"/> 2049 - </g> 2050 - <g data-object="--10341226425257332603" style="fill: #000000;transform-box: fill-box;" transform-origin="75 225"> 2051 - <circle cx="50" cy="200" r="10"/> 2052 - </g> 2053 - <g data-object="--14004843120596883721" style="fill: #000000;transform-box: fill-box;" transform-origin="125 225"> 2054 - <circle cx="100" cy="200" r="10"/> 2055 - </g> 2056 - </g> 2057 - <defs/> 2058 - </svg>
+1 -1
examples/schedule-hell/src/scenes/intro.rs
··· 27 27 let kicks_in = canvas.world_region.resized(-2, -2); 28 28 29 29 for (i, &corner) in kicks_in.corners().iter().enumerate() { 30 - kicks.set(format!("corner {i}"), SmallCircle(corner)) 30 + kicks.set(format!("corner {i}"), BigDot(corner)) 31 31 } 32 32 33 33 canvas.add_or_replace_layer(kicks);
+1 -1
src/geometry/mod.rs
··· 5 5 6 6 pub use angle::Angle; 7 7 pub use axis::Axis; 8 - pub use point::Point; 8 + pub use point::{Norm, Point}; 9 9 pub use region::{Containable, Region};
+55 -23
src/geometry/point.rs
··· 10 10 pub struct Point(pub usize, pub usize); 11 11 12 12 impl Point { 13 - pub fn translated(&self, dx: i32, dy: i32) -> Self { 14 - Self((self.0 as i32 + dx) as usize, (self.1 as i32 + dy) as usize) 13 + pub fn coords(&self, cell_size: usize) -> (f32, f32) { 14 + ( 15 + self.0 as f32 * cell_size as f32, 16 + self.1 as f32 * cell_size as f32, 17 + ) 15 18 } 16 19 17 - pub fn translated_by(&self, point: Point) -> Self { 18 - Self(self.0 + point.0, self.1 + point.1) 20 + pub fn region(&self) -> Region { 21 + Region::from((self.clone(), self.clone())) 22 + } 23 + 24 + pub fn set(&mut self, x: usize, y: usize) { 25 + self.0 = x; 26 + self.1 = y; 27 + } 28 + 29 + pub fn x(&self) -> usize { 30 + self.0 19 31 } 20 32 21 - pub fn region(&self) -> Region { 22 - Region { 23 - start: *self, 24 - end: *self, 25 - } 33 + pub fn y(&self) -> usize { 34 + self.1 26 35 } 27 36 28 - pub fn translate(&mut self, dx: i32, dy: i32) { 29 - self.0 = (self.0 as i32 + dx) as usize; 30 - self.1 = (self.1 as i32 + dy) as usize; 37 + pub fn translated(&self, dx: i32, dy: i32) -> Self { 38 + Self::from(( 39 + (self.x() as i32 + dx) as usize, 40 + (self.y() as i32 + dy) as usize, 41 + )) 31 42 } 32 43 33 - pub fn coords(&self, cell_size: usize) -> (f32, f32) { 34 - ((self.0 * cell_size) as f32, (self.1 * cell_size) as f32) 44 + pub fn translated_by(&self, point: Point) -> Self { 45 + Self::from((self.x() + point.x(), self.y() + point.y())) 46 + } 47 + 48 + pub fn translate(&mut self, dx: i32, dy: i32) { 49 + *self = Self::from(( 50 + (self.x() as i32 + dx) as usize, 51 + (self.y() as i32 + dy) as usize, 52 + )) 35 53 } 36 54 37 55 /// get SVG coordinates of the cell's center instead of its origin (top-left) 56 + #[deprecated = "Use a CenterPoint instead (WIP)"] 38 57 pub fn center_coords(&self, cell_size: usize) -> (f32, f32) { 39 58 let (x, y) = self.coords(cell_size); 40 59 (x + cell_size as f32 / 2.0, y + cell_size as f32 / 2.0) 41 60 } 42 61 43 - pub fn distances(&self, other: &Point) -> (usize, usize) { 44 - (self.0.abs_diff(other.0) + 1, self.1.abs_diff(other.1) + 1) 62 + pub fn distance_to(&self, other: &Point) -> (usize, usize) { 63 + ( 64 + self.x().abs_diff(other.x()) + 1, 65 + self.y().abs_diff(other.y()) + 1, 66 + ) 45 67 } 46 68 47 - pub fn rotated(&self, around: &Point, angle: Angle) -> Point { 69 + pub fn rotated(&self, around: &Point, angle: Angle) -> Self { 48 70 let (dx, dy) = ( 49 - self.0 as f32 - around.0 as f32, 50 - self.1 as f32 - around.1 as f32, 71 + self.x() as f32 - around.x() as f32, 72 + self.y() as f32 - around.y() as f32, 51 73 ); 52 74 53 75 let (cos, sin) = angle.cos_sin(); 54 76 let new_x = dx * cos - dy * sin; 55 77 let new_y = dx * sin + dy * cos; 56 78 57 - Point( 58 - (new_x + around.0 as f32) as usize, 59 - (new_y + around.1 as f32) as usize, 60 - ) 79 + Self::from(( 80 + (new_x + around.x() as f32) as usize, 81 + (new_y + around.y() as f32) as usize, 82 + )) 61 83 } 62 84 } 63 85 ··· 92 114 write!(f, "({}, {})", self.0, self.1) 93 115 } 94 116 } 117 + 118 + pub trait Norm { 119 + fn norm(&self) -> f32; 120 + } 121 + 122 + impl Norm for (usize, usize) { 123 + fn norm(&self) -> f32 { 124 + ((self.0 * self.0 + self.1 * self.1) as f32).sqrt() 125 + } 126 + }
+16 -14
src/geometry/region.rs
··· 36 36 37 37 /// Iterates all points outlining the region, in clockwise order starting from top-left 38 38 pub fn outline(&self) -> impl Iterator<Item = Point> { 39 - let top_edge = 40 - (self.start.0..=self.end.0).map(move |x| Point(x, self.start.1)); 39 + self.top_edge() 40 + .chain(self.right_edge().skip(1)) 41 + .chain(self.bottom_edge().rev().skip(1)) 42 + .chain(self.left_edge().rev().skip(1)) 43 + } 41 44 42 - let right_edge = 43 - (self.start.1 + 1..=self.end.1).map(move |y| Point(self.end.0, y)); 45 + pub fn top_edge(&self) -> impl DoubleEndedIterator<Item = Point> { 46 + (self.start.0..=self.end.0).map(move |x| Point(x, self.start.1)) 47 + } 44 48 45 - let bottom_edge = (self.start.0..self.end.0) 46 - .rev() 47 - .map(move |x| Point(x, self.end.1)); 49 + pub fn bottom_edge(&self) -> impl DoubleEndedIterator<Item = Point> { 50 + (self.start.0..=self.end.0).map(move |x| Point(x, self.end.1)) 51 + } 48 52 49 - let left_edge = (self.start.1 + 1..self.end.1) 50 - .rev() 51 - .map(move |y| Point(self.start.0, y)); 53 + pub fn left_edge(&self) -> impl DoubleEndedIterator<Item = Point> { 54 + (self.start.1..=self.end.1).map(move |y| Point(self.start.0, y)) 55 + } 52 56 53 - top_edge 54 - .chain(right_edge) 55 - .chain(bottom_edge) 56 - .chain(left_edge) 57 + pub fn right_edge(&self) -> impl DoubleEndedIterator<Item = Point> { 58 + (self.start.1..=self.end.1).map(move |y| Point(self.end.0, y)) 57 59 } 58 60 59 61 /// Corners of the region's outline
+4
src/graphics/layer.rs
··· 57 57 .find(|obj| obj.object.region().start == point) 58 58 } 59 59 60 + pub fn has_object_that(&self, pred: impl Fn(&ColoredObject) -> bool) -> bool { 61 + self.objects.values().any(|obj| pred(obj)) 62 + } 63 + 60 64 // Remove all objects. 61 65 pub fn clear(&mut self) { 62 66 self.objects.clear();
+38 -4
src/graphics/objects.rs
··· 1 - use crate::{Angle, Fill, Filter, Point, Region, Transformation}; 1 + use crate::{Angle, Point, Fill, Filter, Region, Transformation}; 2 2 use anyhow::anyhow; 3 3 use itertools::Itertools; 4 4 use std::fmt::Display; ··· 21 21 CurveOutward(Point, Point, f32), 22 22 CurveInward(Point, Point, f32), 23 23 SmallCircle(Point), 24 + BigDot(Point), 24 25 Dot(Point), 25 26 BigCircle(Point), 26 27 Text(Point, String, f32), ··· 253 254 Object::Text(anchor, _, _) 254 255 | Object::CenteredText(anchor, ..) 255 256 | Object::Dot(anchor) 256 - | Object::SmallCircle(anchor) => anchor.translate(dx, dy), 257 - Object::BigCircle(center) => center.translate(dx, dy), 257 + | Object::BigDot(anchor) => anchor.translate(dx, dy), 258 + Object::BigCircle(center) | Object::SmallCircle(center) => { 259 + center.translate(dx, dy) 260 + } 258 261 Object::Image(region, ..) => region.translate(dx, dy), 259 262 Object::RawSVG(_) => { 260 263 unimplemented!() ··· 300 303 } 301 304 Object::Line(Point(x1, y1), Point(x2, y2), _) 302 305 | Object::CurveInward(Point(x1, y1), Point(x2, y2), _) 303 - | Object::CurveOutward(Point(x1, y1), Point(x2, y2), _) => { 306 + | Object::CurveOutward(Point(x1, y1), Point(x2, y2), _) => 307 + { 304 308 let region = Region::new( 305 309 (x1.min(x2), y1.min(y2)), 306 310 (x1.max(x2), y1.max(y2)), ··· 321 325 Object::Text(anchor, _, _) 322 326 | Object::CenteredText(anchor, ..) 323 327 | Object::Dot(anchor) 328 + | Object::BigDot(anchor) 324 329 | Object::SmallCircle(anchor) => anchor.region(), 325 330 Object::BigCircle(center) => center.region(), 326 331 Object::Image(region, ..) => *region, ··· 339 344 340 345 pub fn hatchable(&self) -> bool { 341 346 self.fillable() && !matches!(self, Object::Dot(..)) 347 + } 348 + 349 + pub fn intersects_with(&self, line: Object) -> bool { 350 + match (self, &line) { 351 + (Object::Line(s1, e1, _), Object::Line(s2, e2, _)) => { 352 + let x1 = s1.x() as f32; 353 + let y1 = s1.y() as f32; 354 + let x2 = s2.x() as f32; 355 + let y2 = s2.y() as f32; 356 + let x3 = e1.x() as f32; 357 + let y3 = e1.y() as f32; 358 + let x4 = e2.x() as f32; 359 + let y4 = e2.y() as f32; 360 + 361 + let d1 = (x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3); 362 + let d2 = (x4 - x3) * (y2 - y3) - (y4 - y3) * (x2 - x3); 363 + let d3 = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1); 364 + let d4 = (x2 - x1) * (y4 - y1) - (y2 - y1) * (x4 - x1); 365 + 366 + return ((d1 > 0. && d2 < 0.) || (d1 < 0. && d2 > 0.)) 367 + && ((d3 > 0. && d4 < 0.) || (d3 < 0. && d4 > 0.)); 368 + } 369 + _ => { 370 + unimplemented!( 371 + "Intersection not implemented for {self:?} and {:?}", 372 + line.clone() 373 + ) 374 + } 375 + } 342 376 } 343 377 }
+1 -1
src/random/objects.rs
··· 13 13 match rng.random_range(1..=7) { 14 14 1 => Self::random_polygon(rng, region, polygon_vertices_range), 15 15 2 => Self::BigCircle(start), 16 - 3 => Self::SmallCircle(start), 16 + 3 => Self::BigDot(start), 17 17 4 => Self::Dot(start), 18 18 5 => Self::CurveInward( 19 19 start,
+29 -44
src/rendering/objects.rs
··· 2 2 use measure_time::debug_time; 3 3 4 4 use crate::{ 5 - ColoredObject, Object, 6 - graphics::objects::{LineSegment, ObjectSizes}, 5 + ColoredObject, Object, Point, graphics::objects::{LineSegment, ObjectSizes} 7 6 }; 8 7 9 8 use super::{ ··· 96 95 Object::CurveInward(..) | Object::CurveOutward(..) => { 97 96 self.render_curve(cell_size) 98 97 } 99 - Object::SmallCircle(..) => { 100 - self.render_small_circle(cell_size, object_sizes) 98 + Object::BigDot(..) 99 + | Object::Dot(..) 100 + | Object::BigCircle(..) 101 + | Object::SmallCircle(..) => { 102 + self.render_circle(cell_size, object_sizes) 101 103 } 102 - Object::Dot(..) => self.render_dot(cell_size, object_sizes), 103 - Object::BigCircle(..) => self.render_big_circle(cell_size), 104 104 Object::Image(..) => self.render_image(cell_size), 105 105 Object::RawSVG(..) => self.render_raw_svg(), 106 106 }; ··· 315 315 panic!("Expected Curve, got {:?}", self); 316 316 } 317 317 318 - fn render_small_circle( 318 + fn render_circle( 319 319 &self, 320 320 cell_size: usize, 321 321 object_sizes: ObjectSizes, 322 322 ) -> svg::Node { 323 - if let Object::SmallCircle(center) = self { 324 - return svg::tag("circle") 325 - .center_position(*center, cell_size) 326 - .attr("r", object_sizes.small_circle_radius) 327 - .into(); 328 - } 323 + let center = match self { 324 + Object::BigDot(at) | Object::Dot(at) => at.coords(cell_size), 325 + Object::BigCircle(at) | Object::SmallCircle(at) => { 326 + at.center_coords(cell_size) 327 + } 329 328 330 - panic!("Expected SmallCircle, got {:?}", self); 331 - } 329 + _ => panic!( 330 + "Expected BigDot, Dot, BigCircle or SmallCircle, got {:?}", 331 + self 332 + ), 333 + }; 332 334 333 - fn render_dot( 334 - &self, 335 - cell_size: usize, 336 - object_sizes: ObjectSizes, 337 - ) -> svg::Node { 338 - if let Object::Dot(center) = self { 339 - return svg::tag("circle") 340 - .center_position(*center, cell_size) 341 - .attr("r", object_sizes.dot_radius) 342 - .into(); 343 - } 335 + let radius = match self { 336 + Object::BigDot(_) => object_sizes.small_circle_radius, 337 + Object::Dot(_) => object_sizes.dot_radius, 338 + Object::BigCircle(_) => cell_size as f32 / 2.0, 339 + Object::SmallCircle(_) => object_sizes.small_circle_radius, 340 + _ => unreachable!(), 341 + }; 344 342 345 - panic!("Expected Dot, got {:?}", self); 346 - } 347 - 348 - fn render_big_circle(&self, cell_size: usize) -> svg::Node { 349 - if let Object::BigCircle(topleft) = self { 350 - let (cx, cy) = { 351 - let (x, y) = topleft.coords(cell_size); 352 - (x + cell_size as f32 / 2.0, y + cell_size as f32 / 2.0) 353 - }; 354 - 355 - return svg::tag("circle") 356 - .attr("cx", cx) 357 - .attr("cy", cy) 358 - .attr("r", cell_size / 2) 359 - .into(); 360 - } 361 - 362 - panic!("Expected BigCircle, got {:?}", self); 343 + return svg::tag("circle") 344 + .attr("cx", center.0) 345 + .attr("cy", center.1) 346 + .attr("r", radius) 347 + .into(); 363 348 } 364 349 }