fixed export script

This commit is contained in:
cpu
2026-06-08 12:49:42 +02:00
parent 3b423af5b5
commit eada18d3f0
4 changed files with 513 additions and 552 deletions

View File

@@ -5448,17 +5448,19 @@
)
(via
(at 149.925 70.775)
(size 0.9)
(size 1.2)
(drill 0.5)
(layers "F.Cu" "B.Cu")
(tenting none)
(net 8)
(uuid "511e3217-9d27-46cd-9223-469bdf3b0a29")
)
(via
(at 149.93 68.27)
(size 0.9)
(size 1.2)
(drill 0.5)
(layers "F.Cu" "B.Cu")
(tenting none)
(net 8)
(uuid "8ccc1010-f42a-4bf3-83b9-69301845c989")
)
@@ -6046,289 +6048,288 @@
(xy 138.48589 66.619786) (xy 138.636213 66.770109) (xy 138.808182 66.89505) (xy 138.816946 66.899516)
(xy 138.867742 66.947491) (xy 138.884536 67.015312) (xy 138.861998 67.081447) (xy 138.816946 67.120484)
(xy 138.808182 67.124949) (xy 138.636213 67.24989) (xy 138.48589 67.400213) (xy 138.360951 67.572179)
(xy 138.264444 67.761585) (xy 138.198753 67.96376) (xy 138.194162 67.992748) (xy 138.1655 68.173713)
(xy 138.1655 68.386287) (xy 138.198754 68.596243) (xy 138.239042 68.720237) (xy 138.264444 68.798414)
(xy 138.360951 68.98782) (xy 138.48589 69.159786) (xy 138.636213 69.310109) (xy 138.808182 69.43505)
(xy 138.816946 69.439516) (xy 138.867742 69.487491) (xy 138.884536 69.555312) (xy 138.861998 69.621447)
(xy 138.816946 69.660484) (xy 138.808182 69.664949) (xy 138.636213 69.78989) (xy 138.48589 69.940213)
(xy 138.360951 70.112179) (xy 138.264444 70.301585) (xy 138.198753 70.50376) (xy 138.1655 70.713713)
(xy 138.1655 70.926286) (xy 138.198753 71.136239) (xy 138.264444 71.338414) (xy 138.360951 71.52782)
(xy 138.48589 71.699786) (xy 138.636213 71.850109) (xy 138.808182 71.97505) (xy 138.816946 71.979516)
(xy 138.867742 72.027491) (xy 138.884536 72.095312) (xy 138.861998 72.161447) (xy 138.816946 72.200484)
(xy 138.808182 72.204949) (xy 138.636213 72.32989) (xy 138.48589 72.480213) (xy 138.360951 72.652179)
(xy 138.264444 72.841585) (xy 138.198753 73.04376) (xy 138.1655 73.253713) (xy 138.1655 73.466286)
(xy 138.198753 73.676239) (xy 138.264444 73.878414) (xy 138.360951 74.06782) (xy 138.48589 74.239786)
(xy 138.599818 74.353714) (xy 138.633303 74.415037) (xy 138.628319 74.484729) (xy 138.586447 74.540662)
(xy 138.555471 74.557577) (xy 138.423912 74.606646) (xy 138.423906 74.606649) (xy 138.308812 74.692809)
(xy 138.308809 74.692812) (xy 138.222649 74.807906) (xy 138.222645 74.807913) (xy 138.172403 74.94262)
(xy 138.172401 74.942627) (xy 138.166 75.002155) (xy 138.166 75.65) (xy 139.082988 75.65) (xy 139.050075 75.707007)
(xy 139.016 75.834174) (xy 139.016 75.965826) (xy 139.050075 76.092993) (xy 139.082988 76.15) (xy 138.166 76.15)
(xy 138.166 76.797844) (xy 138.172401 76.857372) (xy 138.172403 76.857379) (xy 138.222645 76.992086)
(xy 138.222649 76.992093) (xy 138.308809 77.107187) (xy 138.308812 77.10719) (xy 138.423906 77.19335)
(xy 138.423913 77.193354) (xy 138.55862 77.243596) (xy 138.558627 77.243598) (xy 138.618155 77.249999)
(xy 138.618172 77.25) (xy 139.266 77.25) (xy 139.266 76.333012) (xy 139.323007 76.365925) (xy 139.450174 76.4)
(xy 139.581826 76.4) (xy 139.708993 76.365925) (xy 139.766 76.333012) (xy 139.766 77.25) (xy 140.413828 77.25)
(xy 140.413844 77.249999) (xy 140.473372 77.243598) (xy 140.473379 77.243596) (xy 140.608086 77.193354)
(xy 140.608093 77.19335) (xy 140.723187 77.10719) (xy 140.72319 77.107187) (xy 140.80935 76.992093)
(xy 140.809354 76.992086) (xy 140.85077 76.881046) (xy 140.859596 76.85738) (xy 140.859598 76.857372)
(xy 140.865999 76.797844) (xy 140.866 76.797827) (xy 140.866 76.15) (xy 139.949012 76.15) (xy 139.981925 76.092993)
(xy 140.016 75.965826) (xy 140.016 75.834174) (xy 139.991761 75.743713) (xy 175.2745 75.743713)
(xy 175.2745 75.956286) (xy 175.307753 76.166239) (xy 175.373444 76.368414) (xy 175.469951 76.55782)
(xy 175.59489 76.729786) (xy 175.745209 76.880105) (xy 175.745214 76.880109) (xy 175.910218 76.999991)
(xy 175.952884 77.05532) (xy 175.958863 77.124934) (xy 175.926258 77.186729) (xy 175.910218 77.200627)
(xy 175.74554 77.320272) (xy 175.745535 77.320276) (xy 175.595276 77.470535) (xy 175.595272 77.47054)
(xy 175.470379 77.642442) (xy 175.373904 77.831782) (xy 175.308242 78.03387) (xy 175.308242 78.033873)
(xy 175.297769 78.1) (xy 176.345854 78.1) (xy 176.30737 78.166657) (xy 176.275 78.287465) (xy 176.275 78.412535)
(xy 176.30737 78.533343) (xy 176.345854 78.6) (xy 175.297769 78.6) (xy 175.308242 78.666126) (xy 175.308242 78.666129)
(xy 175.373904 78.868217) (xy 175.470379 79.057557) (xy 175.595272 79.229459) (xy 175.595276 79.229464)
(xy 175.734143 79.368331) (xy 175.767628 79.429654) (xy 175.762644 79.499346) (xy 175.720772 79.555279)
(xy 175.711559 79.561551) (xy 175.556342 79.657289) (xy 175.432289 79.781342) (xy 175.340187 79.930663)
(xy 175.340186 79.930666) (xy 175.285001 80.097203) (xy 175.285001 80.097204) (xy 175.285 80.097204)
(xy 175.2745 80.199983) (xy 175.2745 81.500001) (xy 175.274501 81.500018) (xy 175.285 81.602796)
(xy 175.285001 81.602799) (xy 175.340185 81.769331) (xy 175.340186 81.769334) (xy 175.432288 81.918656)
(xy 175.556344 82.042712) (xy 175.705666 82.134814) (xy 175.872203 82.189999) (xy 175.974991 82.2005)
(xy 177.525008 82.200499) (xy 177.627797 82.189999) (xy 177.794334 82.134814) (xy 177.943656 82.042712)
(xy 178.067712 81.918656) (xy 178.159814 81.769334) (xy 178.214999 81.602797) (xy 178.2255 81.500009)
(xy 178.225499 80.199992) (xy 178.214999 80.097203) (xy 178.159814 79.930666) (xy 178.067712 79.781344)
(xy 177.943656 79.657288) (xy 177.794334 79.565186) (xy 177.794332 79.565185) (xy 177.78844 79.561551)
(xy 177.741716 79.509603) (xy 177.730493 79.440641) (xy 177.758337 79.376558) (xy 177.765856 79.36833)
(xy 177.904728 79.229458) (xy 178.02962 79.057557) (xy 178.126095 78.868217) (xy 178.191757 78.666129)
(xy 178.191757 78.666126) (xy 178.202231 78.6) (xy 177.154146 78.6) (xy 177.19263 78.533343) (xy 177.225 78.412535)
(xy 177.225 78.287465) (xy 177.19263 78.166657) (xy 177.154146 78.1) (xy 178.202231 78.1) (xy 178.191757 78.033873)
(xy 178.191757 78.03387) (xy 178.126095 77.831782) (xy 178.02962 77.642442) (xy 177.904727 77.47054)
(xy 177.904723 77.470535) (xy 177.754464 77.320276) (xy 177.754459 77.320272) (xy 177.589781 77.200627)
(xy 177.547115 77.145297) (xy 177.541136 77.075684) (xy 177.573741 77.013889) (xy 177.589776 76.999994)
(xy 177.754792 76.880104) (xy 177.905104 76.729792) (xy 177.905106 76.729788) (xy 177.905109 76.729786)
(xy 178.030048 76.55782) (xy 178.030047 76.55782) (xy 178.030051 76.557816) (xy 178.126557 76.368412)
(xy 178.192246 76.166243) (xy 178.2255 75.956287) (xy 178.2255 75.743713) (xy 178.192246 75.533757)
(xy 178.126557 75.331588) (xy 178.030051 75.142184) (xy 178.030049 75.142181) (xy 178.030048 75.142179)
(xy 177.905109 74.970213) (xy 177.754786 74.81989) (xy 177.58282 74.694951) (xy 177.393414 74.598444)
(xy 177.393413 74.598443) (xy 177.393412 74.598443) (xy 177.191243 74.532754) (xy 177.191241 74.532753)
(xy 177.19124 74.532753) (xy 177.029957 74.507208) (xy 176.981287 74.4995) (xy 176.518713 74.4995)
(xy 176.470042 74.507208) (xy 176.30876 74.532753) (xy 176.106585 74.598444) (xy 175.917179 74.694951)
(xy 175.745213 74.81989) (xy 175.59489 74.970213) (xy 175.469951 75.142179) (xy 175.373444 75.331585)
(xy 175.307753 75.53376) (xy 175.2745 75.743713) (xy 139.991761 75.743713) (xy 139.981925 75.707007)
(xy 139.949012 75.65) (xy 140.866 75.65) (xy 140.866 75.002172) (xy 140.865999 75.002155) (xy 140.859598 74.942627)
(xy 140.859596 74.94262) (xy 140.809354 74.807913) (xy 140.80935 74.807906) (xy 140.72319 74.692812)
(xy 140.723187 74.692809) (xy 140.608093 74.606649) (xy 140.608088 74.606646) (xy 140.476528 74.557577)
(xy 140.420595 74.515705) (xy 140.396178 74.450241) (xy 140.41103 74.381968) (xy 140.432175 74.35372)
(xy 140.546104 74.239792) (xy 140.671051 74.067816) (xy 140.767557 73.878412) (xy 140.833246 73.676243)
(xy 140.8665 73.466287) (xy 140.8665 73.253713) (xy 140.833246 73.043757) (xy 140.767557 72.841588)
(xy 140.671051 72.652184) (xy 140.671049 72.652181) (xy 140.671048 72.652179) (xy 140.546109 72.480213)
(xy 140.395786 72.32989) (xy 140.22382 72.204951) (xy 140.223115 72.204591) (xy 140.215054 72.200485)
(xy 140.164259 72.152512) (xy 140.147463 72.084692) (xy 140.169999 72.018556) (xy 140.215054 71.979515)
(xy 140.223816 71.975051) (xy 140.245789 71.959086) (xy 140.395786 71.850109) (xy 140.395788 71.850106)
(xy 140.395792 71.850104) (xy 140.546104 71.699792) (xy 140.546106 71.699788) (xy 140.546109 71.699786)
(xy 140.671048 71.52782) (xy 140.671047 71.52782) (xy 140.671051 71.527816) (xy 140.767557 71.338412)
(xy 140.833246 71.136243) (xy 140.8665 70.926287) (xy 140.8665 70.713713) (xy 140.861379 70.681379)
(xy 148.9745 70.681379) (xy 148.9745 70.86862) (xy 149.011025 71.052243) (xy 149.011027 71.052251)
(xy 149.082676 71.225228) (xy 149.082681 71.225237) (xy 149.186697 71.380907) (xy 149.1867 71.380911)
(xy 149.319088 71.513299) (xy 149.319092 71.513302) (xy 149.474762 71.617318) (xy 149.474768 71.617321)
(xy 149.474769 71.617322) (xy 149.647749 71.688973) (xy 149.831379 71.725499) (xy 149.831383 71.7255)
(xy 149.831384 71.7255) (xy 150.018617 71.7255) (xy 150.018618 71.725499) (xy 150.202251 71.688973)
(xy 150.375231 71.617322) (xy 150.530908 71.513302) (xy 150.663302 71.380908) (xy 150.767322 71.225231)
(xy 150.838973 71.052251) (xy 150.8755 70.868616) (xy 150.8755 70.681384) (xy 150.838973 70.497749)
(xy 150.767322 70.324769) (xy 150.767321 70.324768) (xy 150.767318 70.324762) (xy 150.663302 70.169092)
(xy 150.663299 70.169088) (xy 150.661819 70.167608) (xy 150.661291 70.166641) (xy 150.659437 70.164382)
(xy 150.659865 70.16403) (xy 150.628334 70.106285) (xy 150.6255 70.079927) (xy 150.6255 68.970072)
(xy 150.645185 68.903033) (xy 150.661823 68.882387) (xy 150.668301 68.875909) (xy 150.668302 68.875908)
(xy 150.772322 68.720231) (xy 150.843973 68.547251) (xy 150.8805 68.363616) (xy 150.8805 68.176384)
(xy 150.843973 67.992749) (xy 150.772322 67.819769) (xy 150.772321 67.819768) (xy 150.772318 67.819762)
(xy 150.668302 67.664092) (xy 150.668299 67.664088) (xy 150.535911 67.5317) (xy 150.535907 67.531697)
(xy 150.380237 67.427681) (xy 150.380228 67.427676) (xy 150.207251 67.356027) (xy 150.207243 67.356025)
(xy 150.02362 67.3195) (xy 150.023616 67.3195) (xy 149.836384 67.3195) (xy 149.836379 67.3195) (xy 149.652756 67.356025)
(xy 149.652748 67.356027) (xy 149.479771 67.427676) (xy 149.479762 67.427681) (xy 149.324092 67.531697)
(xy 149.324088 67.5317) (xy 149.1917 67.664088) (xy 149.191697 67.664092) (xy 149.087681 67.819762)
(xy 149.087676 67.819771) (xy 149.016027 67.992748) (xy 149.016025 67.992756) (xy 148.9795 68.176379)
(xy 148.9795 68.36362) (xy 149.016025 68.547243) (xy 149.016027 68.547251) (xy 149.087676 68.720228)
(xy 149.087681 68.720237) (xy 149.191697 68.875907) (xy 149.195563 68.880618) (xy 149.193556 68.882264)
(xy 149.22165 68.933637) (xy 149.2245 68.960072) (xy 149.2245 70.079927) (xy 149.204815 70.146966)
(xy 149.188181 70.167608) (xy 149.1867 70.169088) (xy 149.186697 70.169092) (xy 149.082681 70.324762)
(xy 149.082676 70.324771) (xy 149.011027 70.497748) (xy 149.011025 70.497756) (xy 148.9745 70.681379)
(xy 140.861379 70.681379) (xy 140.833246 70.503757) (xy 140.767557 70.301588) (xy 140.671051 70.112184)
(xy 140.671049 70.112181) (xy 140.671048 70.112179) (xy 140.546109 69.940213) (xy 140.395786 69.78989)
(xy 140.22382 69.664951) (xy 140.223115 69.664591) (xy 140.215054 69.660485) (xy 140.164259 69.612512)
(xy 140.147463 69.544692) (xy 140.169999 69.478556) (xy 140.215054 69.439515) (xy 140.223816 69.435051)
(xy 140.245789 69.419086) (xy 140.395786 69.310109) (xy 140.395788 69.310106) (xy 140.395792 69.310104)
(xy 140.546104 69.159792) (xy 140.546106 69.159788) (xy 140.546109 69.159786) (xy 140.671048 68.98782)
(xy 140.671047 68.98782) (xy 140.671051 68.987816) (xy 140.767557 68.798412) (xy 140.833246 68.596243)
(xy 140.8665 68.386287) (xy 140.8665 68.173713) (xy 140.833246 67.963757) (xy 140.767557 67.761588)
(xy 140.671051 67.572184) (xy 140.671049 67.572181) (xy 140.671048 67.572179) (xy 140.546109 67.400213)
(xy 140.395786 67.24989) (xy 140.22382 67.124951) (xy 140.223115 67.124591) (xy 140.215054 67.120485)
(xy 140.164259 67.072512) (xy 140.147463 67.004692) (xy 140.169999 66.938556) (xy 140.215054 66.899515)
(xy 140.223816 66.895051) (xy 140.245789 66.879086) (xy 140.395786 66.770109) (xy 140.395788 66.770106)
(xy 140.395792 66.770104) (xy 140.546104 66.619792) (xy 140.546106 66.619788) (xy 140.546109 66.619786)
(xy 140.671048 66.44782) (xy 140.671047 66.44782) (xy 140.671051 66.447816) (xy 140.767557 66.258412)
(xy 140.833246 66.056243) (xy 140.8665 65.846287) (xy 140.8665 65.633713) (xy 140.833246 65.423757)
(xy 140.767557 65.221588) (xy 140.671051 65.032184) (xy 140.671049 65.032181) (xy 140.671048 65.032179)
(xy 140.546109 64.860213) (xy 140.395786 64.70989) (xy 140.22382 64.584951) (xy 140.223115 64.584591)
(xy 140.215054 64.580485) (xy 140.164259 64.532512) (xy 140.147463 64.464692) (xy 140.169999 64.398556)
(xy 140.215054 64.359515) (xy 140.223816 64.355051) (xy 140.245789 64.339086) (xy 140.395786 64.230109)
(xy 140.395788 64.230106) (xy 140.395792 64.230104) (xy 140.546104 64.079792) (xy 140.546106 64.079788)
(xy 140.546109 64.079786) (xy 140.671048 63.90782) (xy 140.671047 63.90782) (xy 140.671051 63.907816)
(xy 140.767557 63.718412) (xy 140.833246 63.516243) (xy 140.8665 63.306287) (xy 140.8665 63.093713)
(xy 140.833246 62.883757) (xy 140.767557 62.681588) (xy 140.671051 62.492184) (xy 140.671049 62.492181)
(xy 140.671048 62.492179) (xy 140.546109 62.320213) (xy 140.395786 62.16989) (xy 140.22382 62.044951)
(xy 140.223115 62.044591) (xy 140.215054 62.040485) (xy 140.164259 61.992512) (xy 140.147463 61.924692)
(xy 140.169999 61.858556) (xy 140.215054 61.819515) (xy 140.223816 61.815051) (xy 140.245789 61.799086)
(xy 140.395786 61.690109) (xy 140.395788 61.690106) (xy 140.395792 61.690104) (xy 140.546104 61.539792)
(xy 140.546106 61.539788) (xy 140.546109 61.539786) (xy 140.671048 61.36782) (xy 140.671047 61.36782)
(xy 140.671051 61.367816) (xy 140.767557 61.178412) (xy 140.833246 60.976243) (xy 140.8665 60.766287)
(xy 140.8665 60.553713) (xy 140.833246 60.343757) (xy 140.767557 60.141588) (xy 140.671051 59.952184)
(xy 140.671049 59.952181) (xy 140.671048 59.952179) (xy 140.546109 59.780213) (xy 140.395786 59.62989)
(xy 140.22382 59.504951) (xy 140.223115 59.504591) (xy 140.215054 59.500485) (xy 140.164259 59.452512)
(xy 140.147463 59.384692) (xy 140.169999 59.318556) (xy 140.215054 59.279515) (xy 140.223816 59.275051)
(xy 140.359245 59.176657) (xy 140.395786 59.150109) (xy 140.395788 59.150106) (xy 140.395792 59.150104)
(xy 140.546104 58.999792) (xy 140.546106 58.999788) (xy 140.546109 58.999786) (xy 140.671048 58.82782)
(xy 140.671047 58.82782) (xy 140.671051 58.827816) (xy 140.767557 58.638412) (xy 140.833246 58.436243)
(xy 140.8665 58.226287) (xy 140.8665 58.013713) (xy 140.833246 57.803757) (xy 140.767557 57.601588)
(xy 140.671051 57.412184) (xy 140.671049 57.412181) (xy 140.671048 57.412179) (xy 140.546109 57.240213)
(xy 140.395786 57.08989) (xy 140.22382 56.964951) (xy 140.034412 56.868443) (xy 140.029269 56.866772)
(xy 139.832243 56.802754) (xy 139.832241 56.802753) (xy 139.83224 56.802753) (xy 139.670957 56.777208)
(xy 139.622287 56.7695) (xy 139.409713 56.7695) (xy 139.361042 56.777208) (xy 139.19976 56.802753)
(xy 138.997585 56.868444) (xy 138.808179 56.964951) (xy 138.636213 57.08989) (xy 138.48589 57.240213)
(xy 138.360951 57.412179) (xy 138.264444 57.601585) (xy 138.198753 57.80376) (xy 138.185077 57.890109)
(xy 138.1655 58.013713) (xy 132.6505 58.013713) (xy 132.6505 56.753713) (xy 175.2645 56.753713)
(xy 175.2645 56.966287) (xy 175.297754 57.176243) (xy 175.318539 57.240213) (xy 175.363444 57.378414)
(xy 175.459951 57.56782) (xy 175.58489 57.739786) (xy 175.735209 57.890105) (xy 175.735214 57.890109)
(xy 175.900218 58.009991) (xy 175.942884 58.06532) (xy 175.948863 58.134934) (xy 175.916258 58.196729)
(xy 175.900218 58.210627) (xy 175.73554 58.330272) (xy 175.735535 58.330276) (xy 175.585276 58.480535)
(xy 175.585272 58.48054) (xy 175.460379 58.652442) (xy 175.363904 58.841782) (xy 175.298242 59.04387)
(xy 175.298242 59.043873) (xy 175.287769 59.11) (xy 176.335854 59.11) (xy 176.29737 59.176657) (xy 176.265 59.297465)
(xy 176.265 59.422535) (xy 176.29737 59.543343) (xy 176.335854 59.61) (xy 175.287769 59.61) (xy 175.298242 59.676126)
(xy 175.298242 59.676129) (xy 175.363904 59.878217) (xy 175.460379 60.067557) (xy 175.585272 60.239459)
(xy 175.585276 60.239464) (xy 175.724143 60.378331) (xy 175.757628 60.439654) (xy 175.752644 60.509346)
(xy 175.710772 60.565279) (xy 175.701559 60.571551) (xy 175.546342 60.667289) (xy 175.422289 60.791342)
(xy 175.330187 60.940663) (xy 175.330186 60.940666) (xy 175.275001 61.107203) (xy 175.275001 61.107204)
(xy 175.275 61.107204) (xy 175.2645 61.209983) (xy 175.2645 62.510001) (xy 175.264501 62.510018)
(xy 175.275 62.612796) (xy 175.275001 62.612799) (xy 175.297795 62.681585) (xy 175.330186 62.779334)
(xy 175.422288 62.928656) (xy 175.546344 63.052712) (xy 175.695666 63.144814) (xy 175.862203 63.199999)
(xy 175.964991 63.2105) (xy 177.515008 63.210499) (xy 177.617797 63.199999) (xy 177.784334 63.144814)
(xy 177.933656 63.052712) (xy 178.057712 62.928656) (xy 178.149814 62.779334) (xy 178.204999 62.612797)
(xy 178.2155 62.510009) (xy 178.215499 61.209992) (xy 178.204999 61.107203) (xy 178.149814 60.940666)
(xy 178.057712 60.791344) (xy 177.933656 60.667288) (xy 177.784334 60.575186) (xy 177.784332 60.575185)
(xy 177.77844 60.571551) (xy 177.731716 60.519603) (xy 177.720493 60.450641) (xy 177.748337 60.386558)
(xy 177.755856 60.37833) (xy 177.894728 60.239458) (xy 178.01962 60.067557) (xy 178.116095 59.878217)
(xy 178.181757 59.676129) (xy 178.181757 59.676126) (xy 178.192231 59.61) (xy 177.144146 59.61)
(xy 177.18263 59.543343) (xy 177.215 59.422535) (xy 177.215 59.297465) (xy 177.18263 59.176657)
(xy 177.144146 59.11) (xy 178.192231 59.11) (xy 178.181757 59.043873) (xy 178.181757 59.04387) (xy 178.116095 58.841782)
(xy 178.01962 58.652442) (xy 177.894727 58.48054) (xy 177.894723 58.480535) (xy 177.744464 58.330276)
(xy 177.744459 58.330272) (xy 177.579781 58.210627) (xy 177.537115 58.155297) (xy 177.531136 58.085684)
(xy 177.563741 58.023889) (xy 177.579776 58.009994) (xy 177.744792 57.890104) (xy 177.895104 57.739792)
(xy 177.895106 57.739788) (xy 177.895109 57.739786) (xy 178.020048 57.56782) (xy 178.020047 57.56782)
(xy 178.020051 57.567816) (xy 178.116557 57.378412) (xy 178.182246 57.176243) (xy 178.2155 56.966287)
(xy 178.2155 56.753713) (xy 178.182246 56.543757) (xy 178.116557 56.341588) (xy 178.020051 56.152184)
(xy 178.020049 56.152181) (xy 178.020048 56.152179) (xy 177.895109 55.980213) (xy 177.744786 55.82989)
(xy 177.57282 55.704951) (xy 177.383414 55.608444) (xy 177.383413 55.608443) (xy 177.383412 55.608443)
(xy 177.181243 55.542754) (xy 177.181241 55.542753) (xy 177.18124 55.542753) (xy 177.019957 55.517208)
(xy 176.971287 55.5095) (xy 176.508713 55.5095) (xy 176.460042 55.517208) (xy 176.29876 55.542753)
(xy 176.096585 55.608444) (xy 175.907179 55.704951) (xy 175.735213 55.82989) (xy 175.58489 55.980213)
(xy 175.459951 56.152179) (xy 175.363444 56.341585) (xy 175.297753 56.54376) (xy 175.2645 56.753713)
(xy 132.6505 56.753713) (xy 132.6505 47.074875) (xy 138.6223 47.074875) (xy 138.6223 47.283524)
(xy 138.654937 47.489589) (xy 138.719412 47.68802) (xy 138.797825 47.841914) (xy 138.81413 47.873914)
(xy 138.936765 48.042705) (xy 139.084295 48.190235) (xy 139.253086 48.31287) (xy 139.340916 48.357621)
(xy 139.438979 48.407587) (xy 139.438981 48.407587) (xy 139.438984 48.407589) (xy 139.538925 48.440062)
(xy 139.63741 48.472062) (xy 139.843476 48.5047) (xy 139.843481 48.5047) (xy 140.052124 48.5047)
(xy 140.258189 48.472062) (xy 140.456616 48.407589) (xy 140.642514 48.31287) (xy 140.811305 48.190235)
(xy 140.958835 48.042705) (xy 141.08147 47.873914) (xy 141.176189 47.688016) (xy 141.240662 47.489589)
(xy 141.24573 47.457589) (xy 141.2733 47.283524) (xy 141.2733 47.074876) (xy 141.270533 47.057408)
(xy 141.270533 47.057407) (xy 141.268231 47.042875) (xy 161.5077 47.042875) (xy 161.5077 47.251524)
(xy 161.540337 47.457589) (xy 161.604812 47.65602) (xy 161.69953 47.841914) (xy 161.822165 48.010705)
(xy 161.969695 48.158235) (xy 162.138486 48.28087) (xy 162.201288 48.312869) (xy 162.324379 48.375587)
(xy 162.324381 48.375587) (xy 162.324384 48.375589) (xy 162.42287 48.407589) (xy 162.52281 48.440062)
(xy 162.728876 48.4727) (xy 162.728881 48.4727) (xy 162.937524 48.4727) (xy 163.143589 48.440062)
(xy 163.162015 48.434075) (xy 163.342016 48.375589) (xy 163.527914 48.28087) (xy 163.696705 48.158235)
(xy 163.844235 48.010705) (xy 163.96687 47.841914) (xy 164.061589 47.656016) (xy 164.126062 47.457589)
(xy 164.126895 47.452328) (xy 164.1587 47.251524) (xy 164.1587 47.042875) (xy 164.126062 46.83681)
(xy 164.061587 46.638379) (xy 164.011621 46.540316) (xy 163.96687 46.452486) (xy 163.844235 46.283695)
(xy 163.696705 46.136165) (xy 163.527914 46.01353) (xy 163.34202 45.918812) (xy 163.143589 45.854337)
(xy 162.937524 45.8217) (xy 162.937519 45.8217) (xy 162.728881 45.8217) (xy 162.728876 45.8217)
(xy 162.52281 45.854337) (xy 162.324379 45.918812) (xy 162.138485 46.01353) (xy 161.969693 46.136166)
(xy 161.822166 46.283693) (xy 161.69953 46.452485) (xy 161.604812 46.638379) (xy 161.540337 46.83681)
(xy 161.5077 47.042875) (xy 141.268231 47.042875) (xy 141.240662 46.86881) (xy 141.176187 46.670379)
(xy 141.081469 46.484485) (xy 141.05822 46.452486) (xy 140.958835 46.315695) (xy 140.811305 46.168165)
(xy 140.642514 46.04553) (xy 140.636873 46.042656) (xy 140.45662 45.950812) (xy 140.258189 45.886337)
(xy 140.052124 45.8537) (xy 140.052119 45.8537) (xy 139.843481 45.8537) (xy 139.843476 45.8537)
(xy 139.63741 45.886337) (xy 139.438979 45.950812) (xy 139.253085 46.04553) (xy 139.084293 46.168166)
(xy 138.936766 46.315693) (xy 138.81413 46.484485) (xy 138.719412 46.670379) (xy 138.654937 46.86881)
(xy 138.6223 47.074875) (xy 132.6505 47.074875) (xy 132.6505 44.874038) (xy 133.5495 44.874038)
(xy 133.5495 45.125961) (xy 133.58891 45.374785) (xy 133.66676 45.614383) (xy 133.745413 45.768747)
(xy 133.772394 45.8217) (xy 133.781132 45.838848) (xy 133.929201 46.042649) (xy 133.929205 46.042654)
(xy 134.107345 46.220794) (xy 134.10735 46.220798) (xy 134.285117 46.349952) (xy 134.311155 46.36887)
(xy 134.454184 46.441747) (xy 134.535616 46.483239) (xy 134.535618 46.483239) (xy 134.535621 46.483241)
(xy 134.775215 46.56109) (xy 135.024038 46.6005) (xy 135.024039 46.6005) (xy 135.275961 46.6005)
(xy 135.275962 46.6005) (xy 135.524785 46.56109) (xy 135.764379 46.483241) (xy 135.988845 46.36887)
(xy 136.192656 46.220793) (xy 136.370793 46.042656) (xy 136.51887 45.838845) (xy 136.633241 45.614379)
(xy 136.682708 45.462135) (xy 167.6895 45.462135) (xy 167.6895 47.25787) (xy 167.689501 47.257876)
(xy 167.695908 47.317483) (xy 167.746202 47.452328) (xy 167.746206 47.452335) (xy 167.832452 47.567544)
(xy 167.832455 47.567547) (xy 167.947664 47.653793) (xy 167.947671 47.653797) (xy 167.992618 47.670561)
(xy 168.082517 47.704091) (xy 168.142127 47.7105) (xy 168.152685 47.710499) (xy 168.219723 47.730179)
(xy 168.240372 47.746818) (xy 168.910591 48.417037) (xy 168.847007 48.434075) (xy 168.732993 48.499901)
(xy 168.639901 48.592993) (xy 168.574075 48.707007) (xy 168.557037 48.770591) (xy 167.924728 48.138282)
(xy 167.924727 48.138282) (xy 167.88538 48.192439) (xy 167.788904 48.381782) (xy 167.723242 48.583869)
(xy 167.723242 48.583872) (xy 167.69 48.793753) (xy 167.69 49.006246) (xy 167.723242 49.216127)
(xy 167.723242 49.21613) (xy 167.788904 49.418217) (xy 167.885375 49.60755) (xy 167.924728 49.661716)
(xy 168.557037 49.029408) (xy 168.574075 49.092993) (xy 168.639901 49.207007) (xy 168.732993 49.300099)
(xy 168.847007 49.365925) (xy 168.91059 49.382962) (xy 168.278282 50.015269) (xy 168.278282 50.01527)
(xy 168.332452 50.054626) (xy 168.332451 50.054626) (xy 168.341495 50.059234) (xy 168.392292 50.107208)
(xy 168.409087 50.175029) (xy 168.38655 50.241164) (xy 168.341499 50.280202) (xy 168.332182 50.284949)
(xy 168.160213 50.40989) (xy 168.00989 50.560213) (xy 167.884951 50.732179) (xy 167.788444 50.921585)
(xy 167.722753 51.12376) (xy 167.6895 51.333713) (xy 167.6895 51.546286) (xy 167.722753 51.756239)
(xy 167.788444 51.958414) (xy 167.884951 52.14782) (xy 168.00989 52.319786) (xy 168.160213 52.470109)
(xy 168.332179 52.595048) (xy 168.332181 52.595049) (xy 168.332184 52.595051) (xy 168.521588 52.691557)
(xy 168.723757 52.757246) (xy 168.933713 52.7905) (xy 168.933714 52.7905) (xy 169.146286 52.7905)
(xy 169.146287 52.7905) (xy 169.356243 52.757246) (xy 169.558412 52.691557) (xy 169.747816 52.595051)
(xy 169.769789 52.579086) (xy 169.919786 52.470109) (xy 169.919788 52.470106) (xy 169.919792 52.470104)
(xy 170.070104 52.319792) (xy 170.070106 52.319788) (xy 170.070109 52.319786) (xy 170.195048 52.14782)
(xy 170.195047 52.14782) (xy 170.195051 52.147816) (xy 170.291557 51.958412) (xy 170.357246 51.756243)
(xy 170.3905 51.546287) (xy 170.3905 51.333713) (xy 170.357246 51.123757) (xy 170.291557 50.921588)
(xy 170.195051 50.732184) (xy 170.195049 50.732181) (xy 170.195048 50.732179) (xy 170.070109 50.560213)
(xy 169.919786 50.40989) (xy 169.747817 50.284949) (xy 169.738504 50.280204) (xy 169.687707 50.23223)
(xy 169.670912 50.164409) (xy 169.693449 50.098274) (xy 169.738507 50.059232) (xy 169.747555 50.054622)
(xy 169.801716 50.01527) (xy 169.801717 50.01527) (xy 169.169408 49.382962) (xy 169.232993 49.365925)
(xy 169.347007 49.300099) (xy 169.440099 49.207007) (xy 169.505925 49.092993) (xy 169.522962 49.029408)
(xy 170.15527 49.661717) (xy 170.15527 49.661716) (xy 170.194622 49.607554) (xy 170.291095 49.418217)
(xy 170.356757 49.21613) (xy 170.356757 49.216127) (xy 170.39 49.006246) (xy 170.39 48.793753) (xy 170.356757 48.583872)
(xy 170.356757 48.583869) (xy 170.291095 48.381782) (xy 170.194624 48.192449) (xy 170.15527 48.138282)
(xy 170.155269 48.138282) (xy 169.522962 48.77059) (xy 169.505925 48.707007) (xy 169.440099 48.592993)
(xy 169.347007 48.499901) (xy 169.232993 48.434075) (xy 169.169409 48.417037) (xy 169.839627 47.746818)
(xy 169.90095 47.713333) (xy 169.927307 47.710499) (xy 169.937872 47.710499) (xy 169.997483 47.704091)
(xy 170.132331 47.653796) (xy 170.247546 47.567546) (xy 170.333796 47.452331) (xy 170.384091 47.317483)
(xy 170.3905 47.257873) (xy 170.390499 45.462128) (xy 170.384091 45.402517) (xy 170.333796 45.267669)
(xy 170.333795 45.267668) (xy 170.333793 45.267664) (xy 170.247547 45.152455) (xy 170.247544 45.152452)
(xy 170.132335 45.066206) (xy 170.132328 45.066202) (xy 169.997482 45.015908) (xy 169.997483 45.015908)
(xy 169.937883 45.009501) (xy 169.937881 45.0095) (xy 169.937873 45.0095) (xy 169.937864 45.0095)
(xy 168.142129 45.0095) (xy 168.142123 45.009501) (xy 168.082516 45.015908) (xy 167.947671 45.066202)
(xy 167.947664 45.066206) (xy 167.832455 45.152452) (xy 167.832452 45.152455) (xy 167.746206 45.267664)
(xy 167.746202 45.267671) (xy 167.695908 45.402517) (xy 167.689501 45.462116) (xy 167.689501 45.462123)
(xy 167.6895 45.462135) (xy 136.682708 45.462135) (xy 136.68271 45.462129) (xy 136.696241 45.420487)
(xy 136.696241 45.420486) (xy 136.711089 45.374789) (xy 136.711089 45.374788) (xy 136.71109 45.374785)
(xy 136.7505 45.125962) (xy 136.7505 44.874038) (xy 177.5495 44.874038) (xy 177.5495 45.125961)
(xy 177.58891 45.374785) (xy 177.66676 45.614383) (xy 177.745413 45.768747) (xy 177.772394 45.8217)
(xy 177.781132 45.838848) (xy 177.929201 46.042649) (xy 177.929205 46.042654) (xy 178.107345 46.220794)
(xy 178.10735 46.220798) (xy 178.285117 46.349952) (xy 178.311155 46.36887) (xy 178.454184 46.441747)
(xy 178.535616 46.483239) (xy 178.535618 46.483239) (xy 178.535621 46.483241) (xy 178.775215 46.56109)
(xy 179.024038 46.6005) (xy 179.024039 46.6005) (xy 179.275961 46.6005) (xy 179.275962 46.6005)
(xy 179.524785 46.56109) (xy 179.764379 46.483241) (xy 179.988845 46.36887) (xy 180.192656 46.220793)
(xy 180.370793 46.042656) (xy 180.51887 45.838845) (xy 180.633241 45.614379) (xy 180.71109 45.374785)
(xy 180.7505 45.125962) (xy 180.7505 44.874038) (xy 180.71109 44.625215) (xy 180.633241 44.385621)
(xy 180.633239 44.385618) (xy 180.633239 44.385616) (xy 180.591747 44.304184) (xy 180.51887 44.161155)
(xy 180.499952 44.135117) (xy 180.370798 43.95735) (xy 180.370794 43.957345) (xy 180.192654 43.779205)
(xy 180.192649 43.779201) (xy 179.988848 43.631132) (xy 179.988847 43.631131) (xy 179.988845 43.63113)
(xy 179.918747 43.595413) (xy 179.764383 43.51676) (xy 179.524785 43.43891) (xy 179.275962 43.3995)
(xy 179.024038 43.3995) (xy 178.899626 43.419205) (xy 178.775214 43.43891) (xy 178.535616 43.51676)
(xy 178.311151 43.631132) (xy 178.10735 43.779201) (xy 178.107345 43.779205) (xy 177.929205 43.957345)
(xy 177.929201 43.95735) (xy 177.781132 44.161151) (xy 177.66676 44.385616) (xy 177.58891 44.625214)
(xy 177.5495 44.874038) (xy 136.7505 44.874038) (xy 136.71109 44.625215) (xy 136.633241 44.385621)
(xy 136.633239 44.385618) (xy 136.633239 44.385616) (xy 136.591747 44.304184) (xy 136.51887 44.161155)
(xy 136.499952 44.135117) (xy 136.370798 43.95735) (xy 136.370794 43.957345) (xy 136.192654 43.779205)
(xy 136.192649 43.779201) (xy 135.988848 43.631132) (xy 135.988847 43.631131) (xy 135.988845 43.63113)
(xy 135.918747 43.595413) (xy 135.764383 43.51676) (xy 135.524785 43.43891) (xy 135.275962 43.3995)
(xy 135.024038 43.3995) (xy 134.899626 43.419205) (xy 134.775214 43.43891) (xy 134.535616 43.51676)
(xy 134.311151 43.631132) (xy 134.10735 43.779201) (xy 134.107345 43.779205) (xy 133.929205 43.957345)
(xy 133.929201 43.95735) (xy 133.781132 44.161151) (xy 133.66676 44.385616) (xy 133.58891 44.625214)
(xy 133.5495 44.874038) (xy 132.6505 44.874038) (xy 132.6505 42.6245) (xy 132.670185 42.557461)
(xy 132.722989 42.511706) (xy 132.7745 42.5005) (xy 181.5255 42.5005)
(xy 138.264444 67.761585) (xy 138.264443 67.761587) (xy 138.264443 67.761588) (xy 138.231598 67.862672)
(xy 138.198753 67.96376) (xy 138.1655 68.173713) (xy 138.1655 68.386286) (xy 138.198753 68.596239)
(xy 138.264444 68.798414) (xy 138.360951 68.98782) (xy 138.48589 69.159786) (xy 138.636213 69.310109)
(xy 138.808182 69.43505) (xy 138.816946 69.439516) (xy 138.867742 69.487491) (xy 138.884536 69.555312)
(xy 138.861998 69.621447) (xy 138.816946 69.660484) (xy 138.808182 69.664949) (xy 138.636213 69.78989)
(xy 138.48589 69.940213) (xy 138.360951 70.112179) (xy 138.264444 70.301585) (xy 138.198753 70.50376)
(xy 138.169511 70.688389) (xy 138.1655 70.713713) (xy 138.1655 70.926287) (xy 138.198754 71.136243)
(xy 138.21864 71.197447) (xy 138.264444 71.338414) (xy 138.360951 71.52782) (xy 138.48589 71.699786)
(xy 138.636213 71.850109) (xy 138.808182 71.97505) (xy 138.816946 71.979516) (xy 138.867742 72.027491)
(xy 138.884536 72.095312) (xy 138.861998 72.161447) (xy 138.816946 72.200484) (xy 138.808182 72.204949)
(xy 138.636213 72.32989) (xy 138.48589 72.480213) (xy 138.360951 72.652179) (xy 138.264444 72.841585)
(xy 138.198753 73.04376) (xy 138.1655 73.253713) (xy 138.1655 73.466286) (xy 138.198753 73.676239)
(xy 138.264444 73.878414) (xy 138.360951 74.06782) (xy 138.48589 74.239786) (xy 138.599818 74.353714)
(xy 138.633303 74.415037) (xy 138.628319 74.484729) (xy 138.586447 74.540662) (xy 138.555471 74.557577)
(xy 138.423912 74.606646) (xy 138.423906 74.606649) (xy 138.308812 74.692809) (xy 138.308809 74.692812)
(xy 138.222649 74.807906) (xy 138.222645 74.807913) (xy 138.172403 74.94262) (xy 138.172401 74.942627)
(xy 138.166 75.002155) (xy 138.166 75.65) (xy 139.082988 75.65) (xy 139.050075 75.707007) (xy 139.016 75.834174)
(xy 139.016 75.965826) (xy 139.050075 76.092993) (xy 139.082988 76.15) (xy 138.166 76.15) (xy 138.166 76.797844)
(xy 138.172401 76.857372) (xy 138.172403 76.857379) (xy 138.222645 76.992086) (xy 138.222649 76.992093)
(xy 138.308809 77.107187) (xy 138.308812 77.10719) (xy 138.423906 77.19335) (xy 138.423913 77.193354)
(xy 138.55862 77.243596) (xy 138.558627 77.243598) (xy 138.618155 77.249999) (xy 138.618172 77.25)
(xy 139.266 77.25) (xy 139.266 76.333012) (xy 139.323007 76.365925) (xy 139.450174 76.4) (xy 139.581826 76.4)
(xy 139.708993 76.365925) (xy 139.766 76.333012) (xy 139.766 77.25) (xy 140.413828 77.25) (xy 140.413844 77.249999)
(xy 140.473372 77.243598) (xy 140.473379 77.243596) (xy 140.608086 77.193354) (xy 140.608093 77.19335)
(xy 140.723187 77.10719) (xy 140.72319 77.107187) (xy 140.80935 76.992093) (xy 140.809354 76.992086)
(xy 140.85077 76.881046) (xy 140.859596 76.85738) (xy 140.859598 76.857372) (xy 140.865999 76.797844)
(xy 140.866 76.797827) (xy 140.866 76.15) (xy 139.949012 76.15) (xy 139.981925 76.092993) (xy 140.016 75.965826)
(xy 140.016 75.834174) (xy 139.991761 75.743713) (xy 175.2745 75.743713) (xy 175.2745 75.956286)
(xy 175.307753 76.166239) (xy 175.373444 76.368414) (xy 175.469951 76.55782) (xy 175.59489 76.729786)
(xy 175.745209 76.880105) (xy 175.745214 76.880109) (xy 175.910218 76.999991) (xy 175.952884 77.05532)
(xy 175.958863 77.124934) (xy 175.926258 77.186729) (xy 175.910218 77.200627) (xy 175.74554 77.320272)
(xy 175.745535 77.320276) (xy 175.595276 77.470535) (xy 175.595272 77.47054) (xy 175.470379 77.642442)
(xy 175.373904 77.831782) (xy 175.308242 78.03387) (xy 175.308242 78.033873) (xy 175.297769 78.1)
(xy 176.345854 78.1) (xy 176.30737 78.166657) (xy 176.275 78.287465) (xy 176.275 78.412535) (xy 176.30737 78.533343)
(xy 176.345854 78.6) (xy 175.297769 78.6) (xy 175.308242 78.666126) (xy 175.308242 78.666129) (xy 175.373904 78.868217)
(xy 175.470379 79.057557) (xy 175.595272 79.229459) (xy 175.595276 79.229464) (xy 175.734143 79.368331)
(xy 175.767628 79.429654) (xy 175.762644 79.499346) (xy 175.720772 79.555279) (xy 175.711559 79.561551)
(xy 175.556342 79.657289) (xy 175.432289 79.781342) (xy 175.340187 79.930663) (xy 175.340186 79.930666)
(xy 175.285001 80.097203) (xy 175.285001 80.097204) (xy 175.285 80.097204) (xy 175.2745 80.199983)
(xy 175.2745 81.500001) (xy 175.274501 81.500018) (xy 175.285 81.602796) (xy 175.285001 81.602799)
(xy 175.340185 81.769331) (xy 175.340186 81.769334) (xy 175.432288 81.918656) (xy 175.556344 82.042712)
(xy 175.705666 82.134814) (xy 175.872203 82.189999) (xy 175.974991 82.2005) (xy 177.525008 82.200499)
(xy 177.627797 82.189999) (xy 177.794334 82.134814) (xy 177.943656 82.042712) (xy 178.067712 81.918656)
(xy 178.159814 81.769334) (xy 178.214999 81.602797) (xy 178.2255 81.500009) (xy 178.225499 80.199992)
(xy 178.214999 80.097203) (xy 178.159814 79.930666) (xy 178.067712 79.781344) (xy 177.943656 79.657288)
(xy 177.794334 79.565186) (xy 177.794332 79.565185) (xy 177.78844 79.561551) (xy 177.741716 79.509603)
(xy 177.730493 79.440641) (xy 177.758337 79.376558) (xy 177.765856 79.36833) (xy 177.904728 79.229458)
(xy 178.02962 79.057557) (xy 178.126095 78.868217) (xy 178.191757 78.666129) (xy 178.191757 78.666126)
(xy 178.202231 78.6) (xy 177.154146 78.6) (xy 177.19263 78.533343) (xy 177.225 78.412535) (xy 177.225 78.287465)
(xy 177.19263 78.166657) (xy 177.154146 78.1) (xy 178.202231 78.1) (xy 178.191757 78.033873) (xy 178.191757 78.03387)
(xy 178.126095 77.831782) (xy 178.02962 77.642442) (xy 177.904727 77.47054) (xy 177.904723 77.470535)
(xy 177.754464 77.320276) (xy 177.754459 77.320272) (xy 177.589781 77.200627) (xy 177.547115 77.145297)
(xy 177.541136 77.075684) (xy 177.573741 77.013889) (xy 177.589776 76.999994) (xy 177.754792 76.880104)
(xy 177.905104 76.729792) (xy 177.905106 76.729788) (xy 177.905109 76.729786) (xy 178.030048 76.55782)
(xy 178.030047 76.55782) (xy 178.030051 76.557816) (xy 178.126557 76.368412) (xy 178.192246 76.166243)
(xy 178.2255 75.956287) (xy 178.2255 75.743713) (xy 178.192246 75.533757) (xy 178.126557 75.331588)
(xy 178.030051 75.142184) (xy 178.030049 75.142181) (xy 178.030048 75.142179) (xy 177.905109 74.970213)
(xy 177.754786 74.81989) (xy 177.58282 74.694951) (xy 177.393414 74.598444) (xy 177.393413 74.598443)
(xy 177.393412 74.598443) (xy 177.191243 74.532754) (xy 177.191241 74.532753) (xy 177.19124 74.532753)
(xy 177.029957 74.507208) (xy 176.981287 74.4995) (xy 176.518713 74.4995) (xy 176.470042 74.507208)
(xy 176.30876 74.532753) (xy 176.106585 74.598444) (xy 175.917179 74.694951) (xy 175.745213 74.81989)
(xy 175.59489 74.970213) (xy 175.469951 75.142179) (xy 175.373444 75.331585) (xy 175.307753 75.53376)
(xy 175.2745 75.743713) (xy 139.991761 75.743713) (xy 139.981925 75.707007) (xy 139.949012 75.65)
(xy 140.866 75.65) (xy 140.866 75.002172) (xy 140.865999 75.002155) (xy 140.859598 74.942627) (xy 140.859596 74.94262)
(xy 140.809354 74.807913) (xy 140.80935 74.807906) (xy 140.72319 74.692812) (xy 140.723187 74.692809)
(xy 140.608093 74.606649) (xy 140.608088 74.606646) (xy 140.476528 74.557577) (xy 140.420595 74.515705)
(xy 140.396178 74.450241) (xy 140.41103 74.381968) (xy 140.432175 74.35372) (xy 140.546104 74.239792)
(xy 140.671051 74.067816) (xy 140.767557 73.878412) (xy 140.833246 73.676243) (xy 140.8665 73.466287)
(xy 140.8665 73.253713) (xy 140.833246 73.043757) (xy 140.767557 72.841588) (xy 140.671051 72.652184)
(xy 140.671049 72.652181) (xy 140.671048 72.652179) (xy 140.546109 72.480213) (xy 140.395786 72.32989)
(xy 140.22382 72.204951) (xy 140.223115 72.204591) (xy 140.215054 72.200485) (xy 140.164259 72.152512)
(xy 140.147463 72.084692) (xy 140.169999 72.018556) (xy 140.215054 71.979515) (xy 140.223816 71.975051)
(xy 140.245789 71.959086) (xy 140.395786 71.850109) (xy 140.395788 71.850106) (xy 140.395792 71.850104)
(xy 140.546104 71.699792) (xy 140.546106 71.699788) (xy 140.546109 71.699786) (xy 140.671048 71.52782)
(xy 140.671047 71.52782) (xy 140.671051 71.527816) (xy 140.767557 71.338412) (xy 140.833246 71.136243)
(xy 140.8665 70.926287) (xy 140.8665 70.713713) (xy 140.862489 70.688389) (xy 148.8245 70.688389)
(xy 148.8245 70.86161) (xy 148.834743 70.926286) (xy 148.851598 71.032701) (xy 148.905127 71.197445)
(xy 148.983768 71.351788) (xy 149.085586 71.491928) (xy 149.208072 71.614414) (xy 149.348212 71.716232)
(xy 149.502555 71.794873) (xy 149.667299 71.848402) (xy 149.838389 71.8755) (xy 149.83839 71.8755)
(xy 150.01161 71.8755) (xy 150.011611 71.8755) (xy 150.182701 71.848402) (xy 150.347445 71.794873)
(xy 150.501788 71.716232) (xy 150.641928 71.614414) (xy 150.764414 71.491928) (xy 150.866232 71.351788)
(xy 150.944873 71.197445) (xy 150.998402 71.032701) (xy 151.0255 70.861611) (xy 151.0255 70.688389)
(xy 150.998402 70.517299) (xy 150.944873 70.352555) (xy 150.866232 70.198212) (xy 150.764414 70.058072)
(xy 150.661818 69.955476) (xy 150.628334 69.894153) (xy 150.6255 69.867795) (xy 150.6255 69.182204)
(xy 150.645185 69.115165) (xy 150.661819 69.094523) (xy 150.671819 69.084523) (xy 150.769414 68.986928)
(xy 150.871232 68.846788) (xy 150.949873 68.692445) (xy 151.003402 68.527701) (xy 151.0305 68.356611)
(xy 151.0305 68.183389) (xy 151.003402 68.012299) (xy 150.949873 67.847555) (xy 150.871232 67.693212)
(xy 150.769414 67.553072) (xy 150.646928 67.430586) (xy 150.506788 67.328768) (xy 150.352445 67.250127)
(xy 150.187701 67.196598) (xy 150.187699 67.196597) (xy 150.187698 67.196597) (xy 150.056271 67.175781)
(xy 150.016611 67.1695) (xy 149.843389 67.1695) (xy 149.803728 67.175781) (xy 149.672302 67.196597)
(xy 149.507552 67.250128) (xy 149.353211 67.328768) (xy 149.273256 67.386859) (xy 149.213072 67.430586)
(xy 149.21307 67.430588) (xy 149.213069 67.430588) (xy 149.090588 67.553069) (xy 149.090588 67.55307)
(xy 149.090586 67.553072) (xy 149.046859 67.613256) (xy 148.988768 67.693211) (xy 148.910128 67.847552)
(xy 148.856597 68.012302) (xy 148.8295 68.183389) (xy 148.8295 68.356611) (xy 148.856598 68.527701)
(xy 148.910127 68.692445) (xy 148.988768 68.846788) (xy 149.090586 68.986928) (xy 149.090588 68.98693)
(xy 149.188181 69.084523) (xy 149.221666 69.145846) (xy 149.2245 69.172204) (xy 149.2245 69.867795)
(xy 149.204815 69.934834) (xy 149.188182 69.955476) (xy 149.085585 70.058073) (xy 148.983768 70.198211)
(xy 148.905128 70.352552) (xy 148.851597 70.517302) (xy 148.8245 70.688389) (xy 140.862489 70.688389)
(xy 140.833246 70.503757) (xy 140.767557 70.301588) (xy 140.671051 70.112184) (xy 140.671049 70.112181)
(xy 140.671048 70.112179) (xy 140.546109 69.940213) (xy 140.395786 69.78989) (xy 140.22382 69.664951)
(xy 140.223115 69.664591) (xy 140.215054 69.660485) (xy 140.164259 69.612512) (xy 140.147463 69.544692)
(xy 140.169999 69.478556) (xy 140.215054 69.439515) (xy 140.223816 69.435051) (xy 140.245789 69.419086)
(xy 140.395786 69.310109) (xy 140.395788 69.310106) (xy 140.395792 69.310104) (xy 140.546104 69.159792)
(xy 140.546106 69.159788) (xy 140.546109 69.159786) (xy 140.671048 68.98782) (xy 140.671047 68.98782)
(xy 140.671051 68.987816) (xy 140.767557 68.798412) (xy 140.833246 68.596243) (xy 140.8665 68.386287)
(xy 140.8665 68.173713) (xy 140.833246 67.963757) (xy 140.767557 67.761588) (xy 140.671051 67.572184)
(xy 140.671049 67.572181) (xy 140.671048 67.572179) (xy 140.546109 67.400213) (xy 140.395786 67.24989)
(xy 140.22382 67.124951) (xy 140.223115 67.124591) (xy 140.215054 67.120485) (xy 140.164259 67.072512)
(xy 140.147463 67.004692) (xy 140.169999 66.938556) (xy 140.215054 66.899515) (xy 140.223816 66.895051)
(xy 140.245789 66.879086) (xy 140.395786 66.770109) (xy 140.395788 66.770106) (xy 140.395792 66.770104)
(xy 140.546104 66.619792) (xy 140.546106 66.619788) (xy 140.546109 66.619786) (xy 140.671048 66.44782)
(xy 140.671047 66.44782) (xy 140.671051 66.447816) (xy 140.767557 66.258412) (xy 140.833246 66.056243)
(xy 140.8665 65.846287) (xy 140.8665 65.633713) (xy 140.833246 65.423757) (xy 140.767557 65.221588)
(xy 140.671051 65.032184) (xy 140.671049 65.032181) (xy 140.671048 65.032179) (xy 140.546109 64.860213)
(xy 140.395786 64.70989) (xy 140.22382 64.584951) (xy 140.223115 64.584591) (xy 140.215054 64.580485)
(xy 140.164259 64.532512) (xy 140.147463 64.464692) (xy 140.169999 64.398556) (xy 140.215054 64.359515)
(xy 140.223816 64.355051) (xy 140.245789 64.339086) (xy 140.395786 64.230109) (xy 140.395788 64.230106)
(xy 140.395792 64.230104) (xy 140.546104 64.079792) (xy 140.546106 64.079788) (xy 140.546109 64.079786)
(xy 140.671048 63.90782) (xy 140.671047 63.90782) (xy 140.671051 63.907816) (xy 140.767557 63.718412)
(xy 140.833246 63.516243) (xy 140.8665 63.306287) (xy 140.8665 63.093713) (xy 140.833246 62.883757)
(xy 140.767557 62.681588) (xy 140.671051 62.492184) (xy 140.671049 62.492181) (xy 140.671048 62.492179)
(xy 140.546109 62.320213) (xy 140.395786 62.16989) (xy 140.22382 62.044951) (xy 140.223115 62.044591)
(xy 140.215054 62.040485) (xy 140.164259 61.992512) (xy 140.147463 61.924692) (xy 140.169999 61.858556)
(xy 140.215054 61.819515) (xy 140.223816 61.815051) (xy 140.245789 61.799086) (xy 140.395786 61.690109)
(xy 140.395788 61.690106) (xy 140.395792 61.690104) (xy 140.546104 61.539792) (xy 140.546106 61.539788)
(xy 140.546109 61.539786) (xy 140.671048 61.36782) (xy 140.671047 61.36782) (xy 140.671051 61.367816)
(xy 140.767557 61.178412) (xy 140.833246 60.976243) (xy 140.8665 60.766287) (xy 140.8665 60.553713)
(xy 140.833246 60.343757) (xy 140.767557 60.141588) (xy 140.671051 59.952184) (xy 140.671049 59.952181)
(xy 140.671048 59.952179) (xy 140.546109 59.780213) (xy 140.395786 59.62989) (xy 140.22382 59.504951)
(xy 140.223115 59.504591) (xy 140.215054 59.500485) (xy 140.164259 59.452512) (xy 140.147463 59.384692)
(xy 140.169999 59.318556) (xy 140.215054 59.279515) (xy 140.223816 59.275051) (xy 140.359245 59.176657)
(xy 140.395786 59.150109) (xy 140.395788 59.150106) (xy 140.395792 59.150104) (xy 140.546104 58.999792)
(xy 140.546106 58.999788) (xy 140.546109 58.999786) (xy 140.671048 58.82782) (xy 140.671047 58.82782)
(xy 140.671051 58.827816) (xy 140.767557 58.638412) (xy 140.833246 58.436243) (xy 140.8665 58.226287)
(xy 140.8665 58.013713) (xy 140.833246 57.803757) (xy 140.767557 57.601588) (xy 140.671051 57.412184)
(xy 140.671049 57.412181) (xy 140.671048 57.412179) (xy 140.546109 57.240213) (xy 140.395786 57.08989)
(xy 140.22382 56.964951) (xy 140.034412 56.868443) (xy 140.029269 56.866772) (xy 139.832243 56.802754)
(xy 139.832241 56.802753) (xy 139.83224 56.802753) (xy 139.670957 56.777208) (xy 139.622287 56.7695)
(xy 139.409713 56.7695) (xy 139.361042 56.777208) (xy 139.19976 56.802753) (xy 138.997585 56.868444)
(xy 138.808179 56.964951) (xy 138.636213 57.08989) (xy 138.48589 57.240213) (xy 138.360951 57.412179)
(xy 138.264444 57.601585) (xy 138.198753 57.80376) (xy 138.185077 57.890109) (xy 138.1655 58.013713)
(xy 132.6505 58.013713) (xy 132.6505 56.753713) (xy 175.2645 56.753713) (xy 175.2645 56.966287)
(xy 175.297754 57.176243) (xy 175.318539 57.240213) (xy 175.363444 57.378414) (xy 175.459951 57.56782)
(xy 175.58489 57.739786) (xy 175.735209 57.890105) (xy 175.735214 57.890109) (xy 175.900218 58.009991)
(xy 175.942884 58.06532) (xy 175.948863 58.134934) (xy 175.916258 58.196729) (xy 175.900218 58.210627)
(xy 175.73554 58.330272) (xy 175.735535 58.330276) (xy 175.585276 58.480535) (xy 175.585272 58.48054)
(xy 175.460379 58.652442) (xy 175.363904 58.841782) (xy 175.298242 59.04387) (xy 175.298242 59.043873)
(xy 175.287769 59.11) (xy 176.335854 59.11) (xy 176.29737 59.176657) (xy 176.265 59.297465) (xy 176.265 59.422535)
(xy 176.29737 59.543343) (xy 176.335854 59.61) (xy 175.287769 59.61) (xy 175.298242 59.676126) (xy 175.298242 59.676129)
(xy 175.363904 59.878217) (xy 175.460379 60.067557) (xy 175.585272 60.239459) (xy 175.585276 60.239464)
(xy 175.724143 60.378331) (xy 175.757628 60.439654) (xy 175.752644 60.509346) (xy 175.710772 60.565279)
(xy 175.701559 60.571551) (xy 175.546342 60.667289) (xy 175.422289 60.791342) (xy 175.330187 60.940663)
(xy 175.330186 60.940666) (xy 175.275001 61.107203) (xy 175.275001 61.107204) (xy 175.275 61.107204)
(xy 175.2645 61.209983) (xy 175.2645 62.510001) (xy 175.264501 62.510018) (xy 175.275 62.612796)
(xy 175.275001 62.612799) (xy 175.297795 62.681585) (xy 175.330186 62.779334) (xy 175.422288 62.928656)
(xy 175.546344 63.052712) (xy 175.695666 63.144814) (xy 175.862203 63.199999) (xy 175.964991 63.2105)
(xy 177.515008 63.210499) (xy 177.617797 63.199999) (xy 177.784334 63.144814) (xy 177.933656 63.052712)
(xy 178.057712 62.928656) (xy 178.149814 62.779334) (xy 178.204999 62.612797) (xy 178.2155 62.510009)
(xy 178.215499 61.209992) (xy 178.204999 61.107203) (xy 178.149814 60.940666) (xy 178.057712 60.791344)
(xy 177.933656 60.667288) (xy 177.784334 60.575186) (xy 177.784332 60.575185) (xy 177.77844 60.571551)
(xy 177.731716 60.519603) (xy 177.720493 60.450641) (xy 177.748337 60.386558) (xy 177.755856 60.37833)
(xy 177.894728 60.239458) (xy 178.01962 60.067557) (xy 178.116095 59.878217) (xy 178.181757 59.676129)
(xy 178.181757 59.676126) (xy 178.192231 59.61) (xy 177.144146 59.61) (xy 177.18263 59.543343) (xy 177.215 59.422535)
(xy 177.215 59.297465) (xy 177.18263 59.176657) (xy 177.144146 59.11) (xy 178.192231 59.11) (xy 178.181757 59.043873)
(xy 178.181757 59.04387) (xy 178.116095 58.841782) (xy 178.01962 58.652442) (xy 177.894727 58.48054)
(xy 177.894723 58.480535) (xy 177.744464 58.330276) (xy 177.744459 58.330272) (xy 177.579781 58.210627)
(xy 177.537115 58.155297) (xy 177.531136 58.085684) (xy 177.563741 58.023889) (xy 177.579776 58.009994)
(xy 177.744792 57.890104) (xy 177.895104 57.739792) (xy 177.895106 57.739788) (xy 177.895109 57.739786)
(xy 178.020048 57.56782) (xy 178.020047 57.56782) (xy 178.020051 57.567816) (xy 178.116557 57.378412)
(xy 178.182246 57.176243) (xy 178.2155 56.966287) (xy 178.2155 56.753713) (xy 178.182246 56.543757)
(xy 178.116557 56.341588) (xy 178.020051 56.152184) (xy 178.020049 56.152181) (xy 178.020048 56.152179)
(xy 177.895109 55.980213) (xy 177.744786 55.82989) (xy 177.57282 55.704951) (xy 177.383414 55.608444)
(xy 177.383413 55.608443) (xy 177.383412 55.608443) (xy 177.181243 55.542754) (xy 177.181241 55.542753)
(xy 177.18124 55.542753) (xy 177.019957 55.517208) (xy 176.971287 55.5095) (xy 176.508713 55.5095)
(xy 176.460042 55.517208) (xy 176.29876 55.542753) (xy 176.096585 55.608444) (xy 175.907179 55.704951)
(xy 175.735213 55.82989) (xy 175.58489 55.980213) (xy 175.459951 56.152179) (xy 175.363444 56.341585)
(xy 175.297753 56.54376) (xy 175.2645 56.753713) (xy 132.6505 56.753713) (xy 132.6505 47.074875)
(xy 138.6223 47.074875) (xy 138.6223 47.283524) (xy 138.654937 47.489589) (xy 138.719412 47.68802)
(xy 138.797825 47.841914) (xy 138.81413 47.873914) (xy 138.936765 48.042705) (xy 139.084295 48.190235)
(xy 139.253086 48.31287) (xy 139.340916 48.357621) (xy 139.438979 48.407587) (xy 139.438981 48.407587)
(xy 139.438984 48.407589) (xy 139.538925 48.440062) (xy 139.63741 48.472062) (xy 139.843476 48.5047)
(xy 139.843481 48.5047) (xy 140.052124 48.5047) (xy 140.258189 48.472062) (xy 140.456616 48.407589)
(xy 140.642514 48.31287) (xy 140.811305 48.190235) (xy 140.958835 48.042705) (xy 141.08147 47.873914)
(xy 141.176189 47.688016) (xy 141.240662 47.489589) (xy 141.24573 47.457589) (xy 141.2733 47.283524)
(xy 141.2733 47.074876) (xy 141.270533 47.057408) (xy 141.270533 47.057407) (xy 141.268231 47.042875)
(xy 161.5077 47.042875) (xy 161.5077 47.251524) (xy 161.540337 47.457589) (xy 161.604812 47.65602)
(xy 161.69953 47.841914) (xy 161.822165 48.010705) (xy 161.969695 48.158235) (xy 162.138486 48.28087)
(xy 162.201288 48.312869) (xy 162.324379 48.375587) (xy 162.324381 48.375587) (xy 162.324384 48.375589)
(xy 162.42287 48.407589) (xy 162.52281 48.440062) (xy 162.728876 48.4727) (xy 162.728881 48.4727)
(xy 162.937524 48.4727) (xy 163.143589 48.440062) (xy 163.162015 48.434075) (xy 163.342016 48.375589)
(xy 163.527914 48.28087) (xy 163.696705 48.158235) (xy 163.844235 48.010705) (xy 163.96687 47.841914)
(xy 164.061589 47.656016) (xy 164.126062 47.457589) (xy 164.126895 47.452328) (xy 164.1587 47.251524)
(xy 164.1587 47.042875) (xy 164.126062 46.83681) (xy 164.061587 46.638379) (xy 164.011621 46.540316)
(xy 163.96687 46.452486) (xy 163.844235 46.283695) (xy 163.696705 46.136165) (xy 163.527914 46.01353)
(xy 163.34202 45.918812) (xy 163.143589 45.854337) (xy 162.937524 45.8217) (xy 162.937519 45.8217)
(xy 162.728881 45.8217) (xy 162.728876 45.8217) (xy 162.52281 45.854337) (xy 162.324379 45.918812)
(xy 162.138485 46.01353) (xy 161.969693 46.136166) (xy 161.822166 46.283693) (xy 161.69953 46.452485)
(xy 161.604812 46.638379) (xy 161.540337 46.83681) (xy 161.5077 47.042875) (xy 141.268231 47.042875)
(xy 141.240662 46.86881) (xy 141.176187 46.670379) (xy 141.081469 46.484485) (xy 141.05822 46.452486)
(xy 140.958835 46.315695) (xy 140.811305 46.168165) (xy 140.642514 46.04553) (xy 140.636873 46.042656)
(xy 140.45662 45.950812) (xy 140.258189 45.886337) (xy 140.052124 45.8537) (xy 140.052119 45.8537)
(xy 139.843481 45.8537) (xy 139.843476 45.8537) (xy 139.63741 45.886337) (xy 139.438979 45.950812)
(xy 139.253085 46.04553) (xy 139.084293 46.168166) (xy 138.936766 46.315693) (xy 138.81413 46.484485)
(xy 138.719412 46.670379) (xy 138.654937 46.86881) (xy 138.6223 47.074875) (xy 132.6505 47.074875)
(xy 132.6505 44.874038) (xy 133.5495 44.874038) (xy 133.5495 45.125961) (xy 133.58891 45.374785)
(xy 133.66676 45.614383) (xy 133.745413 45.768747) (xy 133.772394 45.8217) (xy 133.781132 45.838848)
(xy 133.929201 46.042649) (xy 133.929205 46.042654) (xy 134.107345 46.220794) (xy 134.10735 46.220798)
(xy 134.285117 46.349952) (xy 134.311155 46.36887) (xy 134.454184 46.441747) (xy 134.535616 46.483239)
(xy 134.535618 46.483239) (xy 134.535621 46.483241) (xy 134.775215 46.56109) (xy 135.024038 46.6005)
(xy 135.024039 46.6005) (xy 135.275961 46.6005) (xy 135.275962 46.6005) (xy 135.524785 46.56109)
(xy 135.764379 46.483241) (xy 135.988845 46.36887) (xy 136.192656 46.220793) (xy 136.370793 46.042656)
(xy 136.51887 45.838845) (xy 136.633241 45.614379) (xy 136.682708 45.462135) (xy 167.6895 45.462135)
(xy 167.6895 47.25787) (xy 167.689501 47.257876) (xy 167.695908 47.317483) (xy 167.746202 47.452328)
(xy 167.746206 47.452335) (xy 167.832452 47.567544) (xy 167.832455 47.567547) (xy 167.947664 47.653793)
(xy 167.947671 47.653797) (xy 167.992618 47.670561) (xy 168.082517 47.704091) (xy 168.142127 47.7105)
(xy 168.152685 47.710499) (xy 168.219723 47.730179) (xy 168.240372 47.746818) (xy 168.910591 48.417037)
(xy 168.847007 48.434075) (xy 168.732993 48.499901) (xy 168.639901 48.592993) (xy 168.574075 48.707007)
(xy 168.557037 48.770591) (xy 167.924728 48.138282) (xy 167.924727 48.138282) (xy 167.88538 48.192439)
(xy 167.788904 48.381782) (xy 167.723242 48.583869) (xy 167.723242 48.583872) (xy 167.69 48.793753)
(xy 167.69 49.006246) (xy 167.723242 49.216127) (xy 167.723242 49.21613) (xy 167.788904 49.418217)
(xy 167.885375 49.60755) (xy 167.924728 49.661716) (xy 168.557037 49.029408) (xy 168.574075 49.092993)
(xy 168.639901 49.207007) (xy 168.732993 49.300099) (xy 168.847007 49.365925) (xy 168.91059 49.382962)
(xy 168.278282 50.015269) (xy 168.278282 50.01527) (xy 168.332452 50.054626) (xy 168.332451 50.054626)
(xy 168.341495 50.059234) (xy 168.392292 50.107208) (xy 168.409087 50.175029) (xy 168.38655 50.241164)
(xy 168.341499 50.280202) (xy 168.332182 50.284949) (xy 168.160213 50.40989) (xy 168.00989 50.560213)
(xy 167.884951 50.732179) (xy 167.788444 50.921585) (xy 167.722753 51.12376) (xy 167.6895 51.333713)
(xy 167.6895 51.546286) (xy 167.722753 51.756239) (xy 167.788444 51.958414) (xy 167.884951 52.14782)
(xy 168.00989 52.319786) (xy 168.160213 52.470109) (xy 168.332179 52.595048) (xy 168.332181 52.595049)
(xy 168.332184 52.595051) (xy 168.521588 52.691557) (xy 168.723757 52.757246) (xy 168.933713 52.7905)
(xy 168.933714 52.7905) (xy 169.146286 52.7905) (xy 169.146287 52.7905) (xy 169.356243 52.757246)
(xy 169.558412 52.691557) (xy 169.747816 52.595051) (xy 169.769789 52.579086) (xy 169.919786 52.470109)
(xy 169.919788 52.470106) (xy 169.919792 52.470104) (xy 170.070104 52.319792) (xy 170.070106 52.319788)
(xy 170.070109 52.319786) (xy 170.195048 52.14782) (xy 170.195047 52.14782) (xy 170.195051 52.147816)
(xy 170.291557 51.958412) (xy 170.357246 51.756243) (xy 170.3905 51.546287) (xy 170.3905 51.333713)
(xy 170.357246 51.123757) (xy 170.291557 50.921588) (xy 170.195051 50.732184) (xy 170.195049 50.732181)
(xy 170.195048 50.732179) (xy 170.070109 50.560213) (xy 169.919786 50.40989) (xy 169.747817 50.284949)
(xy 169.738504 50.280204) (xy 169.687707 50.23223) (xy 169.670912 50.164409) (xy 169.693449 50.098274)
(xy 169.738507 50.059232) (xy 169.747555 50.054622) (xy 169.801716 50.01527) (xy 169.801717 50.01527)
(xy 169.169408 49.382962) (xy 169.232993 49.365925) (xy 169.347007 49.300099) (xy 169.440099 49.207007)
(xy 169.505925 49.092993) (xy 169.522962 49.029408) (xy 170.15527 49.661717) (xy 170.15527 49.661716)
(xy 170.194622 49.607554) (xy 170.291095 49.418217) (xy 170.356757 49.21613) (xy 170.356757 49.216127)
(xy 170.39 49.006246) (xy 170.39 48.793753) (xy 170.356757 48.583872) (xy 170.356757 48.583869)
(xy 170.291095 48.381782) (xy 170.194624 48.192449) (xy 170.15527 48.138282) (xy 170.155269 48.138282)
(xy 169.522962 48.77059) (xy 169.505925 48.707007) (xy 169.440099 48.592993) (xy 169.347007 48.499901)
(xy 169.232993 48.434075) (xy 169.169409 48.417037) (xy 169.839627 47.746818) (xy 169.90095 47.713333)
(xy 169.927307 47.710499) (xy 169.937872 47.710499) (xy 169.997483 47.704091) (xy 170.132331 47.653796)
(xy 170.247546 47.567546) (xy 170.333796 47.452331) (xy 170.384091 47.317483) (xy 170.3905 47.257873)
(xy 170.390499 45.462128) (xy 170.384091 45.402517) (xy 170.333796 45.267669) (xy 170.333795 45.267668)
(xy 170.333793 45.267664) (xy 170.247547 45.152455) (xy 170.247544 45.152452) (xy 170.132335 45.066206)
(xy 170.132328 45.066202) (xy 169.997482 45.015908) (xy 169.997483 45.015908) (xy 169.937883 45.009501)
(xy 169.937881 45.0095) (xy 169.937873 45.0095) (xy 169.937864 45.0095) (xy 168.142129 45.0095)
(xy 168.142123 45.009501) (xy 168.082516 45.015908) (xy 167.947671 45.066202) (xy 167.947664 45.066206)
(xy 167.832455 45.152452) (xy 167.832452 45.152455) (xy 167.746206 45.267664) (xy 167.746202 45.267671)
(xy 167.695908 45.402517) (xy 167.689501 45.462116) (xy 167.689501 45.462123) (xy 167.6895 45.462135)
(xy 136.682708 45.462135) (xy 136.68271 45.462129) (xy 136.696241 45.420487) (xy 136.696241 45.420486)
(xy 136.711089 45.374789) (xy 136.711089 45.374788) (xy 136.71109 45.374785) (xy 136.7505 45.125962)
(xy 136.7505 44.874038) (xy 177.5495 44.874038) (xy 177.5495 45.125961) (xy 177.58891 45.374785)
(xy 177.66676 45.614383) (xy 177.745413 45.768747) (xy 177.772394 45.8217) (xy 177.781132 45.838848)
(xy 177.929201 46.042649) (xy 177.929205 46.042654) (xy 178.107345 46.220794) (xy 178.10735 46.220798)
(xy 178.285117 46.349952) (xy 178.311155 46.36887) (xy 178.454184 46.441747) (xy 178.535616 46.483239)
(xy 178.535618 46.483239) (xy 178.535621 46.483241) (xy 178.775215 46.56109) (xy 179.024038 46.6005)
(xy 179.024039 46.6005) (xy 179.275961 46.6005) (xy 179.275962 46.6005) (xy 179.524785 46.56109)
(xy 179.764379 46.483241) (xy 179.988845 46.36887) (xy 180.192656 46.220793) (xy 180.370793 46.042656)
(xy 180.51887 45.838845) (xy 180.633241 45.614379) (xy 180.71109 45.374785) (xy 180.7505 45.125962)
(xy 180.7505 44.874038) (xy 180.71109 44.625215) (xy 180.633241 44.385621) (xy 180.633239 44.385618)
(xy 180.633239 44.385616) (xy 180.591747 44.304184) (xy 180.51887 44.161155) (xy 180.499952 44.135117)
(xy 180.370798 43.95735) (xy 180.370794 43.957345) (xy 180.192654 43.779205) (xy 180.192649 43.779201)
(xy 179.988848 43.631132) (xy 179.988847 43.631131) (xy 179.988845 43.63113) (xy 179.918747 43.595413)
(xy 179.764383 43.51676) (xy 179.524785 43.43891) (xy 179.275962 43.3995) (xy 179.024038 43.3995)
(xy 178.899626 43.419205) (xy 178.775214 43.43891) (xy 178.535616 43.51676) (xy 178.311151 43.631132)
(xy 178.10735 43.779201) (xy 178.107345 43.779205) (xy 177.929205 43.957345) (xy 177.929201 43.95735)
(xy 177.781132 44.161151) (xy 177.66676 44.385616) (xy 177.58891 44.625214) (xy 177.5495 44.874038)
(xy 136.7505 44.874038) (xy 136.71109 44.625215) (xy 136.633241 44.385621) (xy 136.633239 44.385618)
(xy 136.633239 44.385616) (xy 136.591747 44.304184) (xy 136.51887 44.161155) (xy 136.499952 44.135117)
(xy 136.370798 43.95735) (xy 136.370794 43.957345) (xy 136.192654 43.779205) (xy 136.192649 43.779201)
(xy 135.988848 43.631132) (xy 135.988847 43.631131) (xy 135.988845 43.63113) (xy 135.918747 43.595413)
(xy 135.764383 43.51676) (xy 135.524785 43.43891) (xy 135.275962 43.3995) (xy 135.024038 43.3995)
(xy 134.899626 43.419205) (xy 134.775214 43.43891) (xy 134.535616 43.51676) (xy 134.311151 43.631132)
(xy 134.10735 43.779201) (xy 134.107345 43.779205) (xy 133.929205 43.957345) (xy 133.929201 43.95735)
(xy 133.781132 44.161151) (xy 133.66676 44.385616) (xy 133.58891 44.625214) (xy 133.5495 44.874038)
(xy 132.6505 44.874038) (xy 132.6505 42.6245) (xy 132.670185 42.557461) (xy 132.722989 42.511706)
(xy 132.7745 42.5005) (xy 181.5255 42.5005)
)
)
)
@@ -6457,54 +6458,55 @@
(xy 138.264444 66.258414) (xy 138.360951 66.44782) (xy 138.48589 66.619786) (xy 138.636213 66.770109)
(xy 138.808182 66.89505) (xy 138.816946 66.899516) (xy 138.867742 66.947491) (xy 138.884536 67.015312)
(xy 138.861998 67.081447) (xy 138.816946 67.120484) (xy 138.808182 67.124949) (xy 138.636213 67.24989)
(xy 138.48589 67.400213) (xy 138.360951 67.572179) (xy 138.264444 67.761585) (xy 138.198753 67.96376)
(xy 138.1655 68.173713) (xy 138.1655 68.386286) (xy 138.197908 68.590905) (xy 138.198754 68.596243)
(xy 138.262464 68.792322) (xy 138.264444 68.798414) (xy 138.360951 68.98782) (xy 138.48589 69.159786)
(xy 138.636213 69.310109) (xy 138.808182 69.43505) (xy 138.816946 69.439516) (xy 138.867742 69.487491)
(xy 138.884536 69.555312) (xy 138.861998 69.621447) (xy 138.816946 69.660484) (xy 138.808182 69.664949)
(xy 138.636213 69.78989) (xy 138.48589 69.940213) (xy 138.360951 70.112179) (xy 138.264444 70.301585)
(xy 138.198753 70.50376) (xy 138.1655 70.713713) (xy 138.1655 70.926286) (xy 138.198753 71.136239)
(xy 138.264444 71.338414) (xy 138.360951 71.52782) (xy 138.48589 71.699786) (xy 138.636213 71.850109)
(xy 138.808182 71.97505) (xy 138.816946 71.979516) (xy 138.867742 72.027491) (xy 138.884536 72.095312)
(xy 138.861998 72.161447) (xy 138.816946 72.200484) (xy 138.808182 72.204949) (xy 138.636213 72.32989)
(xy 138.485898 72.480205) (xy 138.485898 72.480206) (xy 138.485896 72.480208) (xy 138.465422 72.508386)
(xy 138.410094 72.551051) (xy 138.365106 72.5595) (xy 137.46794 72.5595) (xy 137.400901 72.539815)
(xy 137.380259 72.523181) (xy 136.736819 71.879741) (xy 136.703334 71.818418) (xy 136.7005 71.79206)
(xy 136.7005 56.332939) (xy 136.720185 56.2659) (xy 136.736819 56.245258) (xy 137.545258 55.436819)
(xy 137.606581 55.403334) (xy 137.632939 55.4005) (xy 148.96706 55.4005) (xy 149.034099 55.420185)
(xy 149.054741 55.436819) (xy 149.938181 56.320259) (xy 149.971666 56.381582) (xy 149.9745 56.40794)
(xy 149.9745 56.952983) (xy 149.954815 57.020022) (xy 149.902011 57.065777) (xy 149.88951 57.070686)
(xy 149.831559 57.08989) (xy 149.830666 57.090186) (xy 149.830663 57.090187) (xy 149.681342 57.182289)
(xy 149.557289 57.306342) (xy 149.465187 57.455663) (xy 149.465186 57.455666) (xy 149.410001 57.622203)
(xy 149.410001 57.622204) (xy 149.41 57.622204) (xy 149.3995 57.724983) (xy 149.3995 58.625001)
(xy 149.399501 58.625019) (xy 149.41 58.727796) (xy 149.410001 58.727799) (xy 149.465185 58.894331)
(xy 149.465187 58.894336) (xy 149.480604 58.919331) (xy 149.557288 59.043656) (xy 149.681344 59.167712)
(xy 149.830666 59.259814) (xy 149.997203 59.314999) (xy 150.099991 59.3255) (xy 151.450008 59.325499)
(xy 151.552797 59.314999) (xy 151.719334 59.259814) (xy 151.868656 59.167712) (xy 151.992712 59.043656)
(xy 152.084814 58.894334) (xy 152.139999 58.727797) (xy 152.149225 58.637486) (xy 153.250001 58.637486)
(xy 153.260494 58.740197) (xy 153.315641 58.906619) (xy 153.315643 58.906624) (xy 153.407684 59.055845)
(xy 153.531654 59.179815) (xy 153.680875 59.271856) (xy 153.68088 59.271858) (xy 153.847302 59.327005)
(xy 153.847309 59.327006) (xy 153.950019 59.337499) (xy 154.399999 59.337499) (xy 154.4 59.337498)
(xy 154.4 58.425) (xy 153.250001 58.425) (xy 153.250001 58.637486) (xy 152.149225 58.637486) (xy 152.1505 58.625009)
(xy 152.150499 58.155297) (xy 152.150499 57.724998) (xy 152.150498 57.724982) (xy 152.15019 57.721966)
(xy 152.15019 57.721965) (xy 152.149224 57.712513) (xy 153.25 57.712513) (xy 153.25 57.925) (xy 154.4 57.925)
(xy 154.4 57.0125) (xy 153.950028 57.0125) (xy 153.950012 57.012501) (xy 153.847302 57.022994) (xy 153.68088 57.078141)
(xy 153.680875 57.078143) (xy 153.531654 57.170184) (xy 153.407684 57.294154) (xy 153.315643 57.443375)
(xy 153.315641 57.44338) (xy 153.260494 57.609802) (xy 153.260493 57.609809) (xy 153.25 57.712513)
(xy 152.149224 57.712513) (xy 152.139999 57.622203) (xy 152.139998 57.6222) (xy 152.09343 57.481668)
(xy 152.084814 57.455666) (xy 151.992712 57.306344) (xy 151.868656 57.182288) (xy 151.719334 57.090186)
(xy 151.660493 57.070688) (xy 151.603051 57.030916) (xy 151.576228 56.9664) (xy 151.5755 56.952983)
(xy 151.5755 55.946156) (xy 151.57015 55.919263) (xy 151.560581 55.871158) (xy 151.544737 55.791503)
(xy 151.540722 55.781811) (xy 151.528268 55.751745) (xy 151.507042 55.7005) (xy 151.484394 55.645821)
(xy 151.484392 55.645819) (xy 151.484392 55.645817) (xy 151.39679 55.514712) (xy 151.364479 55.482401)
(xy 151.285289 55.403211) (xy 150.836819 54.954741) (xy 150.803334 54.893418) (xy 150.8005 54.86706)
(xy 150.8005 53.979423) (xy 150.820185 53.912384) (xy 150.872989 53.866629) (xy 150.900309 53.857806)
(xy 150.971827 53.84358) (xy 151.078246 53.7995) (xy 151.099306 53.790777) (xy 151.099307 53.790776)
(xy 151.09931 53.790775) (xy 151.214042 53.714114) (xy 154.971337 49.956819) (xy 155.03266 49.923334)
(xy 155.059018 49.9205) (xy 163.698996 49.9205) (xy 163.79004 49.902389) (xy 163.834328 49.89358)
(xy 163.898069 49.867177) (xy 163.961807 49.840777) (xy 163.961808 49.840776) (xy 163.961811 49.840775)
(xy 164.076543 49.764114) (xy 165.417744 48.422913) (xy 166.713837 47.126819) (xy 166.77516 47.093334)
(xy 166.801518 47.0905) (xy 167.565501 47.0905)
(xy 138.48589 67.400213) (xy 138.360951 67.572179) (xy 138.264444 67.761585) (xy 138.264443 67.761587)
(xy 138.264443 67.761588) (xy 138.232596 67.859602) (xy 138.198753 67.96376) (xy 138.1655 68.173713)
(xy 138.1655 68.386286) (xy 138.197908 68.590905) (xy 138.198754 68.596243) (xy 138.262464 68.792322)
(xy 138.264444 68.798414) (xy 138.360951 68.98782) (xy 138.48589 69.159786) (xy 138.636213 69.310109)
(xy 138.808182 69.43505) (xy 138.816946 69.439516) (xy 138.867742 69.487491) (xy 138.884536 69.555312)
(xy 138.861998 69.621447) (xy 138.816946 69.660484) (xy 138.808182 69.664949) (xy 138.636213 69.78989)
(xy 138.48589 69.940213) (xy 138.360951 70.112179) (xy 138.264444 70.301585) (xy 138.198753 70.50376)
(xy 138.169511 70.688389) (xy 138.1655 70.713713) (xy 138.1655 70.926287) (xy 138.198754 71.136243)
(xy 138.21864 71.197447) (xy 138.264444 71.338414) (xy 138.360951 71.52782) (xy 138.48589 71.699786)
(xy 138.636213 71.850109) (xy 138.808182 71.97505) (xy 138.816946 71.979516) (xy 138.867742 72.027491)
(xy 138.884536 72.095312) (xy 138.861998 72.161447) (xy 138.816946 72.200484) (xy 138.808182 72.204949)
(xy 138.636213 72.32989) (xy 138.485898 72.480205) (xy 138.485898 72.480206) (xy 138.485896 72.480208)
(xy 138.465422 72.508386) (xy 138.410094 72.551051) (xy 138.365106 72.5595) (xy 137.46794 72.5595)
(xy 137.400901 72.539815) (xy 137.380259 72.523181) (xy 136.736819 71.879741) (xy 136.703334 71.818418)
(xy 136.7005 71.79206) (xy 136.7005 56.332939) (xy 136.720185 56.2659) (xy 136.736819 56.245258)
(xy 137.545258 55.436819) (xy 137.606581 55.403334) (xy 137.632939 55.4005) (xy 148.96706 55.4005)
(xy 149.034099 55.420185) (xy 149.054741 55.436819) (xy 149.938181 56.320259) (xy 149.971666 56.381582)
(xy 149.9745 56.40794) (xy 149.9745 56.952983) (xy 149.954815 57.020022) (xy 149.902011 57.065777)
(xy 149.88951 57.070686) (xy 149.831559 57.08989) (xy 149.830666 57.090186) (xy 149.830663 57.090187)
(xy 149.681342 57.182289) (xy 149.557289 57.306342) (xy 149.465187 57.455663) (xy 149.465186 57.455666)
(xy 149.410001 57.622203) (xy 149.410001 57.622204) (xy 149.41 57.622204) (xy 149.3995 57.724983)
(xy 149.3995 58.625001) (xy 149.399501 58.625019) (xy 149.41 58.727796) (xy 149.410001 58.727799)
(xy 149.465185 58.894331) (xy 149.465187 58.894336) (xy 149.480604 58.919331) (xy 149.557288 59.043656)
(xy 149.681344 59.167712) (xy 149.830666 59.259814) (xy 149.997203 59.314999) (xy 150.099991 59.3255)
(xy 151.450008 59.325499) (xy 151.552797 59.314999) (xy 151.719334 59.259814) (xy 151.868656 59.167712)
(xy 151.992712 59.043656) (xy 152.084814 58.894334) (xy 152.139999 58.727797) (xy 152.149225 58.637486)
(xy 153.250001 58.637486) (xy 153.260494 58.740197) (xy 153.315641 58.906619) (xy 153.315643 58.906624)
(xy 153.407684 59.055845) (xy 153.531654 59.179815) (xy 153.680875 59.271856) (xy 153.68088 59.271858)
(xy 153.847302 59.327005) (xy 153.847309 59.327006) (xy 153.950019 59.337499) (xy 154.399999 59.337499)
(xy 154.4 59.337498) (xy 154.4 58.425) (xy 153.250001 58.425) (xy 153.250001 58.637486) (xy 152.149225 58.637486)
(xy 152.1505 58.625009) (xy 152.150499 58.155297) (xy 152.150499 57.724998) (xy 152.150498 57.724982)
(xy 152.15019 57.721966) (xy 152.15019 57.721965) (xy 152.149224 57.712513) (xy 153.25 57.712513)
(xy 153.25 57.925) (xy 154.4 57.925) (xy 154.4 57.0125) (xy 153.950028 57.0125) (xy 153.950012 57.012501)
(xy 153.847302 57.022994) (xy 153.68088 57.078141) (xy 153.680875 57.078143) (xy 153.531654 57.170184)
(xy 153.407684 57.294154) (xy 153.315643 57.443375) (xy 153.315641 57.44338) (xy 153.260494 57.609802)
(xy 153.260493 57.609809) (xy 153.25 57.712513) (xy 152.149224 57.712513) (xy 152.139999 57.622203)
(xy 152.139998 57.6222) (xy 152.09343 57.481668) (xy 152.084814 57.455666) (xy 151.992712 57.306344)
(xy 151.868656 57.182288) (xy 151.719334 57.090186) (xy 151.660493 57.070688) (xy 151.603051 57.030916)
(xy 151.576228 56.9664) (xy 151.5755 56.952983) (xy 151.5755 55.946156) (xy 151.57015 55.919263)
(xy 151.560581 55.871158) (xy 151.544737 55.791503) (xy 151.540722 55.781811) (xy 151.528268 55.751745)
(xy 151.507042 55.7005) (xy 151.484394 55.645821) (xy 151.484392 55.645819) (xy 151.484392 55.645817)
(xy 151.39679 55.514712) (xy 151.364479 55.482401) (xy 151.285289 55.403211) (xy 150.836819 54.954741)
(xy 150.803334 54.893418) (xy 150.8005 54.86706) (xy 150.8005 53.979423) (xy 150.820185 53.912384)
(xy 150.872989 53.866629) (xy 150.900309 53.857806) (xy 150.971827 53.84358) (xy 151.078246 53.7995)
(xy 151.099306 53.790777) (xy 151.099307 53.790776) (xy 151.09931 53.790775) (xy 151.214042 53.714114)
(xy 154.971337 49.956819) (xy 155.03266 49.923334) (xy 155.059018 49.9205) (xy 163.698996 49.9205)
(xy 163.79004 49.902389) (xy 163.834328 49.89358) (xy 163.898069 49.867177) (xy 163.961807 49.840777)
(xy 163.961808 49.840776) (xy 163.961811 49.840775) (xy 164.076543 49.764114) (xy 165.417744 48.422913)
(xy 166.713837 47.126819) (xy 166.77516 47.093334) (xy 166.801518 47.0905) (xy 167.565501 47.0905)
)
)
(filled_polygon
@@ -6777,69 +6779,68 @@
(xy 165.407285 68.668847) (xy 165.39387 68.690597) (xy 165.341922 68.737322) (xy 165.288332 68.7495)
(xy 163.771821 68.7495) (xy 163.704782 68.729815) (xy 163.659027 68.677011) (xy 163.649083 68.607853)
(xy 163.652745 68.590905) (xy 163.672597 68.522573) (xy 163.672598 68.522567) (xy 163.675499 68.485701)
(xy 163.6755 68.485694) (xy 163.6755 68.054306) (xy 163.672598 68.017431) (xy 163.665429 67.992756)
(xy 163.626745 67.859606) (xy 163.626744 67.859603) (xy 163.626744 67.859602) (xy 163.543081 67.718135)
(xy 163.543078 67.718132) (xy 163.538298 67.711969) (xy 163.540635 67.710155) (xy 163.513798 67.66105)
(xy 163.518756 67.591356) (xy 163.539554 67.558998) (xy 163.537903 67.557717) (xy 163.542686 67.55155)
(xy 163.626281 67.410198) (xy 163.6721 67.252486) (xy 163.672295 67.250001) (xy 163.672295 67.25)
(xy 160.927705 67.25) (xy 160.927704 67.250001) (xy 160.927899 67.252488) (xy 160.9279 67.252494)
(xy 160.973923 67.410905) (xy 160.973724 67.480775) (xy 160.935782 67.539445) (xy 160.872143 67.568288)
(xy 160.854847 67.5695) (xy 160.061518 67.5695) (xy 159.994479 67.549815) (xy 159.973837 67.533181)
(xy 159.686819 67.246162) (xy 159.653334 67.184839) (xy 159.6505 67.158481) (xy 159.6505 66.887486)
(xy 165.250001 66.887486) (xy 165.260494 66.990197) (xy 165.315641 67.156619) (xy 165.315643 67.156624)
(xy 165.407684 67.305845) (xy 165.531654 67.429815) (xy 165.680875 67.521856) (xy 165.68088 67.521858)
(xy 165.847302 67.577005) (xy 165.847309 67.577006) (xy 165.950019 67.587499) (xy 166.399999 67.587499)
(xy 166.9 67.587499) (xy 167.349972 67.587499) (xy 167.349986 67.587498) (xy 167.452697 67.577005)
(xy 167.619119 67.521858) (xy 167.619124 67.521856) (xy 167.768345 67.429815) (xy 167.892315 67.305845)
(xy 167.984356 67.156624) (xy 167.984358 67.156619) (xy 168.039505 66.990197) (xy 168.039506 66.99019)
(xy 168.047956 66.907485) (xy 169.205 66.907485) (xy 169.215493 67.010189) (xy 169.215494 67.010196)
(xy 169.270641 67.176618) (xy 169.270643 67.176623) (xy 169.362684 67.325844) (xy 169.486655 67.449815)
(xy 169.635876 67.541856) (xy 169.635881 67.541858) (xy 169.802303 67.597005) (xy 169.80231 67.597006)
(xy 169.905014 67.607499) (xy 169.905027 67.6075) (xy 170.65 67.6075) (xy 171.15 67.6075) (xy 171.894973 67.6075)
(xy 171.894985 67.607499) (xy 171.997689 67.597006) (xy 171.997696 67.597005) (xy 172.164118 67.541858)
(xy 172.164123 67.541856) (xy 172.313344 67.449815) (xy 172.437315 67.325844) (xy 172.529356 67.176623)
(xy 172.529358 67.176618) (xy 172.584505 67.010196) (xy 172.584506 67.010189) (xy 172.594999 66.907485)
(xy 172.595 66.907472) (xy 172.595 66.6) (xy 171.15 66.6) (xy 171.15 67.6075) (xy 170.65 67.6075)
(xy 170.65 66.6) (xy 169.205 66.6) (xy 169.205 66.907485) (xy 168.047956 66.907485) (xy 168.049999 66.887486)
(xy 168.05 66.887473) (xy 168.05 66.675) (xy 166.9 66.675) (xy 166.9 67.587499) (xy 166.399999 67.587499)
(xy 166.4 67.587498) (xy 166.4 66.675) (xy 165.250001 66.675) (xy 165.250001 66.887486) (xy 159.6505 66.887486)
(xy 159.6505 65.514298) (xy 160.9245 65.514298) (xy 160.9245 65.945701) (xy 160.927401 65.982567)
(xy 160.927402 65.982573) (xy 160.973254 66.140393) (xy 160.973255 66.140396) (xy 160.973256 66.140398)
(xy 160.99377 66.175086) (xy 161.056917 66.281862) (xy 161.061702 66.288031) (xy 161.059369 66.28984)
(xy 161.08621 66.338995) (xy 161.081226 66.408687) (xy 161.06047 66.441021) (xy 161.062097 66.442283)
(xy 161.057313 66.448449) (xy 160.973718 66.589801) (xy 160.927899 66.747513) (xy 160.927704 66.749998)
(xy 160.927705 66.75) (xy 163.672295 66.75) (xy 163.672295 66.749998) (xy 163.6721 66.747511) (xy 163.672099 66.747505)
(xy 163.646165 66.65824) (xy 163.646162 66.658232) (xy 163.626281 66.589801) (xy 163.542685 66.448447)
(xy 163.5379 66.442278) (xy 163.540366 66.440364) (xy 163.513802 66.391776) (xy 163.518749 66.322082)
(xy 163.539856 66.289232) (xy 163.538301 66.288026) (xy 163.543077 66.281868) (xy 163.543081 66.281865)
(xy 163.626744 66.140398) (xy 163.667092 66.00152) (xy 163.672597 65.982573) (xy 163.672598 65.982567)
(xy 163.674176 65.962513) (xy 165.25 65.962513) (xy 165.25 66.175) (xy 166.4 66.175) (xy 166.9 66.175)
(xy 168.049999 66.175) (xy 168.049999 65.962528) (xy 168.049998 65.962513) (xy 168.039505 65.859801)
(xy 168.029094 65.82838) (xy 168.02909 65.82837) (xy 168.017208 65.792514) (xy 169.205 65.792514)
(xy 169.205 66.1) (xy 170.65 66.1) (xy 171.15 66.1) (xy 172.595 66.1) (xy 172.595 65.792527) (xy 172.594999 65.792514)
(xy 172.584506 65.68981) (xy 172.584505 65.689803) (xy 172.529358 65.523381) (xy 172.529356 65.523376)
(xy 172.437315 65.374155) (xy 172.313344 65.250184) (xy 172.164123 65.158143) (xy 172.164118 65.158141)
(xy 171.997696 65.102994) (xy 171.997689 65.102993) (xy 171.894985 65.0925) (xy 171.15 65.0925)
(xy 171.15 66.1) (xy 170.65 66.1) (xy 170.65 65.0925) (xy 169.905014 65.0925) (xy 169.80231 65.102993)
(xy 169.802303 65.102994) (xy 169.635881 65.158141) (xy 169.635876 65.158143) (xy 169.486655 65.250184)
(xy 169.362684 65.374155) (xy 169.270643 65.523376) (xy 169.270641 65.523381) (xy 169.215494 65.689803)
(xy 169.215493 65.68981) (xy 169.205 65.792514) (xy 168.017208 65.792514) (xy 167.984357 65.693378)
(xy 167.984356 65.693375) (xy 167.892315 65.544154) (xy 167.768345 65.420184) (xy 167.619124 65.328143)
(xy 167.619119 65.328141) (xy 167.452697 65.272994) (xy 167.45269 65.272993) (xy 167.349986 65.2625)
(xy 166.9 65.2625) (xy 166.9 66.175) (xy 166.4 66.175) (xy 166.4 65.2625) (xy 165.950028 65.2625)
(xy 165.950012 65.262501) (xy 165.847302 65.272994) (xy 165.68088 65.328141) (xy 165.680875 65.328143)
(xy 165.531654 65.420184) (xy 165.407684 65.544154) (xy 165.315643 65.693375) (xy 165.315641 65.69338)
(xy 165.260494 65.859802) (xy 165.260493 65.859809) (xy 165.25 65.962513) (xy 163.674176 65.962513)
(xy 163.67519 65.949635) (xy 163.67519 65.949633) (xy 163.6755 65.945694) (xy 163.6755 65.514306)
(xy 163.672598 65.477431) (xy 163.663932 65.447602) (xy 163.66413 65.377737) (xy 163.695325 65.32533)
(xy 164.933838 64.086819) (xy 164.995161 64.053334) (xy 165.021519 64.0505) (xy 172.908481 64.0505)
(xy 172.97552 64.070185) (xy 172.996162 64.086819) (xy 174.463181 65.553837) (xy 174.496666 65.61516)
(xy 174.4995 65.641518) (xy 174.4995 71.458481) (xy 174.479815 71.52552) (xy 174.463181 71.546162)
(xy 173.846162 72.163181) (xy 173.784839 72.196666) (xy 173.758481 72.1995) (xy 172.323348 72.1995)
(xy 172.256309 72.179815) (xy 172.217809 72.140597) (xy 172.21239 72.131811) (xy 172.142712 72.018844)
(xy 172.018656 71.894788) (xy 171.89484 71.818418) (xy 171.869336 71.802687) (xy 171.869331 71.802685)
(xy 171.837267 71.79206) (xy 171.702797 71.747501) (xy 171.702795 71.7475) (xy 171.60001 71.737)
(xy 170.199998 71.737) (xy 170.199981 71.737001) (xy 170.097203 71.7475) (xy 170.0972 71.747501)
(xy 163.6755 68.485694) (xy 163.6755 68.054306) (xy 163.672598 68.017431) (xy 163.626744 67.859602)
(xy 163.543081 67.718135) (xy 163.543078 67.718132) (xy 163.538298 67.711969) (xy 163.540635 67.710155)
(xy 163.513798 67.66105) (xy 163.518756 67.591356) (xy 163.539554 67.558998) (xy 163.537903 67.557717)
(xy 163.542686 67.55155) (xy 163.626281 67.410198) (xy 163.6721 67.252486) (xy 163.672295 67.250001)
(xy 163.672295 67.25) (xy 160.927705 67.25) (xy 160.927704 67.250001) (xy 160.927899 67.252488)
(xy 160.9279 67.252494) (xy 160.973923 67.410905) (xy 160.973724 67.480775) (xy 160.935782 67.539445)
(xy 160.872143 67.568288) (xy 160.854847 67.5695) (xy 160.061518 67.5695) (xy 159.994479 67.549815)
(xy 159.973837 67.533181) (xy 159.686819 67.246162) (xy 159.653334 67.184839) (xy 159.6505 67.158481)
(xy 159.6505 66.887486) (xy 165.250001 66.887486) (xy 165.260494 66.990197) (xy 165.315641 67.156619)
(xy 165.315643 67.156624) (xy 165.407684 67.305845) (xy 165.531654 67.429815) (xy 165.680875 67.521856)
(xy 165.68088 67.521858) (xy 165.847302 67.577005) (xy 165.847309 67.577006) (xy 165.950019 67.587499)
(xy 166.399999 67.587499) (xy 166.9 67.587499) (xy 167.349972 67.587499) (xy 167.349986 67.587498)
(xy 167.452697 67.577005) (xy 167.619119 67.521858) (xy 167.619124 67.521856) (xy 167.768345 67.429815)
(xy 167.892315 67.305845) (xy 167.984356 67.156624) (xy 167.984358 67.156619) (xy 168.039505 66.990197)
(xy 168.039506 66.99019) (xy 168.047956 66.907485) (xy 169.205 66.907485) (xy 169.215493 67.010189)
(xy 169.215494 67.010196) (xy 169.270641 67.176618) (xy 169.270643 67.176623) (xy 169.362684 67.325844)
(xy 169.486655 67.449815) (xy 169.635876 67.541856) (xy 169.635881 67.541858) (xy 169.802303 67.597005)
(xy 169.80231 67.597006) (xy 169.905014 67.607499) (xy 169.905027 67.6075) (xy 170.65 67.6075) (xy 171.15 67.6075)
(xy 171.894973 67.6075) (xy 171.894985 67.607499) (xy 171.997689 67.597006) (xy 171.997696 67.597005)
(xy 172.164118 67.541858) (xy 172.164123 67.541856) (xy 172.313344 67.449815) (xy 172.437315 67.325844)
(xy 172.529356 67.176623) (xy 172.529358 67.176618) (xy 172.584505 67.010196) (xy 172.584506 67.010189)
(xy 172.594999 66.907485) (xy 172.595 66.907472) (xy 172.595 66.6) (xy 171.15 66.6) (xy 171.15 67.6075)
(xy 170.65 67.6075) (xy 170.65 66.6) (xy 169.205 66.6) (xy 169.205 66.907485) (xy 168.047956 66.907485)
(xy 168.049999 66.887486) (xy 168.05 66.887473) (xy 168.05 66.675) (xy 166.9 66.675) (xy 166.9 67.587499)
(xy 166.399999 67.587499) (xy 166.4 67.587498) (xy 166.4 66.675) (xy 165.250001 66.675) (xy 165.250001 66.887486)
(xy 159.6505 66.887486) (xy 159.6505 65.514298) (xy 160.9245 65.514298) (xy 160.9245 65.945701)
(xy 160.927401 65.982567) (xy 160.927402 65.982573) (xy 160.973254 66.140393) (xy 160.973255 66.140396)
(xy 160.973256 66.140398) (xy 160.99377 66.175086) (xy 161.056917 66.281862) (xy 161.061702 66.288031)
(xy 161.059369 66.28984) (xy 161.08621 66.338995) (xy 161.081226 66.408687) (xy 161.06047 66.441021)
(xy 161.062097 66.442283) (xy 161.057313 66.448449) (xy 160.973718 66.589801) (xy 160.927899 66.747513)
(xy 160.927704 66.749998) (xy 160.927705 66.75) (xy 163.672295 66.75) (xy 163.672295 66.749998)
(xy 163.6721 66.747511) (xy 163.672099 66.747505) (xy 163.646165 66.65824) (xy 163.646162 66.658232)
(xy 163.626281 66.589801) (xy 163.542685 66.448447) (xy 163.5379 66.442278) (xy 163.540366 66.440364)
(xy 163.513802 66.391776) (xy 163.518749 66.322082) (xy 163.539856 66.289232) (xy 163.538301 66.288026)
(xy 163.543077 66.281868) (xy 163.543081 66.281865) (xy 163.626744 66.140398) (xy 163.667092 66.00152)
(xy 163.672597 65.982573) (xy 163.672598 65.982567) (xy 163.674176 65.962513) (xy 165.25 65.962513)
(xy 165.25 66.175) (xy 166.4 66.175) (xy 166.9 66.175) (xy 168.049999 66.175) (xy 168.049999 65.962528)
(xy 168.049998 65.962513) (xy 168.039505 65.859801) (xy 168.029094 65.82838) (xy 168.02909 65.82837)
(xy 168.017208 65.792514) (xy 169.205 65.792514) (xy 169.205 66.1) (xy 170.65 66.1) (xy 171.15 66.1)
(xy 172.595 66.1) (xy 172.595 65.792527) (xy 172.594999 65.792514) (xy 172.584506 65.68981) (xy 172.584505 65.689803)
(xy 172.529358 65.523381) (xy 172.529356 65.523376) (xy 172.437315 65.374155) (xy 172.313344 65.250184)
(xy 172.164123 65.158143) (xy 172.164118 65.158141) (xy 171.997696 65.102994) (xy 171.997689 65.102993)
(xy 171.894985 65.0925) (xy 171.15 65.0925) (xy 171.15 66.1) (xy 170.65 66.1) (xy 170.65 65.0925)
(xy 169.905014 65.0925) (xy 169.80231 65.102993) (xy 169.802303 65.102994) (xy 169.635881 65.158141)
(xy 169.635876 65.158143) (xy 169.486655 65.250184) (xy 169.362684 65.374155) (xy 169.270643 65.523376)
(xy 169.270641 65.523381) (xy 169.215494 65.689803) (xy 169.215493 65.68981) (xy 169.205 65.792514)
(xy 168.017208 65.792514) (xy 167.984357 65.693378) (xy 167.984356 65.693375) (xy 167.892315 65.544154)
(xy 167.768345 65.420184) (xy 167.619124 65.328143) (xy 167.619119 65.328141) (xy 167.452697 65.272994)
(xy 167.45269 65.272993) (xy 167.349986 65.2625) (xy 166.9 65.2625) (xy 166.9 66.175) (xy 166.4 66.175)
(xy 166.4 65.2625) (xy 165.950028 65.2625) (xy 165.950012 65.262501) (xy 165.847302 65.272994) (xy 165.68088 65.328141)
(xy 165.680875 65.328143) (xy 165.531654 65.420184) (xy 165.407684 65.544154) (xy 165.315643 65.693375)
(xy 165.315641 65.69338) (xy 165.260494 65.859802) (xy 165.260493 65.859809) (xy 165.25 65.962513)
(xy 163.674176 65.962513) (xy 163.67519 65.949635) (xy 163.67519 65.949633) (xy 163.6755 65.945694)
(xy 163.6755 65.514306) (xy 163.672598 65.477431) (xy 163.663932 65.447602) (xy 163.66413 65.377737)
(xy 163.695325 65.32533) (xy 164.933838 64.086819) (xy 164.995161 64.053334) (xy 165.021519 64.0505)
(xy 172.908481 64.0505) (xy 172.97552 64.070185) (xy 172.996162 64.086819) (xy 174.463181 65.553837)
(xy 174.496666 65.61516) (xy 174.4995 65.641518) (xy 174.4995 71.458481) (xy 174.479815 71.52552)
(xy 174.463181 71.546162) (xy 173.846162 72.163181) (xy 173.784839 72.196666) (xy 173.758481 72.1995)
(xy 172.323348 72.1995) (xy 172.256309 72.179815) (xy 172.217809 72.140597) (xy 172.21239 72.131811)
(xy 172.142712 72.018844) (xy 172.018656 71.894788) (xy 171.89484 71.818418) (xy 171.869336 71.802687)
(xy 171.869331 71.802685) (xy 171.837267 71.79206) (xy 171.702797 71.747501) (xy 171.702795 71.7475)
(xy 171.60001 71.737) (xy 170.199998 71.737) (xy 170.199981 71.737001) (xy 170.097203 71.7475) (xy 170.0972 71.747501)
(xy 169.930668 71.802685) (xy 169.930663 71.802687) (xy 169.781342 71.894789) (xy 169.657289 72.018842)
(xy 169.649579 72.031342) (xy 169.587613 72.131807) (xy 169.582191 72.140597) (xy 169.530243 72.187321)
(xy 169.476652 72.1995) (xy 168.040638 72.1995) (xy 167.973599 72.179815) (xy 167.935099 72.140597)

View File

@@ -1,5 +1,5 @@
TODO: Add table of content
# KiKit Fixture Processor
# KiKit Processor
Processing script for KiKit panelizes PCBs and draws a fixture sketch and positions the whole panel for easy CNC and MSLA processing.
The script:

View File

@@ -6,25 +6,29 @@
#
# Options:
# --layers LAYER,LAYER,... KiCad layer names to export (default: F.Cu)
# --invert LAYER,LAYER,... Layers to invert (comma-separated, e.g. F.Cu,B.Mask)
# --mirror LAYER,LAYER,... Layers to mirror (comma-separated, e.g. F.Cu,F.Mask)
# --invert LAYER,LAYER,... Layers to invert (comma-separated)
# --mirror LAYER,LAYER,... Layers to mirror (comma-separated)
# --exposure SECONDS Exposure time in seconds (default: 60)
# --dummy FILE Dummy .pm4n template (default: Dummy.pm4n beside this script)
# --out DIR Output directory (default: ./output)
# --dpmm N Render resolution in dots/mm (default: native 58.824)
# --pos X,Y Board position on LCD in mm (default: centred)
# --verbose Print detailed progress
# -h, --help Show this help
#
# Example:
# ./export_for_msla.sh --invert F.Cu,B.Mask --mirror F.Cu,F.Mask panel/Flow_Controller_Panel.kicad_pcb
# Normal output: one output filepath per layer.
# Verbose output: full progress from KiCad and the converter.
#
# Layer name → Gerber filename mapping (KiCad default):
# F.Cu → <board>-F_Cu.gbr
# B.Cu → <board>-B_Cu.gbr
# F.Mask → <board>-F_Mask.gbr
# B.Mask → <board>-B_Mask.gbr
# F.SilkS → <board>-F_Silkscreen.gbr
# (etc.)
# Example:
# ./export_for_msla.sh --invert F.Cu,B.Mask --mirror F.Cu,F.Mask panel/board.kicad_pcb
#
# KiCad layer name → Gerber filename stem:
# F.Cu → F_Cu B.Cu → B_Cu
# F.Mask → F_Mask B.Mask → B_Mask
# F.SilkS → F_Silkscreen B.SilkS → B_Silkscreen
# F.Paste → F_Paste B.Paste → B_Paste
# Edge.Cuts → Edge_Cuts
# Front → Front Back → Back
set -euo pipefail
@@ -41,21 +45,28 @@ DUMMY="$SCRIPT_DIR/Dummy.pm4n"
OUT_DIR="./output"
DPMM=""
POS=""
VERBOSE=0
# ---- helpers ----
usage() {
sed -n '/^# Usage/,/^[^#]/{ /^#/{ s/^# \{0,1\}//; p } }' "$0"
grep '^#' "$0" | sed 's/^# \{0,1\}//'
exit 0
}
contains() { # contains <list> <item> — comma-separated list membership
log() { [[ $VERBOSE -eq 1 ]] && echo "$@" || true; }
contains() {
local list="$1" item="$2"
echo "$list" | tr ',' '\n' | grep -qx "$item"
}
layer_to_filename() { # KiCad layer name → Gerber filename stem
local layer="$1"
echo "$layer" | sed 's/\./_/g'
layer_to_filename() {
case "$1" in
F.SilkS) echo "F_Silkscreen" ;;
B.SilkS) echo "B_Silkscreen" ;;
Edge.Cuts) echo "Edge_Cuts" ;;
*) echo "${1//./_}" ;;
esac
}
# ---- parse arguments ----
@@ -70,54 +81,40 @@ while [[ $# -gt 0 ]]; do
--out) OUT_DIR="$2"; shift 2 ;;
--dpmm) DPMM="$2"; shift 2 ;;
--pos) POS="$2"; shift 2 ;;
--verbose) VERBOSE=1; shift ;;
-h|--help) usage ;;
-*) echo "Unknown option: $1"; exit 1 ;;
-*) echo "ERROR: unknown option: $1" >&2; exit 1 ;;
*) PCB_FILE="$1"; shift ;;
esac
done
if [[ -z "$PCB_FILE" ]]; then
echo "ERROR: no .kicad_pcb file specified"
echo "Usage: $0 [OPTIONS] <board.kicad_pcb>"
exit 1
fi
[[ -z "$PCB_FILE" ]] && { echo "ERROR: no .kicad_pcb file specified" >&2; exit 1; }
[[ ! -f "$PCB_FILE" ]] && { echo "ERROR: file not found: $PCB_FILE" >&2; exit 1; }
[[ ! -f "$DUMMY" ]] && { echo "ERROR: Dummy.pm4n not found: $DUMMY" >&2; exit 1; }
if [[ ! -f "$PCB_FILE" ]]; then
echo "ERROR: file not found: $PCB_FILE"
exit 1
fi
if [[ ! -f "$DUMMY" ]]; then
echo "ERROR: dummy .pm4n not found: $DUMMY"
echo "Place Dummy.pm4n next to export.sh, or pass --dummy <path>"
exit 1
fi
# ---- derive names ----
BOARD_NAME="$(basename "$PCB_FILE" .kicad_pcb)"
GERBERS_DIR="$OUT_DIR/gerbers"
PM4N_DIR="$OUT_DIR/pm4n"
mkdir -p "$GERBERS_DIR" "$PM4N_DIR"
# ---- Step 1: export Gerbers via kicad-cli ----
echo "=== Exporting Gerbers from KiCad ==="
echo " Board: $PCB_FILE"
echo " Layers: $LAYERS"
echo " Output: $GERBERS_DIR"
echo ""
# ---- Step 1: export Gerbers ----
log "=== Exporting Gerbers ==="
log " Board: $PCB_FILE"
log " Layers: $LAYERS"
kicad-cli pcb export gerbers \
--output "$GERBERS_DIR" \
--layers "$LAYERS" \
--no-protel-ext \
--subtract-soldermask \
"$PCB_FILE"
--no-netlist \
"$PCB_FILE" \
2>/dev/null
echo ""
log ""
# ---- Step 2: convert each layer to .pm4n ----
echo "=== Converting Gerbers to .pm4n ==="
# ---- Step 2: convert to pm4n ----
log "=== Converting to .pm4n ==="
IFS=',' read -ra LAYER_LIST <<< "$LAYERS"
for LAYER in "${LAYER_LIST[@]}"; do
@@ -125,23 +122,20 @@ for LAYER in "${LAYER_LIST[@]}"; do
GBR_FILE="$GERBERS_DIR/${BOARD_NAME}-${LAYER_STEM}.gbr"
if [[ ! -f "$GBR_FILE" ]]; then
echo " WARNING: expected Gerber not found: $GBR_FILE — skipping"
echo "WARNING: Gerber not found for layer $LAYER (expected: $GBR_FILE)" >&2
continue
fi
OUT_PM4N="$PM4N_DIR/${BOARD_NAME}-${LAYER_STEM}.pm4n"
# Build flags
FLAGS=()
if contains "$INVERT_LAYERS" "$LAYER"; then FLAGS+=(--invert); fi
if contains "$MIRROR_LAYERS" "$LAYER"; then FLAGS+=(--mirror); fi
contains "$INVERT_LAYERS" "$LAYER" && FLAGS+=(--invert)
contains "$MIRROR_LAYERS" "$LAYER" && FLAGS+=(--mirror)
[[ -n "$DPMM" ]] && FLAGS+=(--dpmm "$DPMM")
[[ -n "$POS" ]] && FLAGS+=(--pos "$POS")
[[ $VERBOSE -eq 1 ]] && FLAGS+=(--verbose)
echo " Layer: $LAYER"
echo " Gerber: $GBR_FILE"
echo " pm4n: $OUT_PM4N"
echo " Flags: ${FLAGS[*]:-<none>} exposure=${EXPOSURE}s"
log " $LAYER$OUT_PM4N [${FLAGS[*]:-} exposure=${EXPOSURE}s]"
"$PYTHON" "$CONVERTER" \
"$DUMMY" \
@@ -149,8 +143,6 @@ for LAYER in "${LAYER_LIST[@]}"; do
--output "$OUT_PM4N" \
--exposure "$EXPOSURE" \
"${FLAGS[@]}"
echo ""
done
echo "=== Done ==="
echo "pm4n files in: $PM4N_DIR"
log "=== Done ==="

