forked from mit-athena/xcluster
/
points.h
803 lines (535 loc) · 32.1 KB
/
points.h
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
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
typedef struct {
unsigned int x, y;
} Point;
Point points[] = {
{48838, 16706}, {49732, 17167},
{49141, 16115}, {49642, 16374},
{49670, 14102}, {48742, 15913}, {49141, 16115}, {49018, 16357}, {48613, 16149},
{48433, 16498}, {48838, 16706}, {48719, 16937}, {48314, 16729}, {48050, 17252},
{49349, 17915}, {50036, 16577}, {49642, 16374}, {49912, 15845}, {49766, 15772},
{50424, 14490}, {49670, 14102},
{29566, 20520}, {29533, 20341}, {29469, 20174}, {29387, 20011}, {29263, 19876},
{29073, 19741}, {28884, 19659}, {28640, 19632}, {28424, 19670}, {28180, 19778},
{28029, 19914}, {27893, 20092}, {27785, 20363}, {27774, 20580}, {27817, 20818},
{27904, 21002}, {28029, 21159}, {28180, 21289}, {28370, 21386}, {28586, 21435},
{28808, 21435}, {29003, 21386}, {29165, 21305}, {29306, 21175}, {29425, 21024},
{29506, 20867}, {29550, 20699}, {29566, 20520},
{42017, 4399}, {41638, 5070}, {43132, 5926}, {43511, 5244}, {42017, 4399},
{42645, 7431}, {42287, 8058}, {42926, 8427}, {43284, 7788}, {42645, 7431},
{29111, 16666}, {29382, 16666},
{28770, 17218}, {28770, 17505},
{11074, 13948}, {15751, 13050}, {13770, 10592},
{16947, 13494}, {17619, 14490}, {17857, 14706}, {18182, 14901}, {18615, 15009},
{19199, 15053}, {30069, 12844}, {29160, 11198}, {16947, 13494},
{14804, 14122}, {15670, 15518}, {17034, 15248}, {16070, 13862}, {14804, 14122},
{10700, 17218}, {43830, 10505}, {44567, 10246}, {45043, 9856}, {45519, 9379},
{46039, 8297}, {46905, 6824},
{34774, 12005}, {34638, 11334}, {35586, 11144}, {35721, 11815},
{31953, 11036}, {32164, 12162}, {32955, 11999}, {32733, 10868}, {31953, 11036},
{30730, 11279}, {30908, 12162}, {31775, 11999}, {31542, 10792}, {31109, 10884},
{31163, 11187}, {30730, 11279},
{35878, 13467}, {35797, 13077}, {35986, 13039}, {35943, 12866}, {37231, 12595},
{37177, 12313},
{34303, 13190}, {35050, 13028}, {35180, 13618},
{31477, 13526}, {31775, 14159}, {31829, 14219}, {31899, 14262}, {31997, 14279},
{44962, 11583}, {45032, 11496}, {45032, 11366}, {44139, 10825}, {31477, 13526},
{40171, 11761}, {40312, 12454}, {41827, 12151}, {41687, 11442}, {40171, 11761},
{48161, 9450}, {47317, 10933}, {48242, 11464}, {49087, 9964}, {48161, 9450},
/* End of line 1 in the num_segs array below. */
{37870, 14457}, {37513, 14457}, {37513, 14408}, {36652, 14408}, {36652, 15323},
{37507, 15323}, {37507, 14809}, {37870, 14809},
{52389, 10527}, {50408, 12579}, {50337, 12719}, {50326, 12822}, {50348, 12947},
{50402, 13006}, {53715, 14668}, {54143, 14024}, {54381, 13743}, {54684, 13461},
{55020, 13218}, {52389, 10527},
{52800, 18176}, {52513, 18744}, {53228, 19118}, {53141, 19291}, {53369, 19410},
{53748, 18658}, {52800, 18176},
{52291, 19199}, {52004, 19768}, {52719, 20141}, {52632, 20314}, {52860, 20433},
{53239, 19681}, {52291, 19199},
{53953, 16206}, {53520, 17115}, {54397, 17537}, {54852, 16628}, {53953, 16206},
{55469, 13694}, {55177, 13878}, {54917, 14084}, {54668, 14376}, {54484, 14679},
{54354, 14906}, {58685, 17104}, {55469, 13694},
{57391, 21668}, {57391, 21018}, {58095, 21018}, {58095, 21668}, {57391, 21668},
{34335, 15394}, {35050, 15394}, {35050, 15816}, {34335, 15816},
{36652, 14565}, {35115, 14565}, {35115, 14706}, {34687, 14706}, {34655, 14614},
{32879, 14950}, {32955, 15377}, {33859, 15220}, {33859, 16601}, {34335, 16601},
{34335, 15139}, {34736, 15074}, {34736, 14988}, {35109, 14988}, {35109, 15166},
{36652, 15166},
{45287, 14284}, {45270, 14349}, {45276, 14414}, {45314, 14506}, {45379, 14560},
{45503, 14603}, {45638, 14603}, {45730, 14571}, {45774, 14528}, {45287, 14284},
{44545, 21695}, {44545, 19048}, {44902, 19048}, {44902, 21695}, {44545, 21695},
{45931, 21695}, {45931, 19042}, {46288, 19042}, {46288, 21695}, {45931, 21695},
{39256, 19665}, {39424, 19665}, {39424, 19686},
{35640, 19557}, {38704, 19557}, {38704, 22339}, {39970, 22339}, {39970, 23671},
{38715, 23671}, {38715, 24039}, {40523, 24039}, {40523, 22350}, {41324, 22350},
{41324, 23562}, {43219, 23562}, {43219, 21960}, {42915, 21960}, {42915, 21863},
{41205, 21863}, {41205, 22047}, {40523, 22047}, {40523, 21960}, {40436, 21960},
{40436, 21819}, {40533, 21819}, {40533, 19622}, {40436, 19622}, {40436, 19481},
{40523, 19481}, {40523, 18571}, {40479, 18571}, {40479, 18290}, {41833, 18290},
{41833, 18117}, {41995, 18117}, {41995, 17900}, {41833, 17900}, {41833, 17759},
{37740, 18030}, {37740, 18950}, {38823, 18950}, {38823, 18571}, {38303, 18571},
{38303, 16904}, {38985, 16904}, {38985, 16493}, {37480, 16493}, {37480, 15594},
{38758, 15594}, {38758, 15215}, {39256, 15215}, {39256, 16482}, {39191, 16482},
{39191, 16893}, {39267, 16893}, {39267, 18560}, {39050, 18560}, {39050, 18961},
{39992, 18961}, {39992, 18571}, {40198, 18571}, {40198, 18409}, {40274, 18409},
{40274, 17759}, {40306, 17759}, {40306, 17597}, {40046, 17597}, {40046, 17521},
{39970, 17521}, {39970, 17272}, {40003, 17272}, {40003, 15648},
{39375, 18420}, {39375, 18008}, {39797, 18008}, {39797, 18420}, {39375, 18420},
{43121, 19730}, {43121, 19156}, {43998, 19156}, {43998, 19730}, {43121, 19730},
{33642, 27104}, {33642, 26291}, {58982, 26291},
{34698, 24981}, {33626, 24981}, {33626, 25652}, {34687, 25652},
/* EOL 2 */
{34346, 19724}, {34346, 21814}, {35104, 21814}, {35104, 19546}, {34649, 19546},
{34649, 19724}, {34346, 19724},
{31488, 19876}, {31596, 19876}, {31639, 19919}, {31639, 21966},
{29160, 19806}, {29160, 19167}, {31488, 19167}, {31488, 21976},
{17510, 16314}, {17657, 17126},
{18393, 16135}, {18544, 16958},
{19080, 15989}, {19226, 16823},
{22631, 15269}, {22810, 16124},
{26383, 14500}, {26627, 15367},
{101, 20563}, {31022, 14511}, {30589, 13645}, {10625, 17705},
{133, 24623}, {1162, 24780}, {5401, 25116}, {8871, 25333}, {12920, 25333},
{15302, 26285}, {32798, 26285}, {32798, 27108},
{7647, 19876}, {7647, 22599}, {7658, 22691}, {7685, 22740}, {7745, 22767},
{18008, 22761}, {18409, 22989}, {27184, 22989}, {27184, 21971}, {32668, 21971},
{32744, 21944}, {32782, 21895}, {32798, 21819}, {32798, 19892}, {32603, 18625},
{32495, 18106}, {32327, 17516}, {32083, 16655}, {31883, 16189}, {31455, 15356},
{31390, 15285}, {31271, 15231}, {31147, 15199}, {31038, 15204}, {7745, 19724},
{7696, 19768}, {7663, 19811}, {7647, 19876},
{12523, 23299}, {12871, 23299}, {12871, 23507}, {12978, 23507}, {12978, 24047},
{13614, 24047}, {13614, 23709}, {13282, 23709}, {13282, 23192}, {13788, 23192},
{13788, 23535}, {13873, 23535}, {13873, 23608}, {13963, 23608}, {13963, 24339},
{12523, 24339}, {12523, 23299},
{106, 21397}, {106, 23736}, {117, 23784}, {139, 23822}, {177, 23844},
{1736, 24028}, {1779, 24023}, {1812, 23990}, {1828, 23947}, {1828, 21002},
{1812, 20953}, {1779, 20921}, {1730, 20899}, {204, 21175}, {155, 21218},
{123, 21267}, {106, 21397},
{27422, 16173}, {27660, 17413}, {29198, 17126}, {29079, 16525}, {29133, 16525},
{29133, 15951}, {28965, 15951}, {28949, 15859}, {27422, 16173},
{29030, 17505}, {29360, 17505}, {29360, 17413}, {31244, 17413}, {31244, 16742},
{29382, 15789}, {29382, 16704}, {30822, 16704}, {30822, 16742}, {31250, 16742},
{31250, 16698}, {31499, 16698}, {31499, 15789}, {31250, 15789}, {31250, 15664},
{30827, 15664}, {30827, 15789}, {29382, 15789},
{28770, 17505}, {28770, 17770}, {28002, 17770}, {28002, 18003}, {28343, 18003},
{28343, 18555}, {28770, 18555}, {28770, 18804}, {29025, 18804}, {29025, 17505},
{28770, 17505},
{29382, 18804}, {29382, 17646}, {31477, 17646}, {31477, 18804}, {29382, 18804},
{31878, 21316}, {31878, 21884}, {32251, 21884}, {32251, 21792}, {32516, 21792},
{32516, 21316}, {31878, 21316},
{28148, 23790}, {28148, 22999}, {29523, 22999}, {29523, 23790}, {28148, 23790},
/* EOL 3 */
{29063, 23005}, {29063, 23790},
{28592, 23303}, {29209, 23303}, {29209, 23005},
{28592, 23005}, {28592, 23790},
{30022, 23709}, {30472, 23709}, {30472, 24187}, {30461, 24232}, {30427, 24261},
{30371, 24283}, {30326, 24266}, {30292, 24244}, {30286, 24199}, {30213, 24199},
{30208, 24232}, {30179, 24261}, {30123, 24277}, {30067, 24261}, {30039, 24238},
{30022, 24187}, {30022, 23709},
{22226, 22134}, {26208, 22134}, {26208, 22888}, {22226, 22888}, {22226, 22134},
{23829, 23782}, {23879, 23895}, {23981, 23844}, {24211, 24249}, {24622, 24030},
{18305, 22146}, {21601, 22146}, {21601, 22899}, {18541, 22899}, {18541, 22686},
{18305, 22686}, {18305, 22146},
{17163, 23394}, {17163, 23535}, {17304, 23535},
{17034, 23034}, {17984, 23034}, {18097, 23079}, {18097, 23265}, {17984, 23265},
{17984, 23400}, {18406, 23400}, {18406, 23535}, {18592, 23535}, {18592, 23715},
{18496, 23715}, {18496, 23951}, {18581, 23951}, {18581, 24131}, {18209, 24131},
{18209, 23946}, {18283, 23946}, {18283, 23692}, {17990, 23692}, {17990, 23951},
{18058, 23951}, {18058, 24131}, {17619, 24131}, {17619, 23951}, {17692, 23951},
{17692, 23704}, {17366, 23704}, {17366, 23951}, {17439, 23951}, {17439, 24126},
{16955, 24126}, {16955, 23946}, {17023, 23946}, {17023, 23704}, {16573, 23704},
{16573, 23951}, {16640, 23951}, {16640, 24126}, {16151, 24126}, {16151, 23946},
{16218, 23946}, {16218, 23704}, {15971, 23704}, {15971, 23951}, {16049, 23951},
{16049, 24126}, {15706, 24126}, {15706, 23512}, {15898, 23512}, {15898, 23400},
{17163, 23400}, {17163, 23220}, {17034, 23220}, {17034, 23113}, {17034, 23034},
{10081, 23220}, {10363, 23220}, {10363, 23344}, {10627, 23344}, {10627, 23220},
{10908, 23220}, {10908, 23349}, {11161, 23349}, {11161, 23220}, {11437, 23220},
{11437, 23355}, {11729, 23355}, {11887, 23197}, {12202, 23197}, {12202, 23366},
{12523, 23366}, {12523, 24052}, {12337, 24052}, {12337, 23659}, {11729, 23659},
{11729, 24255}, {11443, 24255}, {11443, 23574}, {11173, 23574}, {11173, 24255},
{10903, 24255}, {10903, 23569}, {10633, 23569}, {10633, 24261}, {10368, 24261},
{10368, 23563}, {10081, 23563}, {10081, 23220},
{7854, 23169}, {8146, 23169}, {8146, 23293}, {8574, 23293}, {8574, 23164},
{8849, 23164}, {8849, 23293}, {9311, 23293}, {9311, 23164}, {9620, 23164},
{9620, 23529}, {10081, 24193}, {10081, 24339}, {9800, 24339}, {9316, 23653},
{8889, 23653}, {8647, 24328}, {8180, 24328}, {7854, 23304}, {7854, 23169},
{811, 22016}, {1453, 22016}, {1453, 23096}, {1756, 23096}, {1756, 23406},
{463, 23406}, {463, 23096}, {811, 23096}, {811, 22016},
{4906, 20430}, {6223, 20430}, {6223, 20812}, {4906, 20812}, {4906, 20430},
{6571, 23524}, {7303, 23524}, {7303, 24216}, {6571, 24216}, {6571, 23524},
{6453, 20931}, {6875, 20931}, {6875, 22050}, {6453, 22050}, {6453, 20931},
{5531, 21864}, {6183, 21864}, {6183, 22472}, {5531, 22472}, {5531, 21864},
{3438, 20852}, {4754, 20852}, {4754, 21240}, {3438, 21240}, {3438, 20852},
{2668, 21246}, {3050, 21246}, {3050, 22472}, {2668, 22472}, {2668, 21246},
{3629, 23141}, {3978, 23141}, {3978, 23473}, {3629, 23473}, {3629, 23141},
{18862, 26556}, {19492, 26556}, {19492, 27225}, {18862, 27225}, {18862, 26556},
/* EOL 4 */
{39260, 20077}, {39422, 20077},
{40438, 14666}, {40438, 14458},
{39228, 15013}, {39228, 15211},
{38966, 15007}, {38966, 15211},
{21558, 23742}, {21558, 24226}, {22191, 24226}, {22191, 23578}, {22093, 23408},
{21994, 23572}, {21994, 23657}, {21755, 23657}, {21755, 23572}, {21650, 23415},
{21558, 23572}, {21558, 23742},
{44156, 26517}, {45112, 26517},
{55615, 23853}, {56418, 23853},
{55614, 23980}, {56418, 23980},
{3404, 23074}, {3404, 23501}, {3618, 23715}, {4040, 23715}, {4237, 23518},
{4237, 23085}, {4006, 22854}, {3618, 22854}, {3404, 23074},
{18277, 26556}, {18862, 26556}, {18862, 27225}, {18277, 27225}, {18277, 27090},
{18536, 27090}, {18536, 26961}, {18283, 26961}, {18283, 26814}, {18541, 26814},
{18541, 26719}, {18277, 26719}, {18277, 26556},
{17984, 23406}, {17984, 23546}, {17844, 23546},
{26439, 23901}, {26720, 23901}, {26748, 23878}, {26771, 23850}, {26771, 23811},
{26759, 23782}, {26731, 23766}, {26703, 23760}, {26703, 23321}, {26996, 23321},
{26996, 24187}, {26439, 24187}, {26439, 23901},
{18328, 21466}, {20263, 21466}, {20263, 22056}, {18328, 22056}, {18328, 21466},
{28142, 23086}, {27958, 23086}, {27958, 24169}, {29707, 24169}, {29707, 23081},
{29523, 23081},
{30643, 22642}, {30643, 22999}, {30773, 22999}, {30773, 24142}, {31260, 24142},
{31260, 23449}, {32007, 23449}, {32007, 24147}, {32516, 24147}, {32516, 22999},
{32614, 22999}, {32614, 22642}, {31970, 22642}, {31970, 22994}, {32072, 22994},
{32072, 23081}, {31298, 23081}, {31298, 22642}, {30643, 22642},
{31845, 20195}, {31845, 21256}, {32262, 21256}, {32262, 21316}, {32516, 21316},
{32516, 20877}, {32267, 20877}, {32267, 20932}, {32083, 20932}, {32083, 20488},
{32262, 20488}, {32262, 20547}, {32516, 20547}, {32516, 20195}, {31845, 20195},
{25122, 16725}, {25122, 18869}, {26610, 18869}, {26610, 16725}, {26491, 16725},
{26491, 16525}, {26529, 16493}, {26551, 16460}, {26556, 16406}, {26540, 16341},
{26507, 16292}, {26448, 16265}, {26388, 16265}, {26334, 16287}, {26291, 16319},
{26269, 16379}, {26275, 16438}, {26302, 16493}, {26340, 16520}, {26340, 16725},
{25122, 16725},
{20493, 17570}, {20493, 17391}, {21944, 17391}, {21944, 17570}, {20493, 17570},
{2331, 20888}, {2331, 23963}, {2375, 24028}, {2440, 24071}, {2569, 24071},
{7680, 24439}, {14013, 24439}, {14078, 24412}, {14111, 24358}, {14122, 24293},
{14122, 23205}, {14111, 23146}, {14078, 23113}, {14024, 23097}, {7355, 23097},
{7279, 23070}, {7241, 22994}, {7225, 22924}, {7225, 19935}, {7209, 19903},
{7155, 19871}, {7052, 19871}, {2477, 20731}, {2402, 20769}, {2358, 20823},
{2331, 20888},
{17034, 23221}, {14630, 23221}, {14630, 24358}, {14641, 24407}, {14695, 24445},
{14782, 24456}, {20742, 24456}, {20785, 24434}, {20818, 24407}, {20834, 24342},
{20834, 23232}, {18420, 23232}, {18095, 23081},
/* EOL 5 */
{21489, 23248}, {21489, 24374}, {21500, 24429}, {21527, 24450}, {21565, 24461},
{27097, 24461}, {27146, 24439}, {27179, 24402}, {27184, 24331}, {27184, 23248},
{21489, 23248},
{13310, 24981}, {14944, 25636}, {15004, 25657}, {15064, 25663}, {20764, 25663},
{20802, 25636}, {20823, 25592}, {20834, 25544}, {20834, 25057}, {20818, 25024},
{20785, 24992}, {20720, 24981}, {13310, 24981},
{31910, 24975}, {32830, 24975}, {32830, 25652}, {31910, 25652},
{32581, 25327}, {31477, 25327}, {30524, 24959}, {21560, 24959}, {21511, 24970},
{21478, 25002}, {21473, 25046}, {21473, 25565}, {21489, 25603}, {21522, 25641},
{21570, 25663}, {30530, 25663}, {31472, 25333},
{27763, 22604}, {27763, 24337}, {27780, 24396}, {27812, 24434}, {27872, 24461},
{32700, 24461}, {32744, 24429}, {32776, 24385}, {32792, 24337}, {32792, 22556},
{32765, 22512}, {32717, 22491}, {32657, 22480}, {27866, 22480}, {27817, 22507},
{27780, 22556}, {27763, 22604},
{19340, 18122}, {19151, 18192}, {18939, 18322}, {18810, 18447}, {18701, 18647},
{18669, 18847}, {18701, 19075}, {18810, 19270}, {18950, 19432}, {19151, 19540},
{19340, 19611}, {22902, 19611}, {23097, 19551}, {23259, 19470}, {23433, 19335},
{23552, 19178}, {23600, 18939}, {23600, 18750}, {23552, 18506}, {23427, 18339},
{23259, 18219}, {23092, 18144}, {22897, 18122}, {19340, 18122},
{22983, 17770}, {23216, 17808}, {23460, 17949}, {23725, 18133}, {23936, 18344},
{24055, 18588}, {24104, 18864}, {24109, 18929}, {24071, 19151}, {23931, 19443},
{23736, 19681}, {23503, 19816}, {23243, 19930}, {23037, 19968}, {19324, 19968},
{19004, 19892}, {18755, 19773}, {18550, 19622}, {18371, 19448}, {18252, 19237},
{18198, 19037}, {18182, 18880}, {18192, 18750}, {18252, 18566}, {18360, 18339},
{18550, 18127}, {18783, 17943}, {19048, 17808}, {19324, 17770}, {22983, 17770},
{27812, 20791}, {27184, 20872}, {27184, 21971}, {27092, 21944}, {27016, 21879},
{26973, 21809}, {26962, 21722}, {27184, 21722},
{33112, 24207}, {33112, 26150}, {33150, 26193}, {33307, 26193}, {33339, 26161},
{33339, 24201}, {33301, 24153}, {33139, 24153}, {33112, 24207},
{29106, 19968}, {28689, 20044}, {28456, 20130}, {28261, 20266}, {27942, 20563},
{28294, 20910}, {28478, 21018}, {28673, 21083}, {29100, 21159}, {29214, 20720},
{29230, 20536}, {29220, 20358}, {29106, 19968},
{44150, 26296}, {44150, 26524}, {43949, 26724}, {43949, 26875}, {45314, 26875},
{45314, 26713}, {45119, 26518}, {45119, 26291},
{46970, 25084}, {46970, 25555}, {46981, 25598}, {47008, 25630}, {47046, 25641},
{55696, 25641}, {55734, 25620}, {55756, 25592}, {55772, 25533}, {55772, 25057},
{55756, 25019}, {55713, 24986}, {55659, 24970}, {47100, 24970}, {47030, 24975},
{46986, 25019}, {46970, 25084},
{58993, 24981}, {56422, 24981}, {56373, 24986}, {56341, 25019}, {56335, 25084},
{56335, 25582}, {56341, 25614}, {56373, 25641}, {56411, 25647}, {58993, 25647},
{33886, 25333}, {35093, 25333}, {36095, 24970}, {46402, 24970}, {46450, 24975},
{46488, 25002}, {46510, 25057}, {46510, 25490}, {46499, 25582}, {46472, 25620},
{46412, 25652}, {36084, 25652}, {35088, 25338},
{40003, 15659}, {39667, 15659}, {39667, 15042}, {39992, 15042}, {39992, 14674},
{40577, 14674}, {40577, 16893}, {41367, 16893}, {41367, 17489}, {40631, 17489},
{40631, 17608}, {40501, 17608}, {40501, 17748}, {44171, 17748}, {44171, 17922},
{44529, 17922}, {44529, 17315}, {46347, 18506}, {44561, 18506}, {44561, 18441},
{44615, 18441}, {44615, 18095}, {44529, 18095}, {44529, 18019}, {44171, 18019},
{44171, 18290}, {42222, 18290},
{41833, 18290}, {42001, 18290}, {42001, 18506}, {41719, 18506}, {41719, 21451},
{42639, 21451}, {42639, 18512}, {42217, 18512}, {42217, 18290}, {42001, 18290},
{39256, 19551}, {39256, 21814}, {40079, 21814}, {40079, 21608}, {39998, 21608},
{39998, 20769}, {39949, 20742}, {39949, 20482}, {40003, 20450}, {40003, 20076},
{39906, 20076}, {39906, 20325}, {39424, 20325}, {39424, 19692}, {39906, 19692},
{39906, 19806}, {39998, 19806}, {39998, 19551}, {39256, 19551},
{44198, 22648}, {44198, 23005}, {44285, 23005}, {44285, 23676}, {44198, 23676},
{44198, 24033}, {44913, 24033}, {44913, 23676}, {44832, 23676}, {44832, 23005},
{44908, 23005}, {44908, 22648}, {44198, 22648},
{45243, 24028}, {45243, 22783}, {46277, 22783}, {46277, 24028}, {45243, 24028},
{36928, 14414}, {36928, 14197}, {36917, 14105}, {36885, 14073}, {36820, 14067},
{32381, 14955}, {32316, 14988}, {32267, 15063}, {32262, 15139}, {32294, 15237},
{32939, 16498}, {33171, 17364}, {33366, 18328}, {33529, 19243}, {33594, 19892},
{33594, 24331}, {33621, 24385}, {33680, 24423}, {33751, 24439}, {46407, 24439},
{46483, 24412}, {46526, 24358}, {46542, 24293}, {46542, 18885}, {46586, 18701},
{49119, 13699}, {49146, 13607}, {49130, 13526}, {49076, 13467}, {46120, 11983},
{45985, 11967}, {45909, 11989}, {45849, 12054}, {45801, 12146}, {45801, 12265},
{45849, 12357}, {45893, 12400}, {45990, 12449},
/* EOL 6 */
/* East Garage (minus some of the ramp) */
{45974, 14641}, {45866, 14576}, {45812, 14620}, {45736, 14663}, {45622, 14690},
{45487, 14690}, {45314, 14793}, {45270, 14717}, {45379, 14652}, {45303, 14620},
{45238, 14555}, {45194, 14457}, {45184, 14371}, {45211, 14246}, {45108, 14197},
{46050, 12346}, {46916, 12779}, {45974, 14641},
{42130, 15475}, {42130, 15892}, {42228, 15892}, {42228, 16043}, {43868, 16043},
{43868, 15892}, {43966, 15892}, {43966, 15475}, {42130, 15475},
{42160, 22384}, {42160, 22864}, {42768, 22864}, {42768, 22384}, {42160, 22384},
{37280, 14414}, {37280, 14132}, {37291, 14057}, {37345, 13997}, {37464, 13948},
{44956, 12400}, {45065, 12400}, {45146, 12443}, {45243, 12530}, {45308, 12627},
{45330, 12725}, {45341, 12855}, {45319, 13023}, {45265, 13125}, {45194, 13174},
{45102, 13196},
{33994, 16606}, {33994, 16904}, {33864, 16904}, {33864, 16709}, {33420, 16709},
{33420, 17045}, {33626, 17045}, {33626, 17619}, {33951, 17619}, {33951, 17976},
{33821, 17976}, {33821, 18885}, {33734, 18885}, {33734, 19535}, {33821, 19535},
{33821, 21798}, {33918, 21895}, {33918, 22101}, {33821, 22198}, {33821, 24039},
{35640, 24039}, {35640, 23649}, {34341, 23649}, {34341, 22350}, {35640, 22350},
{35640, 19557},
{34211, 16606}, {34211, 16904}, {34525, 16904}, {34525, 17348}, {37892, 17348},
{37892, 18019}, {34676, 18019}, {34676, 17619}, {34222, 17619}, {34222, 17976},
{34341, 17976}, {34341, 18690}, {34655, 18690}, {34655, 18961}, {35098, 18961},
{35098, 18290}, {35629, 18290}, {35629, 18961}, {36603, 18961}, {36603, 18030},
{34406, 15816}, {34406, 16601}, {35039, 16601}, {35039, 16016}, {34736, 16016},
{34736, 15870}, {34779, 15870}, {34779, 15821},
{35120, 15269}, {35120, 16552}, {36484, 16552}, {36484, 16276}, {36652, 16276},
{36652, 15269}, {35120, 15269},
{38899, 14316}, {38899, 14192}, {39083, 14094}, {39261, 14197}, {39261, 14311},
{38904, 14468}, {38904, 14706}, {38715, 14814}, {38964, 15009}, {39234, 15009},
{39435, 14814}, {39256, 14695}, {39256, 14457},
{40247, 14463}, {40247, 14668},
{37870, 14165}, {37870, 15101}, {38547, 15101}, {38547, 14798}, {38893, 14457},
{40658, 14457}, {40658, 14295}, {40750, 14295}, {40750, 13900}, {40658, 13900},
{40658, 13759}, {39759, 13759}, {39759, 13791}, {39700, 13791}, {39613, 13808},
{39575, 13824}, {39505, 13873}, {39440, 13921}, {39375, 14030}, {39343, 14127},
{39321, 14246}, {39321, 14311}, {38839, 14311}, {38839, 14165}, {37870, 14165},
{47159, 22388}, {47159, 22826}, {48664, 22826}, {48664, 23958}, {49114, 23958},
{49114, 22826}, {48886, 22826}, {48886, 22388}, {47159, 22388},
{47159, 23784}, {47159, 24125}, {48188, 24125}, {48188, 23784}, {48545, 23784},
{48545, 23530}, {48307, 23530}, {48307, 23649}, {48031, 23649}, {48031, 23784},
{47159, 23784},
{50272, 22393}, {50067, 22902}, {51057, 23254}, {50765, 24023}, {51268, 24201},
{51561, 23400}, {53141, 23963}, {53141, 24369}, {53639, 24369}, {53639, 23530},
{50272, 22393},
/* Tang Center, building e51 */
{53910, 23876}, {53910, 24364}, {55610, 24364}, {55610, 22505}, {55085, 22505},
{55085, 23876}, {53910, 23876},
{46970, 22301}, {46970, 24293}, {46997, 24374}, {47062, 24439}, {47138, 24466},
{55675, 24466}, {55734, 24439}, {55767, 24391}, {55772, 24326}, {55772, 22301},
{46970, 22301},
{59107, 18241}, {58706, 18057}, {58566, 18046}, {58430, 18095}, {58317, 18252},
{56433, 22020}, {56384, 22160}, {56346, 22312}, {56335, 22442}, {56335, 24369},
{56346, 24412}, {56389, 24445}, {56454, 24466}, {58977, 24466},
{56454, 23173}, {56454, 23492}, {56416, 23492}, {56416, 24163}, {57066, 24163},
{57066, 24299}, {57310, 24299}, {57310, 24153}, {57959, 24153}, {57959, 23508},
{57786, 23508}, {57786, 23443}, {57629, 23443}, {57629, 23519}, {57342, 23519},
{57342, 23194}, {57071, 23194}, {57071, 23276}, {56963, 23276}, {56963, 23173},
{56454, 23173},
{57223, 23194}, {57223, 22404}, {58317, 22404}, {58317, 23194}, {57223, 23194},
/* EOL 7 */
{54197, 21208}, {54029, 21446}, {53986, 21684}, {55778, 21684}, {56010, 21240},
{55604, 21067}, {55529, 21202}, {55225, 21202}, {55225, 21072}, {54679, 21072},
{54679, 21208}, {54197, 21208},
{56130, 16942}, {53845, 21511}, {53802, 21722}, {53807, 21781}, {53834, 21825},
{53888, 21846}, {55783, 21846}, {55826, 21819}, {55956, 21689}, {56140, 21381},
{57916, 17797}, {57932, 17732}, {57927, 17678}, {57878, 17629}, {56335, 16855},
{56249, 16844}, {56189, 16877}, {56130, 16942},
{55296, 18625}, {55864, 18858}, {55393, 19730}, {54738, 19730},
{53769, 15848}, {50943, 21424}, {50868, 21668}, {50873, 21781}, {50927, 21873},
{51041, 21922}, {53001, 21922}, {53093, 21895}, {53179, 21809}, {53287, 21646},
{55729, 16769}, {55740, 16698}, {55718, 16650}, {55664, 16585}, {53975, 15762},
{53888, 15762}, {53823, 15794}, {53769, 15848},
/* Boundary around medical/e19/etc. */
{49633, 13813}, {47057, 18793}, {47008, 18880}, {46975, 18966}, {46959, 19064},
{46959, 21933}, {49958, 21933}, {50072, 21911}, {50191, 21803}, {50413, 21424},
{53282, 15653}, {53298, 15556}, {53271, 15507}, {53233, 15464}, {49817, 13748},
{49742, 13737}, {49693, 13753}, {49633, 13813},
{47230, 20109}, {47230, 19026}, {48594, 19026}, {48594, 20109}, {47230, 20109},
{49964, 16715}, {50137, 16801}, {50223, 16650}, {52129, 17624}, {50527, 20764},
{49909, 20775}, {51447, 17765}, {50018, 17029}, {50083, 16909}, {49909, 16823},
{48762, 7144}, {46651, 11171}, {49217, 12460}, {49401, 12470}, {49568, 12422},
{49834, 12232}, {51793, 9839}, {48762, 7144},
{43024, 11983}, {42894, 11366}, {44215, 11095}, {44247, 11242}, {44442, 11198},
{44556, 11669},
{38276, 12162}, {38417, 12855}, {39933, 12552}, {39792, 11842}, {38276, 12162},
{34411, 13770}, {34249, 12936},
{33696, 13921}, {33534, 13093},
{32922, 14089}, {32749, 13261},
{36365, 13374}, {36257, 12882}, {36620, 12812}, {36636, 12876}, {37145, 12768},
{37221, 13190},
{30129, 11025}, {31076, 12736}, {42910, 10402}, {43029, 10267}, {40496, 8816},
{30129, 11025},
{36934, 9899}, {37210, 11285}, {39218, 10890}, {39196, 10776}, {39343, 10722},
{39478, 10624}, {39597, 10467}, {39657, 10289}, {39646, 10083}, {39586, 9894},
{39435, 9731}, {39278, 9645}, {39115, 9612}, {38964, 9628}, {38931, 9482},
{36934, 9899},
{38991, 9780}, {39164, 10630}, {39278, 10592}, {39386, 10505}, {39467, 10359},
{39489, 10229}, {39478, 10078}, {39424, 9959}, {39343, 9883}, {39240, 9807},
{39110, 9769}, {38991, 9780},
{11025, 16709}, {17510, 15410}, {16200, 13613}, {11003, 14674},
/* EOL 8 */
{17315, 13580}, {17749, 14230}, {18095, 14555}, {18593, 14793}, {19264, 14879},
{21018, 14555}, {20499, 12995}, {17315, 13580},
{21067, 13466}, {21251, 14170}, {21792, 14051}, {21598, 13342}, {21067, 13466},
{23319, 12297}, {23357, 12465}, {22745, 12584}, {22837, 12958}, {23422, 12849},
{23498, 13174}, {22675, 13347}, {22902, 14306},
{24634, 12054}, {25013, 13872},
{25647, 11870}, {25842, 12774}, {25928, 12752}, {25972, 12952}, {26069, 12925},
{25815, 11832}, {26242, 13618},
{27390, 11529}, {27850, 13299},
{27606, 12341}, {27904, 12373}, {28002, 12265}, {28083, 12216}, {28207, 12178},
{28343, 12189}, {28451, 12216}, {28472, 12178}, {28554, 12243}, {28532, 12276},
{28597, 12346}, {28635, 12427}, {28657, 12519}, {28657, 12633}, {28624, 12752},
{28570, 12855}, {28500, 12914}, {28527, 12952}, {28451, 13001}, {28424, 12963},
{28332, 12996}, {28234, 13001}, {28121, 12974}, {28034, 12941}, {27953, 12871},
{27893, 12784}, {27866, 12703}, {27850, 12617}, {27855, 12508}, {27644, 12492},
{19340, 12384}, {18122, 9921}, {19378, 9704}, {20623, 12156},
{21478, 11999}, {20201, 9574}, {21630, 9336}, {22918, 11745},
{24039, 11550}, {22891, 9639}, {24109, 9471}, {24943, 10722}, {24185, 10873},
{24515, 11474},
{14333, 10267}, {16368, 12909}, {26026, 11220}, {24597, 8838}, {21998, 9271},
{23427, 11653},
{24380, 7582}, {26589, 11128}, {28803, 10673}, {26848, 7192}, {24380, 7582},
{40349, 7604}, {40306, 7658}, {40317, 7788}, {41053, 8232}, {41183, 8210},
{41226, 8145}, {41216, 8015}, {40458, 7571}, {40349, 7604},
{44280, 6564}, {43446, 8048}, {44106, 8416}, {44940, 6943}, {44280, 6564},
{40766, 4827}, {39933, 6310}, {40593, 6678}, {41427, 5206}, {40766, 4827},
{44615, 5547}, {44713, 5828}, {45449, 6250}, {45839, 6121}, {46055, 6218},
{46347, 6077}, {46835, 5211}, {46759, 4670}, {46618, 4572}, {46542, 4258},
{45979, 3923}, {45893, 3641}, {45741, 3533}, {45438, 3576}, {45243, 3825},
{45341, 4226}, {46034, 4594}, {46088, 4854}, {46239, 4930}, {46261, 5081},
{45958, 5655}, {45763, 5558}, {45600, 5633}, {45211, 5384}, {45200, 5265},
{44940, 5124}, {44810, 5179}, {44615, 5547},
{35878, 9185}, {37123, 6976}, {39743, 8416}, {35878, 9185},
{33648, 9683}, {35499, 6023}, {36593, 6694}, {35575, 8730}, {35315, 9055},
{34882, 9358}, {33648, 9683},
{29772, 10462}, {29122, 9206}, {30898, 5525}, {32803, 6629}, {31158, 10159},
{29772, 10462},
/* EOL 9 */
{29653, 6987}, {28689, 6478}, {28126, 7647}, {28819, 8751}, {30486, 5309},
{29501, 4756}, {28689, 6489},
{31677, 10072}, {33994, 5125}, {35142, 5817}, {33193, 9769}, {31677, 10072},
{28039, 599}, {30302, 1985}, {31331, 101},
{31937, 296}, {30779, 2288}, {37134, 6045}, {41237, 1584},
{41973, 1898}, {37719, 6391}, {39884, 7582}, {40479, 7355}, {41432, 7929},
{41400, 8448}, {43933, 9780}, {44399, 9498}, {44875, 9109}, {45157, 8719},
{47333, 4800},
{47766, 6348}, {45990, 9737}, {45665, 10181}, {45525, 10310}, {45232, 10473},
{45979, 10917}, {48253, 6943}, {47766, 6348},
{23806, 6456}, {24153, 7106}, {26556, 6716}, {23481, 978},
{24586, 1768}, {25793, 3782}, {26567, 2629}, {25322, 1801},
{25403, 4616}, {24472, 5070}, {23725, 3695}, {23817, 3652}, {23671, 3365},
{23974, 3219}, {23931, 3138}, {24494, 2872},
{26231, 3787}, {26453, 3939}, {27081, 3013},
{26859, 5655}, {28223, 6445}, {27877, 7257}, {26859, 5655},
{27119, 1032}, {30026, 2840}, {29317, 4166}, {25376, 1530},
{30400, 3057}, {29707, 4377}, {32987, 6240}, {33637, 4919}, {30400, 3057},
{26756, 5308}, {27168, 4491}, {27260, 4556}, {26865, 5357},
{27888, 5893}, {28278, 5070}, {28094, 4962}, {28294, 4616}, {28927, 5005},
{29176, 4491}, {28375, 6153}, {26719, 5287}, {26015, 4096}, {26859, 2840},
{29176, 4491},
{27747, 3473}, {27623, 3701}, {27698, 3755}, {27828, 3533},
{28364, 4199}, {28278, 4345}, {28586, 4540}, {28673, 4394}, {28364, 4199},
{27238, 4345}, {27325, 4410}, {27623, 3901}, {27541, 3847}, {27238, 4345},
{10803, 17045}, {10868, 17348},
/* EOL 10 */
{11718, 16844}, {11783, 17148},
{12736, 16671}, {12801, 16974},
{13651, 16471}, {13716, 16774},
{14603, 16254}, {14668, 16557},
{15518, 16054}, {15583, 16357},
{16536, 15881}, {16601, 16184},
{17451, 15680}, {17516, 15984},
{18339, 15551}, {18404, 15854},
{19254, 15350}, {19319, 15653},
{29474, 13272}, {29539, 13575},
{30389, 13071}, {30454, 13374},
{31407, 12898}, {31472, 13201},
{32321, 12698}, {32386, 13001},
{33274, 12481}, {33339, 12784},
{34189, 12281}, {34254, 12584},
{35207, 12108}, {35272, 12411},
{36122, 11907}, {36187, 12210},
{37010, 11777}, {37074, 12081},
{37924, 11577}, {37989, 11880},
{38747, 11404}, {38812, 11707},
/* EOL 11 */
{39662, 11204}, {39727, 11507},
{40680, 11030}, {40745, 11334},
{41595, 10830}, {41660, 11133},
{42547, 10614}, {42612, 10917},
{43462, 10413}, {43527, 10716},
{20152, 15166}, {20217, 15469},
{21067, 14966}, {21132, 15269},
{22085, 14793}, {22150, 15096},
{23000, 14592}, {23065, 14895},
{23952, 14376}, {24017, 14679},
{24867, 14176}, {24932, 14479},
{25885, 14002}, {25950, 14305},
{26800, 13802}, {26865, 14105},
{27688, 13672}, {27753, 13975},
{28603, 13472}, {28668, 13775},
{44258, 10224}, {44409, 10462},
{44821, 9791}, {45037, 10051},
{45362, 9358}, {45600, 9531},
{45714, 8703}, {45952, 8876},
{46044, 8048}, {46283, 8221},
/* EOL 12 */
{46375, 7414}, {46613, 7588},
{31488, 20720}, {31125, 20720}, {31098, 20639}, {31065, 20574}, {31017, 20520},
{30941, 20466}, {30865, 20434}, {30768, 20423}, {30681, 20439}, {30584, 20482},
{30524, 20536}, {30470, 20607}, {30427, 20715}, {30421, 20802}, {30438, 20904},
{30470, 20969}, {30513, 21034}, {30578, 21089}, {30654, 21132}, {30746, 21153},
{30833, 21159}, {30908, 21132}, {30984, 21094}, {31038, 21045}, {31087, 20975},
{31114, 20915}, {31125, 20872}, {31488, 20872},
{22334, 23324}, {24986, 23324}, {25057, 23427}, {25257, 23313}, {25392, 23313},
{25446, 23416}, {25641, 23313}, {25955, 23313}, {26437, 23898}, {26437, 24169},
{26340, 24250}, {25874, 23752}, {24889, 24250}, {24829, 24272}, {24775, 24261},
{24726, 24217}, {24326, 23541}, {22577, 24337}, {22512, 24180}, {22615, 24136},
{22567, 24033}, {22648, 23990}, {22604, 23898}, {22680, 23855}, {22615, 23741},
{22334, 23741}, {22334, 23324},
{27184, 19167}, {27184, 20260}, {27785, 20358},
{29160, 21310}, {29160, 21965},
{28938, 21403}, {28938, 21965},
{28938, 19686}, {28938, 19167}, {25815, 19167}, {25815, 21716}, {26572, 21716},
{26599, 21814}, {26637, 21890}, {26702, 21987}, {26767, 22058}, {26827, 22117},
{26908, 22182}, {27016, 22236}, {27097, 22263}, {27184, 22263},
{22822, 12566}, {22664, 11812},
{22878, 11773}, {23041, 12527},
/* building 68 */
{45675, 17430}, {47150, 14500}, {48100, 15000}, {46600 ,18040}, {45675, 17430},
/* 66 - 68 bridge (two pieces) */
{46200, 17800}, {45980, 18188},
{46410, 17950}, {46190, 18400},
/* e51 - e40 bridge */
{55100, 22505}, {55100, 21683}, {55250, 21683}, {55250, 22505}, {55100, 22505},
};
#define num_points (sizeof(points) / sizeof(Point))
#define min_x 100
#define max_x 59106
#define min_y 100
#define max_y 27224
int num_segs[] = {
2, 2, 17, 28, 5, 5, 2, 2, 3, 9, 5, 7, 4, 5, 7, 6, 3, 10, 5, 5,
8, 12, 7, 7, 5, 8, 5, 4, 16, 10, 5, 5, 3, 35, 34, 5, 5, 3, 4,
7, 4, 4, 2, 2, 2, 2, 2, 4, 8, 28, 17, 17, 9, 5, 13, 11, 5, 7, 5,
2, 3, 2, 17, 5, 5, 7, 3, 55, 33, 20, 9, 5, 5, 5, 5, 5, 5, 5, 5,
2, 2, 2, 2, 12, 2, 2, 2, 9, 13, 3, 13, 5, 6, 19, 15, 21, 5, 26, 13,
11, 13, 4, 13, 17, 24, 30, 8, 9, 13, 8, 17, 10, 13, 27, 10, 19, 13, 5, 38,
18, 9, 5, 16, 26, 20, 8, 7, 5, 8, 2, 25, 9, 11, 11, 7, 11, 14, 21, 5,
12, 18, 4, 18, 18, 5, 10, 8, 6, 5, 2, 2, 2, 6, 6, 16, 12, 4,
8, 5, 8, 2, 5, 2, 2, 30, 4, 4, 6, 6, 5, 9, 5, 5, 28, 4, 7, 6,
7, 5, 3, 4, 11, 8, 4, 4, 8, 3, 4, 4, 5, 4, 5, 6, 4, 5, 5, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 28, 27, 3, 2, 2, 14, 2, 2, 5, 2, 2, 5
};
#define num_groups (sizeof(num_segs) / sizeof(int))