Fix mirror2d selection by adding artifact graph support (#7178)

* Add artifact graph support for mirror2d

* Update output

* Disable test that can't pass
This commit is contained in:
Jonathan Tran
2025-05-23 11:16:36 -04:00
committed by GitHub
parent d0958220fe
commit db9e35d686
7 changed files with 3154 additions and 993 deletions

View File

@ -31,56 +31,110 @@ flowchart LR
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 14 }]
25["Segment<br>[1287, 1309, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 15 }]
26["Segment<br>[1339, 1346, 0]"]
26["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
27["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
28["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
29["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
30["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
31["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
32["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
33["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
34["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
35["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
36["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
37["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
38["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
39["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
40["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
41["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
42["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
43["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
44["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
45["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
46["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
47["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
48["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
49["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
50["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
51["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
52["Segment<br>[1315, 1333, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 16 }]
53["Segment<br>[1339, 1346, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 17 }]
44[Solid2d]
71[Solid2d]
end
subgraph path8 [Path]
8["Path<br>[1517, 1560, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
27["Segment<br>[1566, 1601, 0]"]
54["Segment<br>[1566, 1601, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
28["Segment<br>[1607, 1668, 0]"]
55["Segment<br>[1607, 1668, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
29["Segment<br>[1674, 1743, 0]"]
56["Segment<br>[1674, 1743, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
30["Segment<br>[1749, 1811, 0]"]
57["Segment<br>[1749, 1811, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
31["Segment<br>[1817, 1880, 0]"]
58["Segment<br>[1817, 1880, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
32["Segment<br>[1886, 1947, 0]"]
59["Segment<br>[1886, 1947, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
33["Segment<br>[1953, 2016, 0]"]
60["Segment<br>[1953, 2016, 0]"]
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 8 }]
end
subgraph path9 [Path]
9["Path<br>[2162, 2237, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
34["Segment<br>[2162, 2237, 0]"]
61["Segment<br>[2162, 2237, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
43[Solid2d]
70[Solid2d]
end
subgraph path10 [Path]
10["Path<br>[2264, 2355, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }, CallKwArg { index: 0 }]
35["Segment<br>[2264, 2355, 0]"]
62["Segment<br>[2264, 2355, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }, CallKwArg { index: 0 }]
41[Solid2d]
68[Solid2d]
end
subgraph path11 [Path]
11["Path<br>[2552, 2584, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 1 }]
36["Segment<br>[2590, 2680, 0]"]
63["Segment<br>[2590, 2680, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 2 }]
37["Segment<br>[2686, 2723, 0]"]
64["Segment<br>[2686, 2723, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
38["Segment<br>[2729, 2882, 0]"]
65["Segment<br>[2729, 2882, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 4 }]
39["Segment<br>[2888, 2944, 0]"]
66["Segment<br>[2888, 2944, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 5 }]
40["Segment<br>[2950, 2957, 0]"]
67["Segment<br>[2950, 2957, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 6 }]
42[Solid2d]
69[Solid2d]
end
1["Plane<br>[554, 571, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
@ -94,40 +148,152 @@ flowchart LR
%% [ProgramBodyItem { index: 4 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
6["StartSketchOnPlane<br>[2110, 2156, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 0 }]
45["Sweep Extrusion<br>[1352, 1390, 0]"]
72["Sweep Extrusion<br>[1352, 1390, 0]"]
%% [ProgramBodyItem { index: 3 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 18 }]
46["Sweep Sweep<br>[2362, 2390, 0]"]
73["Sweep Sweep<br>[2362, 2390, 0]"]
%% [ProgramBodyItem { index: 5 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 3 }]
47["Sweep Extrusion<br>[2963, 3001, 0]"]
74["Sweep Extrusion<br>[2963, 3001, 0]"]
%% [ProgramBodyItem { index: 6 }, VariableDeclarationDeclaration, VariableDeclarationInit, PipeBodyItem { index: 7 }]
48[Wall]
75[Wall]
%% face_code_ref=Missing NodePath
49[Wall]
76[Wall]
%% face_code_ref=Missing NodePath
50[Wall]
77[Wall]
%% face_code_ref=Missing NodePath
51[Wall]
78[Wall]
%% face_code_ref=Missing NodePath
52[Wall]
79[Wall]
%% face_code_ref=Missing NodePath
53["Cap Start"]
80[Wall]
%% face_code_ref=Missing NodePath
54["Cap Start"]
81[Wall]
%% face_code_ref=Missing NodePath
55["Cap Start"]
82[Wall]
%% face_code_ref=Missing NodePath
56["Cap End"]
83[Wall]
%% face_code_ref=Missing NodePath
57["SweepEdge Opposite"]
58["SweepEdge Opposite"]
59["SweepEdge Opposite"]
60["SweepEdge Opposite"]
61["SweepEdge Opposite"]
62["SweepEdge Adjacent"]
63["SweepEdge Adjacent"]
64["SweepEdge Adjacent"]
65["SweepEdge Adjacent"]
66["SweepEdge Adjacent"]
84[Wall]
%% face_code_ref=Missing NodePath
85[Wall]
%% face_code_ref=Missing NodePath
86[Wall]
%% face_code_ref=Missing NodePath
87[Wall]
%% face_code_ref=Missing NodePath
88[Wall]
%% face_code_ref=Missing NodePath
89[Wall]
%% face_code_ref=Missing NodePath
90[Wall]
%% face_code_ref=Missing NodePath
91[Wall]
%% face_code_ref=Missing NodePath
92[Wall]
%% face_code_ref=Missing NodePath
93[Wall]
%% face_code_ref=Missing NodePath
94[Wall]
%% face_code_ref=Missing NodePath
95[Wall]
%% face_code_ref=Missing NodePath
96[Wall]
%% face_code_ref=Missing NodePath
97[Wall]
%% face_code_ref=Missing NodePath
98[Wall]
%% face_code_ref=Missing NodePath
99[Wall]
%% face_code_ref=Missing NodePath
100[Wall]
%% face_code_ref=Missing NodePath
101[Wall]
%% face_code_ref=Missing NodePath
102[Wall]
%% face_code_ref=Missing NodePath
103[Wall]
%% face_code_ref=Missing NodePath
104[Wall]
%% face_code_ref=Missing NodePath
105[Wall]
%% face_code_ref=Missing NodePath
106[Wall]
%% face_code_ref=Missing NodePath
107["Cap Start"]
%% face_code_ref=Missing NodePath
108["Cap Start"]
%% face_code_ref=Missing NodePath
109["Cap Start"]
%% face_code_ref=Missing NodePath
110["Cap Start"]
%% face_code_ref=Missing NodePath
111["Cap End"]
%% face_code_ref=Missing NodePath
112["Cap End"]
%% face_code_ref=Missing NodePath
113["SweepEdge Opposite"]
114["SweepEdge Opposite"]
115["SweepEdge Opposite"]
116["SweepEdge Opposite"]
117["SweepEdge Opposite"]
118["SweepEdge Opposite"]
119["SweepEdge Opposite"]
120["SweepEdge Opposite"]
121["SweepEdge Opposite"]
122["SweepEdge Opposite"]
123["SweepEdge Opposite"]
124["SweepEdge Opposite"]
125["SweepEdge Opposite"]
126["SweepEdge Opposite"]
127["SweepEdge Opposite"]
128["SweepEdge Opposite"]
129["SweepEdge Opposite"]
130["SweepEdge Opposite"]
131["SweepEdge Opposite"]
132["SweepEdge Opposite"]
133["SweepEdge Opposite"]
134["SweepEdge Opposite"]
135["SweepEdge Opposite"]
136["SweepEdge Opposite"]
137["SweepEdge Opposite"]
138["SweepEdge Opposite"]
139["SweepEdge Opposite"]
140["SweepEdge Opposite"]
141["SweepEdge Opposite"]
142["SweepEdge Opposite"]
143["SweepEdge Opposite"]
144["SweepEdge Opposite"]
145["SweepEdge Adjacent"]
146["SweepEdge Adjacent"]
147["SweepEdge Adjacent"]
148["SweepEdge Adjacent"]
149["SweepEdge Adjacent"]
150["SweepEdge Adjacent"]
151["SweepEdge Adjacent"]
152["SweepEdge Adjacent"]
153["SweepEdge Adjacent"]
154["SweepEdge Adjacent"]
155["SweepEdge Adjacent"]
156["SweepEdge Adjacent"]
157["SweepEdge Adjacent"]
158["SweepEdge Adjacent"]
159["SweepEdge Adjacent"]
160["SweepEdge Adjacent"]
161["SweepEdge Adjacent"]
162["SweepEdge Adjacent"]
163["SweepEdge Adjacent"]
164["SweepEdge Adjacent"]
165["SweepEdge Adjacent"]
166["SweepEdge Adjacent"]
167["SweepEdge Adjacent"]
168["SweepEdge Adjacent"]
169["SweepEdge Adjacent"]
170["SweepEdge Adjacent"]
171["SweepEdge Adjacent"]
172["SweepEdge Adjacent"]
173["SweepEdge Adjacent"]
174["SweepEdge Adjacent"]
175["SweepEdge Adjacent"]
176["SweepEdge Adjacent"]
1 --- 7
2 <--x 5
2 --- 8
@ -150,83 +316,409 @@ flowchart LR
7 --- 24
7 --- 25
7 --- 26
7 --- 27
7 --- 28
7 --- 29
7 --- 30
7 --- 31
7 --- 32
7 --- 33
7 --- 34
7 --- 35
7 --- 36
7 --- 37
7 --- 38
7 --- 39
7 --- 40
7 --- 41
7 --- 42
7 --- 43
7 --- 44
7 ---- 45
8 --- 27
8 --- 28
8 --- 29
8 --- 30
8 --- 31
8 --- 32
8 --- 33
9 --- 34
9 --- 43
9 ---- 46
10 --- 35
10 --- 41
11 --- 36
11 --- 37
11 --- 38
11 --- 39
11 --- 40
11 --- 42
11 ---- 47
34 --- 48
34 x--> 55
34 --- 57
34 --- 62
36 --- 49
36 x--> 53
36 --- 61
36 --- 66
37 --- 50
37 x--> 53
37 --- 60
37 --- 65
38 --- 51
38 x--> 53
38 --- 59
38 --- 64
39 --- 52
39 x--> 53
39 --- 58
39 --- 63
46 --- 48
46 --- 54
46 --- 55
46 --- 57
46 --- 62
47 --- 49
47 --- 50
47 --- 51
47 --- 52
47 --- 53
47 --- 56
47 --- 58
47 --- 59
47 --- 60
47 --- 61
47 --- 63
47 --- 64
47 --- 65
47 --- 66
48 --- 57
48 --- 62
49 --- 61
63 <--x 49
49 --- 66
50 --- 60
50 --- 65
66 <--x 50
51 --- 59
51 --- 64
65 <--x 51
52 --- 58
52 --- 63
64 <--x 52
57 <--x 54
58 <--x 56
59 <--x 56
60 <--x 56
61 <--x 56
7 --- 45
7 --- 46
7 --- 47
7 --- 48
7 --- 49
7 --- 50
7 --- 51
7 --- 52
7 --- 53
7 --- 71
7 ---- 72
8 --- 54
8 --- 55
8 --- 56
8 --- 57
8 --- 58
8 --- 59
8 --- 60
9 --- 61
9 --- 70
9 ---- 73
10 --- 62
10 --- 68
11 --- 63
11 --- 64
11 --- 65
11 --- 66
11 --- 67
11 --- 69
11 ---- 74
26 --- 75
26 x--> 108
26 --- 138
26 --- 170
27 --- 76
27 x--> 108
27 --- 124
27 --- 156
28 --- 77
28 x--> 108
28 --- 137
28 --- 169
29 --- 78
29 x--> 108
29 --- 133
29 --- 165
30 --- 79
30 x--> 108
30 --- 116
30 --- 148
31 --- 80
31 x--> 108
31 --- 115
31 --- 147
32 --- 81
32 x--> 108
32 --- 118
32 --- 150
33 --- 82
33 x--> 108
33 --- 134
33 --- 166
34 --- 83
34 x--> 108
34 --- 129
34 --- 161
35 --- 84
35 x--> 108
35 --- 127
35 --- 159
36 --- 85
36 x--> 108
36 --- 132
36 --- 164
37 --- 86
37 x--> 108
37 --- 122
37 --- 154
38 --- 87
38 x--> 108
38 --- 123
38 --- 155
39 --- 88
39 x--> 108
39 --- 131
39 --- 163
40 --- 89
40 x--> 108
40 --- 119
40 --- 151
41 --- 90
41 x--> 108
41 --- 130
41 --- 162
42 --- 91
42 x--> 108
42 --- 114
42 --- 146
43 --- 92
43 x--> 108
43 --- 125
43 --- 157
44 --- 93
44 x--> 108
44 --- 121
44 --- 153
45 --- 94
45 x--> 108
45 --- 135
45 --- 167
46 --- 95
46 x--> 108
46 --- 120
46 --- 152
47 --- 96
47 x--> 108
47 --- 126
47 --- 158
48 --- 97
48 x--> 108
48 --- 117
48 --- 149
49 --- 98
49 x--> 108
49 --- 113
49 --- 145
50 --- 99
50 x--> 108
50 --- 136
50 --- 168
51 --- 100
51 x--> 108
51 --- 128
51 --- 160
52 --- 101
52 x--> 108
52 --- 139
52 --- 171
61 --- 102
61 x--> 109
61 --- 140
61 --- 172
63 --- 103
63 x--> 107
63 --- 144
63 --- 176
64 --- 104
64 x--> 107
64 --- 143
64 --- 175
65 --- 105
65 x--> 107
65 --- 142
65 --- 174
66 --- 106
66 x--> 107
66 --- 141
66 --- 173
72 --- 75
72 --- 76
72 --- 77
72 --- 78
72 --- 79
72 --- 80
72 --- 81
72 --- 82
72 --- 83
72 --- 84
72 --- 85
72 --- 86
72 --- 87
72 --- 88
72 --- 89
72 --- 90
72 --- 91
72 --- 92
72 --- 93
72 --- 94
72 --- 95
72 --- 96
72 --- 97
72 --- 98
72 --- 99
72 --- 100
72 --- 101
72 --- 108
72 --- 112
72 --- 113
72 --- 114
72 --- 115
72 --- 116
72 --- 117
72 --- 118
72 --- 119
72 --- 120
72 --- 121
72 --- 122
72 --- 123
72 --- 124
72 --- 125
72 --- 126
72 --- 127
72 --- 128
72 --- 129
72 --- 130
72 --- 131
72 --- 132
72 --- 133
72 --- 134
72 --- 135
72 --- 136
72 --- 137
72 --- 138
72 --- 139
72 --- 145
72 --- 146
72 --- 147
72 --- 148
72 --- 149
72 --- 150
72 --- 151
72 --- 152
72 --- 153
72 --- 154
72 --- 155
72 --- 156
72 --- 157
72 --- 158
72 --- 159
72 --- 160
72 --- 161
72 --- 162
72 --- 163
72 --- 164
72 --- 165
72 --- 166
72 --- 167
72 --- 168
72 --- 169
72 --- 170
72 --- 171
73 --- 102
73 --- 109
73 --- 110
73 --- 140
73 --- 172
74 --- 103
74 --- 104
74 --- 105
74 --- 106
74 --- 107
74 --- 111
74 --- 141
74 --- 142
74 --- 143
74 --- 144
74 --- 173
74 --- 174
74 --- 175
74 --- 176
75 --- 138
75 --- 170
171 <--x 75
76 --- 124
76 --- 156
157 <--x 76
77 --- 137
77 --- 169
170 <--x 77
78 --- 133
78 --- 165
166 <--x 78
79 --- 116
79 --- 148
149 <--x 79
80 --- 115
80 --- 147
148 <--x 80
81 --- 118
81 --- 150
151 <--x 81
82 --- 134
82 --- 166
167 <--x 82
83 --- 129
83 --- 161
162 <--x 83
84 --- 127
84 --- 159
160 <--x 84
85 --- 132
85 --- 164
165 <--x 85
86 --- 122
86 --- 154
155 <--x 86
87 --- 123
87 --- 155
156 <--x 87
88 --- 131
88 --- 163
164 <--x 88
89 --- 119
89 --- 151
152 <--x 89
90 --- 130
90 --- 162
163 <--x 90
91 --- 114
91 --- 146
147 <--x 91
92 --- 125
92 --- 157
158 <--x 92
93 --- 121
93 --- 153
154 <--x 93
94 --- 135
94 --- 167
168 <--x 94
95 --- 120
95 --- 152
153 <--x 95
96 --- 126
96 --- 158
159 <--x 96
97 --- 117
97 --- 149
150 <--x 97
98 --- 113
98 --- 145
146 <--x 98
99 --- 136
99 --- 168
169 <--x 99
100 --- 128
100 --- 160
161 <--x 100
101 --- 139
145 <--x 101
101 --- 171
102 --- 140
102 --- 172
103 --- 144
173 <--x 103
103 --- 176
104 --- 143
104 --- 175
176 <--x 104
105 --- 142
105 --- 174
175 <--x 105
106 --- 141
106 --- 173
174 <--x 106
140 <--x 110
141 <--x 111
142 <--x 111
143 <--x 111
144 <--x 111
113 <--x 112
114 <--x 112
115 <--x 112
116 <--x 112
117 <--x 112
118 <--x 112
119 <--x 112
120 <--x 112
121 <--x 112
122 <--x 112
123 <--x 112
124 <--x 112
125 <--x 112
126 <--x 112
127 <--x 112
128 <--x 112
129 <--x 112
130 <--x 112
131 <--x 112
132 <--x 112
133 <--x 112
134 <--x 112
135 <--x 112
136 <--x 112
137 <--x 112
138 <--x 112
139 <--x 112
```