View File

@@ -9,9 +9,10 @@ Options:
-o OUTPUT Output file path [default: <board>.pm4n]
--invert Invert the image (for positive-working resist like Bungard standard)
--mirror Mirror X axis (for copper-side-down placement on FEP)
--exposure SEC Layer exposure time in seconds [default: 60]
--dpmm N Render resolution in dots/mm [default: 58.824, native 17µm/px]
--pos X,Y Place board at X,Y mm from top-left (default: centred on LCD)
--exposure SEC Exposure time in seconds [default: 60]
--dpmm N Render resolution in dots/mm [default: 58.824, native 17µm/px]
--pos X,Y Board position mm from top-left (default: centred)
--verbose Print detailed progress
Photon Mono 4 specs: 9024 × 5120 px | 153.408 × 87.040 mm | 17.001 µm/px
"""
@@ -83,21 +84,19 @@ NATIVE_DPMM = LCD_W_PX / LCD_W_MM # 58.824 dpmm (1 px ≈ 17.001 µm)
# +0x4C u32 unknown
# then N RLE image blocks follow (at offsets stored in LAYE entries)
# ---------------------------------------------------------------------------
LAYE_TAG = b'LAYE'
MODE_TAG = b'Mode'
ENTRY_STRIDE = 0x20 # 32 bytes per layer entry in LAYE
LAYE_HDR_SIZE = 0x1C # bytes before first entry
LAYE_TAG = b'LAYE'
MODE_TAG = b'Mode'
ENTRY_STRIDE = 0x20 # 32 bytes per layer entry
LAYE_HDR_SIZE = 0x1C # bytes before first entry within LAYE section
def find_tag(data: bytes, tag: bytes, start: int = 0) -> int:
"""Return file offset of first occurrence of tag (exact 4-byte match at 4-byte boundary)."""
i = start
"""Return file offset of first occurrence of tag aligned to 4 bytes."""
i = (start + 3) & ~3
while i + 4 <= len(data):
if data[i:i+4] == tag:
return i
i += 4
# Fall back to unaligned search
pos = data.find(tag, start)
if pos < 0:
raise ValueError(f"Tag {tag!r} not found in file")
@@ -105,7 +104,7 @@ def find_tag(data: bytes, tag: bytes, start: int = 0) -> int:
def count_laye_entries(data: bytes, laye_off: int) -> int:
"""Count layer entries by scanning until we hit the 'EXTR' sub-section or end of section."""
"""Count layer entries by scanning until EXTR tag or implausible float."""
entry_start = laye_off + LAYE_HDR_SIZE
n = 0
while True:
@@ -113,10 +112,8 @@ def count_laye_entries(data: bytes, laye_off: int) -> int:
if pos + 4 > len(data):
break
word = data[pos:pos+4]
# Stop if we hit a known sub-tag marker
if word in (b'EXTR', b'MACH', b'Mode', b'HEAD', b'PREV'):
if word in (b'EXTR', b'MACH', b'Mode', b'HEAD', b'PREV', b'LAYE'):
break
# Stop if the f32 at this position is not a plausible exposure time
v = struct.unpack_from('<f', data, pos)[0]
if not (0.0 < v < 1000.0):
break
@@ -124,14 +121,6 @@ def count_laye_entries(data: bytes, laye_off: int) -> int:
return n
def pack_f32(v: float) -> bytes:
return struct.pack('<f', v)
def pack_u32(v: int) -> bytes:
return struct.pack('<I', v)
def unpack_u32(data: bytes, off: int) -> int:
return struct.unpack_from('<I', data, off)[0]
@@ -139,7 +128,7 @@ def unpack_u32(data: bytes, off: int) -> int:
# ---------------------------------------------------------------------------
# Photon Workshop RLE (BW — 2 bytes per run)
# Byte0 [7:4] colour nibble: 0x0=black, 0xF=white
# Byte0 [3:0] + Byte1: run length - 1 (12-bit, max run=4096)
# Byte0 [3:0] + Byte1: run length 1 (12-bit, max run=4096)
# ---------------------------------------------------------------------------
MAX_RUN = 4096
@@ -166,7 +155,8 @@ def encode_rle(pixels: bytes) -> bytes:
def render_gerber(gbr_path: Path, dpmm: float,
invert: bool, mirror: bool,
pos_mm: tuple | None) -> Image.Image:
pos_mm: tuple | None,
verbose: bool = False) -> Image.Image:
try:
from pygerber.gerberx3.api.v2 import (
GerberFile, ColorScheme, PixelFormatEnum, ImageFormatEnum
@@ -206,88 +196,66 @@ def render_gerber(gbr_path: Path, dpmm: float,
if invert:
canvas = ImageOps.invert(canvas)
# Hard-binarise to strict 0/255
canvas = canvas.point(lambda v: 255 if v >= 128 else 0)
if verbose:
print(f" Gerber rendered: {layer_img.size[0]}×{layer_img.size[1]} px"
f" placed at ({px},{py}) invert={invert} mirror={mirror}")
return canvas
# ---------------------------------------------------------------------------
# pm4n surgery — rewrite with exact format knowledge
# pm4n surgery
# ---------------------------------------------------------------------------
def patch_pm4n(dummy_path: Path, image: Image.Image,
exposure_sec: float, output_path: Path):
exposure_sec: float, output_path: Path,
verbose: bool = False):
def log(*a):
if verbose:
print(*a)
raw = bytearray(dummy_path.read_bytes())
# --- encode new RLE ---
new_rle = encode_rle(image.convert('L').tobytes())
new_rle = encode_rle(image.convert('L').tobytes())
new_rle_size = len(new_rle)
# --- locate LAYE section ---
laye_off = find_tag(raw, LAYE_TAG)
n_entries = count_laye_entries(raw, laye_off)
print(f" LAYE at 0x{laye_off:06X}, {n_entries} layer entries")
laye_off = find_tag(raw, LAYE_TAG)
n_entries = count_laye_entries(raw, laye_off)
log(f" LAYE at 0x{laye_off:06X}, {n_entries} layer entries")
# Read composite image offset and original block size
composite_off = unpack_u32(raw, laye_off + 0x14)
composite_off = unpack_u32(raw, laye_off + 0x14)
old_block_size = unpack_u32(raw, laye_off + 0x18)
print(f" Image blocks: first=0x{composite_off:06X}, old_size={old_block_size}, new_size={new_rle_size}")
log(f" Image blocks: first=0x{composite_off:06X}, "
f"old_size={old_block_size}, new_size={new_rle_size}")
# --- Read all existing image offsets from LAYE entries ---
# Block 0 is the composite (at composite_off), blocks 1..N from entries
old_offsets = [composite_off]
# Patch exposure in all entries
for i in range(n_entries):
entry_base = laye_off + LAYE_HDR_SIZE + i * ENTRY_STRIDE
old_offsets.append(unpack_u32(raw, entry_base + 0x18))
base = laye_off + LAYE_HDR_SIZE + i * ENTRY_STRIDE
struct.pack_into('<f', raw, base + 0x04, exposure_sec)
log(f" Exposure patched to {exposure_sec}s in {n_entries} entries")
# All blocks should be contiguous and equal-sized; verify
expected = composite_off
for i, off in enumerate(old_offsets):
if off != expected:
print(f" WARNING: block {i} offset 0x{off:06X} != expected 0x{expected:06X}")
expected = off + old_block_size
# --- Patch exposure time in all LAYE entries ---
for i in range(n_entries):
entry_base = laye_off + LAYE_HDR_SIZE + i * ENTRY_STRIDE
struct.pack_into('<f', raw, entry_base + 0x04, exposure_sec)
print(f" Patched exposure to {exposure_sec}s in {n_entries} entries")
# --- Build new image data section ---
# All N+1 blocks (composite + N layers) get the SAME new RLE
# (single-layer exposure: every layer shows the same image)
n_blocks = n_entries + 1
new_image_section = new_rle * n_blocks
# --- Reconstruct file ---
# Everything before the first image block stays unchanged
prefix = bytes(raw[:composite_off])
# --- Update LAYE: block size field ---
# Update block size in LAYE header and Mode header
struct.pack_into('<I', raw, laye_off + 0x18, new_rle_size)
# --- Update Mode section: first_image_size field ---
# Mode sub-header: tag 'Mode' + u32(108) + ... + 'SUBIMGS' + ...
# first_image_size is at Mode_off + 0x48
mode_off = find_tag(raw, MODE_TAG)
struct.pack_into('<I', raw, mode_off + 0x48, new_rle_size)
print(f" Mode at 0x{mode_off:06X}, patched first_image_size")
log(f" Mode at 0x{mode_off:06X}")
# --- Update LAYE entries: image offsets and sizes ---
new_composite_off = composite_off # composite block stays at same position
# Update image offsets and sizes in all entries
for i in range(n_entries):
entry_base = laye_off + LAYE_HDR_SIZE + i * ENTRY_STRIDE
new_layer_off = composite_off + (i + 1) * new_rle_size
struct.pack_into('<I', raw, entry_base + 0x18, new_layer_off)
struct.pack_into('<I', raw, entry_base + 0x1C, new_rle_size)
base = laye_off + LAYE_HDR_SIZE + i * ENTRY_STRIDE
struct.pack_into('<I', raw, base + 0x18, composite_off + (i + 1) * new_rle_size)
struct.pack_into('<I', raw, base + 0x1C, new_rle_size)
# --- Splice new image data ---
old_images_end = composite_off + n_blocks * old_block_size
raw[composite_off:old_images_end] = new_image_section
# Splice new image data (composite block + one block per layer, all identical)
n_blocks = n_entries + 1
old_end = composite_off + n_blocks * old_block_size
raw[composite_off:old_end] = new_rle * n_blocks
output_path.write_bytes(raw)
print(f" Written: {output_path} ({len(raw):,} bytes)")
log(f" Written: {output_path} ({len(raw):,} bytes)")
# ---------------------------------------------------------------------------
@@ -298,14 +266,15 @@ def parse_args():
p = argparse.ArgumentParser(
description='Convert Gerber → Anycubic Photon Mono 4 .pm4n PCB exposure file',
)
p.add_argument('dummy', help='Dummy .pm4n template (from Photon Workshop)')
p.add_argument('dummy', help='Dummy .pm4n template')
p.add_argument('gerber', help='Input Gerber file')
p.add_argument('-o', '--output', default=None)
p.add_argument('--invert', action='store_true', help='Invert image (positive-working resist)')
p.add_argument('--mirror', action='store_true', help='Mirror X (copper-side-down placement)')
p.add_argument('--exposure', type=float, default=60.0, help='Exposure seconds (default: 60)')
p.add_argument('--invert', action='store_true')
p.add_argument('--mirror', action='store_true')
p.add_argument('--exposure', type=float, default=60.0)
p.add_argument('--dpmm', type=float, default=NATIVE_DPMM)
p.add_argument('--pos', default=None, help='Board X,Y mm from top-left')
p.add_argument('--pos', default=None)
p.add_argument('--verbose', action='store_true')
return p.parse_args()
@@ -313,6 +282,7 @@ def main():
args = parse_args()
dummy = Path(args.dummy)
gbr = Path(args.gerber)
v = args.verbose
for p, label in [(dummy, 'dummy'), (gbr, 'gerber')]:
if not p.exists():
@@ -327,25 +297,23 @@ def main():
except Exception:
sys.exit("ERROR: --pos must be X,Y e.g. --pos 10.5,8.0")
print(f"Gerber: {gbr}")
print(f"Dummy: {dummy}")
print(f"Output: {out}")
print(f"Invert: {args.invert} Mirror: {args.mirror} Exposure: {args.exposure}s dpmm: {args.dpmm:.3f}")
print()
if v:
print(f"Gerber: {gbr}")
print(f"Dummy: {dummy}")
print(f"Output: {out}")
print(f"Invert: {args.invert} Mirror: {args.mirror}"
f" Exposure: {args.exposure}s dpmm: {args.dpmm:.3f}")
print("Rendering Gerber...")
img = render_gerber(gbr, dpmm=args.dpmm, invert=args.invert,
mirror=args.mirror, pos_mm=pos_mm)
print(f"Canvas: {img.size[0]}×{img.size[1]} px")
mirror=args.mirror, pos_mm=pos_mm, verbose=v)
preview = out.with_suffix('.preview.png')
img.resize((img.size[0] // 4, img.size[1] // 4), Image.NEAREST).save(preview)
print(f"Preview: {preview}")
print()
print("Patching .pm4n...")
patch_pm4n(dummy, img, args.exposure, out)
print("Done.")
patch_pm4n(dummy, img, args.exposure, out, verbose=v)
# Always print the output path (quiet mode only output)
print(out)
if __name__ == '__main__':