-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathricochet_robot.drawio
426 lines (426 loc) · 47.1 KB
/
ricochet_robot.drawio
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
<mxGraphModel dx="0" dy="0" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" background="none" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="node9" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Application</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Application(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">~ gameController: GameController<br/>~ game: Game</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ start(Stage): void<br/>+ main(String[]): void<br/>- initKeyEventHandler(Scene): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="2350" y="1874" width="225" height="166" as="geometry" />
</mxCell>
<mxCell id="node12" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Board</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">~ Board(List&lt;Goal&gt;, int): <br/>+ Board(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- symbols: List&lt;Symbol&gt;<br/>- currentRobot: Robot<br/>- goalsNumber: int<br/>- miniBoards: Cell[][][]<br/>- goalRobot: Robot<br/>- goalBox: Cell[][]<br/>- robots: List&lt;Robot&gt;<br/>- cells: Cell[][]<br/>- randomColumn: List&lt;Integer&gt;<br/>- randomRow: List&lt;Integer&gt;<br/>- currentGoal: Symbol<br/>- goals: List&lt;Symbol&gt;</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- addWallsToMiniBoards(): void<br/>+ makeCentralBox(): void<br/>+ setCurrentGoal(Goal): void<br/>+ constructBoardFromMiniBoards(): void<br/>+ setSymbolInGoalBox(Symbol): void<br/>+ getCurrentGoal(): Symbol<br/>+ addRobotsToBoard(): void<br/>+ setGoalList(): void<br/>+ getCell(Position): Cell<br/>+ setCells(Cell[][]): void<br/>+ setSymbolsOnCell(): void<br/>+ getCells(): Cell[][]<br/>+ getRandomRow(): List&lt;Integer&gt;<br/>+ addWallInACell(int, int, Orientation): void<br/>+ getRandomColumn(): List&lt;Integer&gt;<br/>+ setSymbols(): void<br/>- initMiniBoards(): void<br/>+ createBoard(): void<br/>- rotateMiniBoardRight(int, int): void<br/>+ addWallsOnBoard(): void<br/>+ getGoals(): List&lt;Symbol&gt;<br/>+ getSymbols(): List&lt;Symbol&gt;</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="510" y="691" width="269" height="826" as="geometry" />
</mxCell>
<mxCell id="node2" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Cell</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">~ Cell(Position, List&lt;Wall&gt;): <br/>+ Cell(Position): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- position: Position<br/>- isThereARobot: boolean<br/>- isThereASymbol: boolean<br/>- currentRobot: Robot<br/>- isThereWall: boolean<br/>- walls: List&lt;Wall&gt;<br/>- symbol: Symbol</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ getSymbol(): Symbol<br/>+ getIsThereWall(): boolean<br/>+ removeRobot(): void<br/>+ setWalls(List&lt;Wall&gt;): void<br/>+ getIsThereARobot(): boolean<br/>+ getPosition(): Position<br/>+ setPosition(Position): void<br/>+ addSymbol(Symbol): void<br/>+ getCurrentRobot(): Robot<br/>+ rotateWallsRight(int): void<br/>+ addRobot(Robot): void<br/>+ getIsThereASymbol(): boolean<br/>+ addWalls(Orientation): void<br/>+ getWalls(): List&lt;Wall&gt;</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="1254" y="1120" width="209" height="540" as="geometry" />
</mxCell>
<mxCell id="node7" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Game</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Game(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ context: Game<br/>- initialRobotPositions: Map&lt;String, Position&gt;<br/>- playerOne: Player<br/>- currentGoal: Symbol<br/>+ Status: Status<br/>- board: Board<br/>- playerTwo: Player<br/>- goalCursor: int</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ setPlayerOne(Player): void<br/>+ setFirstTurn(): void<br/>+ isValidMove(Cell, Orientation): boolean<br/>+ play(): void<br/>+ getCurrentGoal(): Symbol<br/>+ setNextTurn(): void<br/>+ setInitialRobotPositionAtIndex(Position, Color): void<br/>+ getInitialRobotPositions(): Map&lt;String, Position&gt;<br/>- replaceRobots(): void<br/>+ itIsWin(Robot): boolean<br/>+ setGoalCursor(int): void<br/>+ getBoard(): Board<br/>+ getPlayerOne(): Player<br/>+ getPlayerTwo(): Player<br/>+ reinitializePlayers(): void<br/>+ nextGoalOrGameOver(): void<br/>+ setPlayerTwo(Player): void<br/>+ move(Cell, Orientation): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="2738" y="1198" width="324" height="628" as="geometry" />
</mxCell>
<mxCell id="node16" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>GameController</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ GameController(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- namePlayerOne: Label<br/>- roundsWonPlayerOne: Label<br/>- boardPane: GridPane<br/>- scorePlayerOne: Label<br/>- launchTimer: int<br/>- timeline: Timeline<br/>- radioPlayerTwo: RadioButton<br/>- splitTimerLabel: Label<br/>- titlePlayerTwo: Label<br/>- isTheTimerStopped: boolean<br/>- scorePlayerTwo: Label<br/>- currentColum: Map&lt;Robot, Integer&gt;<br/>- hitsNumberChoicePlayerOne: Label<br/>+ selectedRobot: Robot<br/>- timerText: Label<br/>- spinnerPlayerOne: Spinner&lt;Integer&gt;<br/>- splitTimeSeconds: DoubleProperty<br/>- splitTime: Duration<br/>- indicationNumberOfHits: Text<br/>- time: Duration<br/>- indication: Label<br/>- hitsNumberChoicePlayerTwo: Label<br/>- goalCenterImage: ImageView<br/>- titlePlayerOne: Label<br/>- currentRow: Map&lt;Robot, Integer&gt;<br/>- radioPlayerOne: RadioButton<br/>- roundsWonPlayerTwo: Label<br/>- spinnerPlayerTwo: Spinner&lt;Integer&gt;<br/>- timeSeconds: DoubleProperty<br/>- currentImageGoal: ImageView<br/>- timerLabel: Label<br/>- board: Pane[][]<br/>- gameBtn: Button<br/>- dotPlayerTwo: Label<br/>- namePlayerTwo: Label<br/>- filePathRoot: String<br/>- dotPlayerOne: Label<br/>- game: Game<br/>- stateRound: Text<br/>- radioGroup: ToggleGroup<br/>- itIsWin: boolean</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- updateRobotDisplay(Position, Position): void<br/>+ getItIsWin(): boolean<br/>+ itIsFinished(): boolean<br/>- boardGeneration(): void<br/>+ handleGameBtn(): void<br/>+ setHits(): void<br/>+ initialize(URL, ResourceBundle): void<br/>- removeRobotFromCell(Position): void<br/>- displayGoal(): void<br/>- movePlayer(): void<br/>+ getScorePlayerTwo(): Label<br/>- getPositionRobots(): void<br/>- launchSpinners(): void<br/>+ reinitializeRobot(): void<br/>- addRobotToCell(Position): void<br/>+ getScorePlayerOne(): Label<br/>- getRobotImageFilename(Color): String<br/>+ move(Orientation): void<br/>- timer(): void<br/>+ getFirstFinderPlayer(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="2154" y="-15" width="287" height="1398" as="geometry" />
</mxCell>
<mxCell id="node4" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Goal</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">~ Goal(Color, Shape, Position): </p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="988" y="1419" width="204" height="58" as="geometry" />
</mxCell>
<mxCell id="node10" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>HelloController</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ HelloController(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- welcomeText: Label</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;"># onHelloButtonClick(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="3122" y="1369" width="188" height="108" as="geometry" />
</mxCell>
<mxCell id="node8" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;enumeration&gt;&gt;</i><br/><b>Orientation</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- Orientation(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ SOUTH: <br/>+ NORTH: <br/>+ WEST: <br/>+ EAST: </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ values(): Orientation[]<br/>+ valueOf(String): Orientation</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="3934" y="1285" width="191" height="188" as="geometry" />
</mxCell>
<mxCell id="node15" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Player</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Player(String): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- hitsNumber: int<br/>- name: String<br/>- haveAlreadyPlayed: boolean<br/>- wonRounds: int<br/>- roundWon: boolean<br/>- iHaveTheNumberOfHitsFirst: boolean<br/>- hitsNumberChoice: int<br/>- isMyTurn: boolean</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ getHitsNumber(): int<br/>+ getWonRounds(): int<br/>+ getHitsNumberChoice(): int<br/>+ setHaveAlreadyPlayed(boolean): void<br/>+ getName(): String<br/>+ addAnotherWonRound(): void<br/>+ setIsMyTurn(boolean): void<br/>+ isHaveAlreadyPlayed(): boolean<br/>+ setHitsNumber(int): void<br/>+ setRoundWon(boolean): void<br/>+ getIsMyTurn(): boolean<br/>+ getIsIHaveTheNumberOfHitsFirst(): boolean<br/>+ setiHaveTheNumberOfHitsFirst(boolean): void<br/>+ setWonRounds(int): void<br/>+ isRoundWon(): boolean<br/>+ setName(String): void<br/>+ setHitsNumberChoice(int): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="1523" y="1308" width="293" height="606" as="geometry" />
</mxCell>
<mxCell id="node0" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Position</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Position(int, int): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- column: int<br/>- row: int</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ nextPosition(Orientation): Position<br/>+ setRow(int): void<br/>+ getColumn(): int<br/>+ setColumn(int): void<br/>+ getRow(): int</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="3371" y="1396" width="230" height="210" as="geometry" />
</mxCell>
<mxCell id="node6" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Robot</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Robot(Color): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- color: Color<br/>- oldPosition: Position<br/>- isTheGoalRobot: boolean<br/>- currentCell: Cell</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ setCurrentCell(Cell): void<br/>+ isTheGoalRobot(): boolean<br/>+ setColor(Color): void<br/>+ setTheGoalRobot(boolean): void<br/>+ getCurrentCell(): Cell<br/>+ getOldPosition(): Position<br/>+ getColor(): Color<br/>+ setOldPosition(Position): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="2455" y="1444" width="222" height="320" as="geometry" />
</mxCell>
<mxCell id="node5" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><i>&lt;&lt;enumeration&gt;&gt;</i><br/><b>Shape</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- Shape(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ GEAR: <br/>+ MOON: <br/>+ VORTEX: <br/>+ PLANET: <br/>+ STAR: </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ values(): Shape[]<br/>+ valueOf(String): Shape</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="2096" y="1980" width="164" height="210" as="geometry" />
</mxCell>
<mxCell id="node11" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Symbol</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Symbol(Color, Shape, Position): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- shape: Shape<br/>- position: Position<br/>- isItAGoal: boolean<br/>- color: Color</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ display(): void<br/>+ setColor(Color): void<br/>+ getTheShape(): Shape<br/>+ isItAGoal(): boolean<br/>+ getPosition(): Position<br/>+ setPosition(Position): void<br/>+ setShape(Shape): void<br/>+ getColor(): Color<br/>+ setItAGoal(boolean): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="306" y="1626" width="219" height="342" as="geometry" />
</mxCell>
<mxCell id="node1" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>TestBoard</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ TestBoard(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ testCreateBoard(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="-75" y="1406" width="172" height="83" as="geometry" />
</mxCell>
<mxCell id="node13" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>TestCell</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ TestCell(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ testAddWallsIsTrue(): void<br/>+ testAddSymbol(): void<br/>+ testAddRobotIsTrue(): void<br/>+ testRotateWallsRight(): void<br/>+ testRemoveRobot(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="175" y="1351" width="197" height="165" as="geometry" />
</mxCell>
<mxCell id="node17" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>TestGame</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ TestGame(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ testNextGoalOrGameOverForLaunchTimer(): void<br/>+ testItIsWinForFalse(): void<br/>+ testMove(): void<br/>+ testSetNextTurnForTheLastPlayer(): void<br/>+ testSetNextTurnForEnd(): void<br/>+ testSetFirstTurnForPlayerTwo(): void<br/>+ testNextGoalOrGameOverForNextGoal(): void<br/>+ testItIsWinForPlayerOne(): void<br/>+ testItIsWinForTrue(): void<br/>+ testSetNextTurnForTheNextPlayer(): void<br/>+ testItIsWinForEndRound(): void<br/>+ testIsValidMoveTrue(): void<br/>+ testIsValidMoveFalse(): void<br/>+ testSetFirstTurnForPlayerOne(): void<br/>+ testNextGoalOrGameOverForGameOver(): void<br/>+ testItIsWinForPlayerTwo(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="1877" y="1497" width="308" height="407" as="geometry" />
</mxCell>
<mxCell id="node14" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>TestPosition</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ TestPosition(): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ testNextPosition(): void</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="806" y="1578" width="172" height="83" as="geometry" />
</mxCell>
<mxCell id="node3" parent="1" vertex="1" value="<p style="margin:0px;margin-top:4px;text-align:center;"><b>Wall</b></p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ Wall(Orientation): </p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">- orientation: Orientation</p><hr size="1"/><p style="margin:0 0 0 4px;line-height:1.6;">+ setOrientation(Orientation): void<br/>+ getOrientation(): Orientation</p>" style="verticalAlign=top;align=left;overflow=fill;fontSize=14;fontFamily=Helvetica;html=1;rounded=0;shadow=0;comic=0;labelBackgroundColor=none;strokeWidth=1;">
<mxGeometry x="3653" y="1210" width="221" height="132" as="geometry" />
</mxCell>
<mxCell id="edge6" edge="1" value="" parent="1" source="node9" target="node7" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2462" y="1851" />
<mxPoint x="2900" y="1851" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label36" parent="edge6" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2851" y="1832" as="geometry" />
</mxCell>
<mxCell id="label40" parent="edge6" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2451" y="1853" as="geometry" />
</mxCell>
<mxCell id="label41" parent="edge6" vertex="1" connectable="0" value="game" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2794" y="1851" as="geometry" />
</mxCell>
<mxCell id="edge1" edge="1" value="" parent="1" source="node9" target="node16" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.500;exitDx=0;exitDy=0;entryX=1.000;entryY=0.489;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="3094" y="1957" />
<mxPoint x="3094" y="669" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label6" parent="edge1" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2462" y="669" as="geometry" />
</mxCell>
<mxCell id="label10" parent="edge1" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3073" y="665" as="geometry" />
</mxCell>
<mxCell id="label11" parent="edge1" vertex="1" connectable="0" value="gameController" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2461" y="615" as="geometry" />
</mxCell>
<mxCell id="edge9" edge="1" value="" parent="1" source="node12" target="node2" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.480;exitDx=0;exitDy=0;entryX=0.964;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1328" y="1087" />
<mxPoint x="1328" y="997" />
<mxPoint x="1455" y="997" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label54" parent="edge9" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1317" y="1069" as="geometry" />
</mxCell>
<mxCell id="label58" parent="edge9" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1455" y="1096" as="geometry" />
</mxCell>
<mxCell id="label59" parent="edge9" vertex="1" connectable="0" value="cells" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1425" y="1096" as="geometry" />
</mxCell>
<mxCell id="edge13" edge="1" value="" parent="1" source="node12" target="node6" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.498;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1343" y="1102" />
<mxPoint x="1343" y="891" />
<mxPoint x="2132" y="891" />
<mxPoint x="2132" y="1414" />
<mxPoint x="2566" y="1414" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label78" parent="edge13" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="784" y="1098" as="geometry" />
</mxCell>
<mxCell id="label82" parent="edge13" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2566" y="1419" as="geometry" />
</mxCell>
<mxCell id="label83" parent="edge13" vertex="1" connectable="0" value="robots" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2527" y="1419" as="geometry" />
</mxCell>
<mxCell id="edge20" edge="1" value="" parent="1" source="node12" target="node11" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="644" y="1548" />
<mxPoint x="415" y="1548" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label120" parent="edge20" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="400" y="1543" as="geometry" />
</mxCell>
<mxCell id="label124" parent="edge20" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="401" y="1596" as="geometry" />
</mxCell>
<mxCell id="label125" parent="edge20" vertex="1" connectable="0" value="symbols" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="399" y="1539" as="geometry" />
</mxCell>
<mxCell id="edge4" edge="1" value="" parent="1" source="node2" target="node0" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1358" y="1948" />
<mxPoint x="1437" y="1948" />
<mxPoint x="1437" y="2208" />
<mxPoint x="3486" y="2208" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label24" parent="edge4" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3475" y="1700" as="geometry" />
</mxCell>
<mxCell id="label28" parent="edge4" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1347" y="1684" as="geometry" />
</mxCell>
<mxCell id="label29" parent="edge4" vertex="1" connectable="0" value="position" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3486" y="1637" as="geometry" />
</mxCell>
<mxCell id="edge2" edge="1" value="" parent="1" source="node2" target="node6" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1358" y="891" />
<mxPoint x="2132" y="891" />
<mxPoint x="2132" y="1414" />
<mxPoint x="2566" y="1414" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label12" parent="edge2" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2566" y="1420" as="geometry" />
</mxCell>
<mxCell id="label16" parent="edge2" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1358" y="1076" as="geometry" />
</mxCell>
<mxCell id="label17" parent="edge2" vertex="1" connectable="0" value="currentRobot" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2491" y="1418" as="geometry" />
</mxCell>
<mxCell id="edge10" edge="1" value="" parent="1" source="node2" target="node11" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="796" y="1390" />
<mxPoint x="796" y="1548" />
<mxPoint x="415" y="1548" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label60" parent="edge10" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="404" y="1599" as="geometry" />
</mxCell>
<mxCell id="label64" parent="edge10" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1238" y="1386" as="geometry" />
</mxCell>
<mxCell id="label65" parent="edge10" vertex="1" connectable="0" value="symbol" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="415" y="1599" as="geometry" />
</mxCell>
<mxCell id="edge12" edge="1" value="" parent="1" source="node2" target="node3" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.285;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1313" y="-62" />
<mxPoint x="3763" y="-62" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label72" parent="edge12" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1302" y="1024" as="geometry" />
</mxCell>
<mxCell id="label76" parent="edge12" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3754" y="1124" as="geometry" />
</mxCell>
<mxCell id="label77" parent="edge12" vertex="1" connectable="0" value="walls" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3763" y="1124" as="geometry" />
</mxCell>
<mxCell id="edge17" edge="1" value="" parent="1" source="node7" target="node12" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.546;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2915" y="-77" />
<mxPoint x="644" y="-77" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label102" parent="edge17" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="639" y="364" as="geometry" />
</mxCell>
<mxCell id="label106" parent="edge17" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2915" y="1051" as="geometry" />
</mxCell>
<mxCell id="label107" parent="edge17" vertex="1" connectable="0" value="board" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="854" y="-77" as="geometry" />
</mxCell>
<mxCell id="edge7" edge="1" value="" parent="1" source="node7" target="node15" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.000;exitY=0.953;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2233" y="1796" />
<mxPoint x="2233" y="1932" />
<mxPoint x="1669" y="1932" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label42" parent="edge7" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1669" y="1915" as="geometry" />
</mxCell>
<mxCell id="label46" parent="edge7" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2222" y="1801" as="geometry" />
</mxCell>
<mxCell id="label47" parent="edge7" vertex="1" connectable="0" value="playerOne" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2221" y="1919" as="geometry" />
</mxCell>
<mxCell id="edge19" edge="1" value="" parent="1" source="node7" target="node0" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.000;exitY=0.929;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2203" y="1781" />
<mxPoint x="2203" y="1948" />
<mxPoint x="1437" y="1948" />
<mxPoint x="1437" y="2208" />
<mxPoint x="3486" y="2208" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label114" parent="edge19" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2207" y="1789" as="geometry" />
</mxCell>
<mxCell id="label118" parent="edge19" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3486" y="1631" as="geometry" />
</mxCell>
<mxCell id="label119" parent="edge19" vertex="1" connectable="0" value="initialRobotPositions" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3368" y="1631" as="geometry" />
</mxCell>
<mxCell id="edge3" edge="1" value="" parent="1" source="node7" target="node11" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=0.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2900" y="-32" />
<mxPoint x="796" y="-32" />
<mxPoint x="796" y="1548" />
<mxPoint x="415" y="1548" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label18" parent="edge3" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="415" y="1600" as="geometry" />
</mxCell>
<mxCell id="label22" parent="edge3" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2900" y="1116" as="geometry" />
</mxCell>
<mxCell id="label23" parent="edge3" vertex="1" connectable="0" value="currentGoal" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="347" y="1600" as="geometry" />
</mxCell>
<mxCell id="edge16" edge="1" value="" parent="1" source="node16" target="node7" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="3079" y="684" />
<mxPoint x="3079" y="1851" />
<mxPoint x="2900" y="1851" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label96" parent="edge16" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2900" y="1829" as="geometry" />
</mxCell>
<mxCell id="label100" parent="edge16" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3079" y="1025" as="geometry" />
</mxCell>
<mxCell id="label101" parent="edge16" vertex="1" connectable="0" value="game" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2864" y="1829" as="geometry" />
</mxCell>
<mxCell id="edge5" edge="1" value="" parent="1" source="node16" target="node6" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.500;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2298" y="1414" />
<mxPoint x="2566" y="1414" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label30" parent="edge5" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2319" y="1395" as="geometry" />
</mxCell>
<mxCell id="label34" parent="edge5" vertex="1" connectable="0" value="*" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2557" y="1420" as="geometry" />
</mxCell>
<mxCell id="label35" parent="edge5" vertex="1" connectable="0" value="currentColum" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2566" y="1420" as="geometry" />
</mxCell>
<mxCell id="edge0" edge="1" value="" parent="1" source="node4" target="node11" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=none;endArrow=block;endSize=12;strokeColor=#000082;exitX=0.500;exitY=1.001;exitDx=0;exitDy=0;entryX=1.000;entryY=0.456;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1090" y="1782" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="edge15" edge="1" value="" parent="1" source="node6" target="node2" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.000;exitY=0.111;exitDx=0;exitDy=0;entryX=0.964;entryY=0.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1885" y="1479" />
<mxPoint x="1885" y="997" />
<mxPoint x="1455" y="997" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label90" parent="edge15" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1455" y="1070" as="geometry" />
</mxCell>
<mxCell id="label94" parent="edge15" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2198" y="1465" as="geometry" />
</mxCell>
<mxCell id="label95" parent="edge15" vertex="1" connectable="0" value="currentCell" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1423" y="978" as="geometry" />
</mxCell>
<mxCell id="edge18" edge="1" value="" parent="1" source="node6" target="node0" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="2203" y="1604" />
<mxPoint x="2203" y="1948" />
<mxPoint x="1437" y="1948" />
<mxPoint x="1437" y="2208" />
<mxPoint x="3486" y="2208" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label108" parent="edge18" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3475" y="1636" as="geometry" />
</mxCell>
<mxCell id="label112" parent="edge18" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2431" y="1589" as="geometry" />
</mxCell>
<mxCell id="label113" parent="edge18" vertex="1" connectable="0" value="oldPosition" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3486" y="1636" as="geometry" />
</mxCell>
<mxCell id="edge11" edge="1" value="" parent="1" source="node11" target="node0" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.500;exitDx=0;exitDy=0;entryX=0.500;entryY=1.000;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="1343" y="1797" />
<mxPoint x="1343" y="1948" />
<mxPoint x="1437" y="1948" />
<mxPoint x="1437" y="2208" />
<mxPoint x="3486" y="2208" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label66" parent="edge11" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3475" y="1640" as="geometry" />
</mxCell>
<mxCell id="label70" parent="edge11" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="561" y="1793" as="geometry" />
</mxCell>
<mxCell id="label71" parent="edge11" vertex="1" connectable="0" value="position" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3486" y="1640" as="geometry" />
</mxCell>
<mxCell id="edge14" edge="1" value="" parent="1" source="node11" target="node5" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=0.500;exitY=1.000;exitDx=0;exitDy=0;entryX=0.000;entryY=0.500;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points">
<mxPoint x="415" y="2085" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="label84" parent="edge14" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="2001" y="2082" as="geometry" />
</mxCell>
<mxCell id="label88" parent="edge14" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="415" y="1978" as="geometry" />
</mxCell>
<mxCell id="label89" parent="edge14" vertex="1" connectable="0" value="shape" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="1973" y="2057" as="geometry" />
</mxCell>
<mxCell id="edge8" edge="1" value="" parent="1" source="node3" target="node8" style="html=1;rounded=1;edgeStyle=orthogonalEdgeStyle;dashed=0;startArrow=diamondThinstartSize=12;endArrow=openThin;endSize=12;strokeColor=#595959;exitX=1.000;exitY=0.679;exitDx=0;exitDy=0;entryX=0.000;entryY=0.040;entryDx=0;entryDy=0;">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<Array as="points" />
</mxGeometry>
</mxCell>
<mxCell id="label48" parent="edge8" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3915" y="1274" as="geometry" />
</mxCell>
<mxCell id="label52" parent="edge8" vertex="1" connectable="0" value="1" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3881" y="1274" as="geometry" />
</mxCell>
<mxCell id="label53" parent="edge8" vertex="1" connectable="0" value="orientation" style="edgeLabel;resizable=0;html=1;align=left;verticalAlign=top;strokeColor=default;">
<mxGeometry x="3873" y="1333" as="geometry" />
</mxCell>
</root>
</mxGraphModel>