@arcgis/core 5.2.0-next.136 → 5.2.0-next.138

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/analysis/LineOfSightAnalysisObserver.d.ts +12 -0
  2. package/analysis/LineOfSightAnalysisObserver.js +1 -1
  3. package/analysis/LineOfSightAnalysisTarget.d.ts +12 -0
  4. package/analysis/LineOfSightAnalysisTarget.js +1 -1
  5. package/arcade/featureset/sources/FeatureLayerParquet.js +1 -1
  6. package/arcgisGlobal.d.ts +4 -0
  7. package/assets/components/assets/icon/blockHeightMedium16.json +1 -0
  8. package/assets/components/assets/icon/blockHeightMedium24.json +1 -0
  9. package/assets/components/assets/icon/blockHeightMedium32.json +1 -0
  10. package/assets/components/assets/icon/blockHeightShort16.json +1 -0
  11. package/assets/components/assets/icon/blockHeightShort24.json +1 -0
  12. package/assets/components/assets/icon/blockHeightShort32.json +1 -0
  13. package/assets/components/assets/icon/blockHeightTall16.json +1 -0
  14. package/assets/components/assets/icon/blockHeightTall24.json +1 -0
  15. package/assets/components/assets/icon/blockHeightTall32.json +1 -0
  16. package/assets/components/assets/icon/cursorCircle16.json +1 -0
  17. package/assets/components/assets/icon/cursorCircle24.json +1 -0
  18. package/assets/components/assets/icon/cursorCircle32.json +1 -0
  19. package/assets/components/assets/icon/dictionary16.json +1 -0
  20. package/assets/components/assets/icon/dictionary24.json +1 -0
  21. package/assets/components/assets/icon/dictionary32.json +1 -0
  22. package/assets/components/assets/icon/jobDependency16.json +1 -0
  23. package/assets/components/assets/icon/jobDependency24.json +1 -0
  24. package/assets/components/assets/icon/jobDependency32.json +1 -0
  25. package/assets/components/assets/icon/referenceChip16.json +1 -0
  26. package/assets/components/assets/icon/referenceChip24.json +1 -0
  27. package/assets/components/assets/icon/referenceChip32.json +1 -0
  28. package/assets/esri/core/workers/RemoteClient.js +1 -1
  29. package/assets/esri/core/workers/chunks/{4e6f95d8c624d513849a.js → 05963f57cbe5a5249496.js} +1 -1
  30. package/assets/esri/core/workers/chunks/{0b8681ca4a83e97f1f71.js → 067de1910190da228291.js} +1 -1
  31. package/assets/esri/core/workers/chunks/{3c0fd1c6cda44e9f40ab.js → 070684943698fa43c2b4.js} +1 -1
  32. package/assets/esri/core/workers/chunks/{bc1cb4b9a02e6c78deb7.js → 076e8d2e08ff2a013736.js} +1 -1
  33. package/assets/esri/core/workers/chunks/{c10e040368065411506a.js → 10445313d0d57b34511b.js} +1 -1
  34. package/assets/esri/core/workers/chunks/{d537c59b46cdaaf66034.js → 1188d0a136fffc009643.js} +1 -1
  35. package/assets/esri/core/workers/chunks/{20af3f085f60c32c6c53.js → 178083d8ed7707b45ca2.js} +1 -1
  36. package/assets/esri/core/workers/chunks/{f5efe3e800c6e23efcf3.js → 1819c45655c836b9a8d7.js} +1 -1
  37. package/assets/esri/core/workers/chunks/1b946714ca4a1a7359d4.js +2 -0
  38. package/assets/esri/core/workers/chunks/{d8d8b38ac8a91d9e45fc.js → 1cc744ab5eee5ee3bed8.js} +1 -1
  39. package/assets/esri/core/workers/chunks/{05e39b4de7f62c5b22cc.js → 20f75cc777af13fa249b.js} +1 -1
  40. package/assets/esri/core/workers/chunks/2a1ec30f9ad305763f81.js +2 -0
  41. package/assets/esri/core/workers/chunks/34570e6bbf559f18c1a5.js +1 -0
  42. package/assets/esri/core/workers/chunks/{60f6d5da9480dd36e877.js → 3dddae78286d05eb10fc.js} +1 -1
  43. package/assets/esri/core/workers/chunks/{9efd30bbd02ec0d1031b.js → 3ec3589f6e74d7cb87cf.js} +1 -1
  44. package/assets/esri/core/workers/chunks/{0bec054fca104f3bf141.js → 3f776d9fd2ab68b21fca.js} +1 -1
  45. package/assets/esri/core/workers/chunks/402a82c77420254831bc.js +1 -0
  46. package/assets/esri/core/workers/chunks/{e2ebf0ea3af2e6907987.js → 406f24ec13eb30d43405.js} +1 -1
  47. package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +1 -0
  48. package/assets/esri/core/workers/chunks/{ddedc414bb478b376221.js → 46b2d4addfc73f9183a4.js} +1 -1
  49. package/assets/esri/core/workers/chunks/498d6dfd3bb0d3490548.js +1 -0
  50. package/assets/esri/core/workers/chunks/{36ef86701883a20dd6f6.js → 4a640548032355e57acd.js} +1 -1
  51. package/assets/esri/core/workers/chunks/5566f14afb63065e438f.js +1 -0
  52. package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js → 590e6c70206122e4cc3c.js} +2 -2
  53. package/assets/esri/core/workers/chunks/{54860dd53a46cf4c47f3.js → 59295b99bdff4045a0e7.js} +1 -1
  54. package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +1 -0
  55. package/assets/esri/core/workers/chunks/{5da86409d70098fc6a10.js → 5b3cfe95314a75a735c1.js} +1 -1
  56. package/assets/esri/core/workers/chunks/{a54678bfa0f1807b61cd.js → 5c855af73ee3c3e764fb.js} +1 -1
  57. package/assets/esri/core/workers/chunks/{06da3409992bb1fa85b0.js → 5e90c1b49f2b7e21d05a.js} +39 -31
  58. package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +1 -0
  59. package/assets/esri/core/workers/chunks/{30f808cac8a34f95ea6e.js → 6079d27f4ab319fb8f0c.js} +1 -1
  60. package/assets/esri/core/workers/chunks/66c2a28a851130b87c04.js +1 -0
  61. package/assets/esri/core/workers/chunks/{dac90b3631f7f7158f68.js → 67f15538c51838201fc7.js} +1 -1
  62. package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js → 68d8ae42ab71d01a70a5.js} +2 -2
  63. package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +1 -0
  64. package/assets/esri/core/workers/chunks/{864e7030c4ddbfcf0114.js → 6ccf9535013fe672c93b.js} +1 -1
  65. package/assets/esri/core/workers/chunks/{ba7f0cf7e495d3ec2d55.js → 6e62581d933e7298d1f6.js} +1 -1
  66. package/assets/esri/core/workers/chunks/{83b5dd4029e00abd80bf.js → 700b1d5bc67b7e1b3ff3.js} +1 -1
  67. package/assets/esri/core/workers/chunks/{f9fea72cc222a30ef2f9.js → 72399062767abdfb0bee.js} +1 -1
  68. package/assets/esri/core/workers/chunks/{2a7fbfd77002a24bf737.js → 747461bb6a1bc2f0a64d.js} +1 -1
  69. package/assets/esri/core/workers/chunks/{c333f6ed42985bb2b11f.js → 7851aef196eea5d6c94e.js} +1 -1
  70. package/assets/esri/core/workers/chunks/{f0b6bd6fab5320c3082f.js → 7a05b18f655c1167ce0a.js} +1 -1
  71. package/assets/esri/core/workers/chunks/{04296b75d0f81fbd1bb5.js → 864194927d05ebc4cc31.js} +1 -1
  72. package/assets/esri/core/workers/chunks/{3c4a13a9f0b305394a26.js → 876f7633c15f1e31078d.js} +1 -1
  73. package/assets/esri/core/workers/chunks/{62298dba3f6cbdc3f4ae.js → 879b2f0ff1977bca9376.js} +1 -1
  74. package/assets/esri/core/workers/chunks/{b547b3bce729c9dac90d.js → 898359be6996fd9763b8.js} +1 -1
  75. package/assets/esri/core/workers/chunks/8cb716f110d164030309.js +1 -0
  76. package/assets/esri/core/workers/chunks/8dc1c3042267618fd710.js +2 -0
  77. package/assets/esri/core/workers/chunks/{625f02db93d7fbf175ca.js → 9001e9a1e81bce175ddd.js} +1 -1
  78. package/assets/esri/core/workers/chunks/{9ffa6c8d93d3443834c6.js → 912080c90b5cc2e817cf.js} +1 -1
  79. package/assets/esri/core/workers/chunks/96c50a0dda0f1503ef92.js +2 -0
  80. package/assets/esri/core/workers/chunks/{13e4379441499599c3b5.js → 9cbde13e536676767900.js} +1 -1
  81. package/assets/esri/core/workers/chunks/{408db4f32850b77264ae.js → 9cd3fcb5fca6f9dbbcd8.js} +1 -1
  82. package/assets/esri/core/workers/chunks/a054da6cbd8ee4774a57.js +1 -0
  83. package/assets/esri/core/workers/chunks/a05790444115e4cf1bcc.js +1 -0
  84. package/assets/esri/core/workers/chunks/{d1f2685782b423ef87a6.js → a556dd4e9e6d35e33a2c.js} +1 -1
  85. package/assets/esri/core/workers/chunks/{00d576d355599c88931e.js → bc38def1983089514e4b.js} +1 -1
  86. package/assets/esri/core/workers/chunks/{0725e515f3004bdd5c56.js → ca2adcbcf44454484fd5.js} +1 -1
  87. package/assets/esri/core/workers/chunks/{f3507b9e831ffd7a6bf8.js → cca8bd07bcd1d267a2e8.js} +1 -1
  88. package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +1 -0
  89. package/assets/esri/core/workers/chunks/{1d6b2a64f4e40e5cc13d.js → d201fbf3ceff946d2bd6.js} +1 -1
  90. package/assets/esri/core/workers/chunks/{4439078780d9ba49fd26.js → d51bb11baadc741c46bc.js} +1 -1
  91. package/assets/esri/core/workers/chunks/db1ab9b9c8bf5c7635d3.js +1 -0
  92. package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +1 -0
  93. package/assets/esri/core/workers/chunks/e630f3c56c077cb2bd8e.js +1 -0
  94. package/assets/esri/core/workers/chunks/e81173724e8de8c1e65b.js +1 -0
  95. package/assets/esri/core/workers/chunks/{2025288bed125594ceda.js → f6e62d2d279a328cbed7.js} +1 -1
  96. package/assets/esri/core/workers/chunks/{47c19778fcee7154ca38.js → f8bc474434fd365ab174.js} +1 -1
  97. package/assets/esri/core/workers/chunks/{9a20dc26cb9c7b2087cf.js → f95a1f878c9c1146180e.js} +1 -1
  98. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
  99. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
  100. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
  101. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
  102. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
  103. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
  104. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
  105. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
  106. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
  107. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
  108. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
  109. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
  110. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
  111. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
  112. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
  113. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
  114. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
  115. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
  116. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
  117. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
  118. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
  119. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
  120. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
  121. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
  122. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
  123. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
  124. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
  125. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
  126. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
  127. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
  128. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
  129. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
  130. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
  131. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
  132. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
  133. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
  134. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
  135. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
  136. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
  137. package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
  138. package/assets/esri/widgets/FeatureForm/t9n/messages.ar.json +1 -1
  139. package/assets/esri/widgets/FeatureForm/t9n/messages.bg.json +1 -1
  140. package/assets/esri/widgets/FeatureForm/t9n/messages.bs.json +1 -1
  141. package/assets/esri/widgets/FeatureForm/t9n/messages.ca.json +1 -1
  142. package/assets/esri/widgets/FeatureForm/t9n/messages.cs.json +1 -1
  143. package/assets/esri/widgets/FeatureForm/t9n/messages.da.json +1 -1
  144. package/assets/esri/widgets/FeatureForm/t9n/messages.de.json +1 -1
  145. package/assets/esri/widgets/FeatureForm/t9n/messages.el.json +1 -1
  146. package/assets/esri/widgets/FeatureForm/t9n/messages.es.json +1 -1
  147. package/assets/esri/widgets/FeatureForm/t9n/messages.et.json +1 -1
  148. package/assets/esri/widgets/FeatureForm/t9n/messages.fi.json +1 -1
  149. package/assets/esri/widgets/FeatureForm/t9n/messages.fr.json +1 -1
  150. package/assets/esri/widgets/FeatureForm/t9n/messages.he.json +1 -1
  151. package/assets/esri/widgets/FeatureForm/t9n/messages.hr.json +1 -1
  152. package/assets/esri/widgets/FeatureForm/t9n/messages.hu.json +1 -1
  153. package/assets/esri/widgets/FeatureForm/t9n/messages.id.json +1 -1
  154. package/assets/esri/widgets/FeatureForm/t9n/messages.it.json +1 -1
  155. package/assets/esri/widgets/FeatureForm/t9n/messages.ja.json +1 -1
  156. package/assets/esri/widgets/FeatureForm/t9n/messages.ko.json +1 -1
  157. package/assets/esri/widgets/FeatureForm/t9n/messages.lt.json +1 -1
  158. package/assets/esri/widgets/FeatureForm/t9n/messages.lv.json +1 -1
  159. package/assets/esri/widgets/FeatureForm/t9n/messages.nl.json +1 -1
  160. package/assets/esri/widgets/FeatureForm/t9n/messages.no.json +1 -1
  161. package/assets/esri/widgets/FeatureForm/t9n/messages.pl.json +1 -1
  162. package/assets/esri/widgets/FeatureForm/t9n/messages.pt-BR.json +1 -1
  163. package/assets/esri/widgets/FeatureForm/t9n/messages.pt-PT.json +1 -1
  164. package/assets/esri/widgets/FeatureForm/t9n/messages.ro.json +1 -1
  165. package/assets/esri/widgets/FeatureForm/t9n/messages.ru.json +1 -1
  166. package/assets/esri/widgets/FeatureForm/t9n/messages.sk.json +1 -1
  167. package/assets/esri/widgets/FeatureForm/t9n/messages.sl.json +1 -1
  168. package/assets/esri/widgets/FeatureForm/t9n/messages.sr.json +1 -1
  169. package/assets/esri/widgets/FeatureForm/t9n/messages.sv.json +1 -1
  170. package/assets/esri/widgets/FeatureForm/t9n/messages.th.json +1 -1
  171. package/assets/esri/widgets/FeatureForm/t9n/messages.tr.json +1 -1
  172. package/assets/esri/widgets/FeatureForm/t9n/messages.uk.json +1 -1
  173. package/assets/esri/widgets/FeatureForm/t9n/messages.vi.json +1 -1
  174. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-CN.json +1 -1
  175. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-HK.json +1 -1
  176. package/assets/esri/widgets/FeatureForm/t9n/messages.zh-TW.json +1 -1
  177. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ar.json +1 -1
  178. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bg.json +1 -1
  179. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bs.json +1 -1
  180. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ca.json +1 -1
  181. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.cs.json +1 -1
  182. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.da.json +1 -1
  183. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.de.json +1 -1
  184. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.el.json +1 -1
  185. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.en.json +1 -1
  186. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.es.json +1 -1
  187. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.et.json +1 -1
  188. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fi.json +1 -1
  189. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fr.json +1 -1
  190. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.he.json +1 -1
  191. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hr.json +1 -1
  192. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hu.json +1 -1
  193. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.id.json +1 -1
  194. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.it.json +1 -1
  195. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ja.json +1 -1
  196. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ko.json +1 -1
  197. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lt.json +1 -1
  198. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lv.json +1 -1
  199. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.nl.json +1 -1
  200. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.no.json +1 -1
  201. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pl.json +1 -1
  202. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-BR.json +1 -1
  203. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-PT.json +1 -1
  204. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ro.json +1 -1
  205. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ru.json +1 -1
  206. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sk.json +1 -1
  207. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sl.json +1 -1
  208. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sr.json +1 -1
  209. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sv.json +1 -1
  210. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.th.json +1 -1
  211. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.tr.json +1 -1
  212. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.uk.json +1 -1
  213. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.vi.json +1 -1
  214. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-CN.json +1 -1
  215. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-HK.json +1 -1
  216. package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-TW.json +1 -1
  217. package/chunks/Bufferer-CclWhXVb.js +1 -1
  218. package/chunks/Component.glsl.js +3 -3
  219. package/chunks/DefaultMaterial.glsl.js +2 -2
  220. package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
  221. package/chunks/Envelope.js +1 -1
  222. package/chunks/Envelope2D.js +1 -1
  223. package/chunks/FocusArea.glsl.js +8 -10
  224. package/chunks/GaussianSplat.glsl.js +2 -2
  225. package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
  226. package/chunks/GeodeticUtils.js +1 -1
  227. package/chunks/Geometry.js +1 -1
  228. package/chunks/GeometryCleaner-CIE8Wfmb.js +1 -1
  229. package/chunks/GlobalIllumination.glsl.js +3 -3
  230. package/chunks/LineMarker.glsl.js +35 -42
  231. package/chunks/MultiPathImpl.js +1 -1
  232. package/chunks/OperatorAffineTransform.js +1 -1
  233. package/chunks/OperatorClip.js +1 -1
  234. package/chunks/OperatorDensify.js +1 -1
  235. package/chunks/OperatorDistance.js +1 -1
  236. package/chunks/OperatorGeneralize.js +1 -1
  237. package/chunks/OperatorGeodesicBuffer.js +1 -1
  238. package/chunks/OperatorGeodeticArea.js +1 -1
  239. package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
  240. package/chunks/OperatorGeodeticDistance.js +1 -1
  241. package/chunks/OperatorGeodeticLength.js +1 -1
  242. package/chunks/OperatorGraphicBuffer.js +1 -1
  243. package/chunks/OperatorIntegrate.js +1 -1
  244. package/chunks/OperatorMultiPartToSinglePart.js +1 -1
  245. package/chunks/OperatorProximity.js +1 -1
  246. package/chunks/OperatorProximityGeodesic.js +1 -1
  247. package/chunks/OperatorShapePreservingLength.js +1 -1
  248. package/chunks/OperatorShapePreservingProject.js +1 -1
  249. package/chunks/OperatorSimplifyOGC.js +1 -1
  250. package/chunks/Path.glsl.js +2 -2
  251. package/chunks/Point2D.js +1 -1
  252. package/chunks/RealisticTree.glsl.js +2 -2
  253. package/chunks/RibbonLine.glsl.js +51 -57
  254. package/chunks/SideCalculator2D-DX0718xq.js +1 -1
  255. package/chunks/Terrain.glsl.js +2 -2
  256. package/chunks/Transformation2D.js +1 -1
  257. package/chunks/UnitFactory.js +1 -1
  258. package/config.js +1 -1
  259. package/core/workers/RemoteClient.js +1 -1
  260. package/core/workers/workerFactory.js +1 -1
  261. package/editing/fieldUtils.d.ts +12 -0
  262. package/editing/sharedTemplates/templateDefinitions/TemplateDefinitionBase.js +1 -1
  263. package/geometry/operators/extendOperator.js +1 -1
  264. package/geometry/operators/gx/operatorAlphaShape.js +1 -1
  265. package/geometry/operators/gx/operatorBoundary.js +1 -1
  266. package/geometry/operators/gx/operatorBuffer.js +1 -1
  267. package/geometry/operators/gx/operatorConvexHull.js +1 -1
  268. package/geometry/operators/gx/operatorLabelPoint.js +1 -1
  269. package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
  270. package/geometry/operators/gx/operatorLocateBetween.js +1 -1
  271. package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
  272. package/geometry/operators/gx/operatorOffset.js +1 -1
  273. package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
  274. package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
  275. package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
  276. package/geometry/operators/isNearOperator.js +1 -1
  277. package/geometry/operators/reshapeOperator.js +1 -1
  278. package/geometry/operators/support/jsonConverter.js +1 -1
  279. package/geometry/support/curves/ellipticArc7Utils.js +1 -1
  280. package/geometry/support/ellipseUtils.js +2 -0
  281. package/interfaces.d.ts +15 -18
  282. package/kernel.js +1 -1
  283. package/layers/LinkChartLayer.js +1 -1
  284. package/layers/ParquetLayer.js +1 -1
  285. package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
  286. package/layers/list/LayerItemCollection.d.ts +1 -0
  287. package/layers/list/types.d.ts +5 -1
  288. package/layers/orientedImagery/core/coverageUtils.js +1 -1
  289. package/layers/orientedImagery/queries.js +1 -1
  290. package/layers/support/TimeSeriesCalculation.d.ts +1 -1
  291. package/layers/support/TimeSeriesCalculation.js +1 -1
  292. package/layers/support/dataSeriesUtils.d.ts +10 -0
  293. package/layers/support/timeSeriesUtils.js +17 -6
  294. package/libs/lyr3d/Lyr3DModule.js +1 -1
  295. package/networks/UtilityNetwork.d.ts +15 -0
  296. package/networks/UtilityNetwork.js +1 -1
  297. package/package.json +4 -4
  298. package/popup/FeatureContent.d.ts +14 -1
  299. package/popup/FeatureContent.js +1 -1
  300. package/popup/FeatureContentCollection.d.ts +4 -10
  301. package/popup/FeatureContentCollection.js +1 -1
  302. package/popup/actions.js +1 -1
  303. package/popup/support/featureUtils.js +1 -1
  304. package/renderers/support/RenderingInfo.js +1 -1
  305. package/renderers/support/renderingInfoUtils.js +1 -1
  306. package/renderers/visualVariables/SizeVariable.d.ts +16 -20
  307. package/renderers/visualVariables/support/SizeStop.d.ts +6 -2
  308. package/rest/networks/support/TraceLocation.js +1 -1
  309. package/rest/networks/support/TraceResult.d.ts +7 -0
  310. package/rest/networks/support/TraceResult.js +1 -1
  311. package/smartMapping/renderers/color.js +1 -1
  312. package/smartMapping/renderers/opacity.js +1 -1
  313. package/smartMapping/renderers/size.js +1 -1
  314. package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
  315. package/smartMapping/statistics/histogramForTimeSeries.d.ts +11 -0
  316. package/smartMapping/statistics/histogramForTimeSeries.js +2 -0
  317. package/smartMapping/statistics/summaryStatisticsForTimeSeries.d.ts +11 -0
  318. package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +2 -0
  319. package/smartMapping/statistics/support/timeSeriesUtils.js +24 -0
  320. package/smartMapping/statistics/types.d.ts +50 -0
  321. package/support/tests/serviceMockDependencies.js +1 -1
  322. package/support/tests/setupServiceMocksMesh.js +1 -1
  323. package/symbols/cim/CIMPlacements.js +1 -1
  324. package/symbols/cim/callouts/calloutAnalysisUtils.js +1 -1
  325. package/symbols/cim/callouts/effects/BackgroundCallout.js +1 -1
  326. package/symbols/cim/callouts/effects/BalloonCallout.js +1 -1
  327. package/symbols/cim/callouts/effects/PointSymbolCallout.js +1 -1
  328. package/symbols/cim/callouts/effects/calloutUtils.js +1 -1
  329. package/symbols/cim/cimAnalyzer.js +1 -1
  330. package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
  331. package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
  332. package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
  333. package/views/2d/engine/vectorTiles/decluttering/SymbolFader.js +1 -1
  334. package/views/2d/engine/vectorTiles/decluttering/jobsUtil.js +1 -1
  335. package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
  336. package/views/2d/engine/webgl/definitions.js +1 -1
  337. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
  338. package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
  339. package/views/2d/engine/webgl/shaderGraph/techniques/animated/ComputedAnimatedParams.js +1 -1
  340. package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
  341. package/views/2d/engine/webgl/shaderGraph/techniques/mesh/CalloutMeshWriterPolicy.js +1 -1
  342. package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
  343. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextParams.js +1 -1
  344. package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
  345. package/views/2d/layers/SketchLayerView2D.js +1 -1
  346. package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
  347. package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
  348. package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
  349. package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
  350. package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
  351. package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
  352. package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
  353. package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
  354. package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
  355. package/views/2d/layers/features/layerAdapters/StreamLayerAdapter.js +1 -1
  356. package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
  357. package/views/2d/layers/features/layerAdapters/labelingUtils.js +1 -1
  358. package/views/2d/layers/features/schema/ExceedsLimitCache.js +1 -1
  359. package/views/2d/layers/features/schema/TimeSchema.js +2 -0
  360. package/views/2d/layers/features/schema/processor/LabelMatcherSchema.js +1 -1
  361. package/views/2d/layers/features/schema/processor/MatcherSchema.js +1 -1
  362. package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
  363. package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
  364. package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
  365. package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
  366. package/views/2d/layers/support/vectorTileDebugUtils.js +1 -1
  367. package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
  368. package/views/2d/types.d.ts +2 -1
  369. package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
  370. package/views/3d/analysis/LineOfSight/LineOfSightItemManipulatedObject3D.js +1 -1
  371. package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
  372. package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +24 -0
  373. package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
  374. package/views/3d/analysis/Viewshed/ViewshedObserverManipulatedObject3D.js +1 -1
  375. package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
  376. package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
  377. package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
  378. package/views/3d/camera/constraintUtils.js +1 -1
  379. package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
  380. package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
  381. package/views/3d/interactive/editingTools/tooltipUtils3D.js +1 -1
  382. package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +1 -1
  383. package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
  384. package/views/3d/layers/i3s/I3SOverrides.js +1 -1
  385. package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
  386. package/views/3d/state/controllers/GroundNavigationController.js +1 -1
  387. package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
  388. package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
  389. package/views/3d/state/utils/groundNavigationUtils.js +1 -1
  390. package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
  391. package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
  392. package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +16 -8
  393. package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -1
  394. package/views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js +12 -0
  395. package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +2 -2
  396. package/views/3d/webgl-engine/effects/focusArea/FocusArea.glsl.js +1 -1
  397. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
  398. package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
  399. package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
  400. package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
  401. package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
  402. package/views/SelectionManager.d.ts +3 -3
  403. package/views/draw/support/Reshape.js +1 -1
  404. package/views/interactive/options/bindViewToolOptions.js +1 -1
  405. package/views/interactive/sketch/SketchLabelOptions.d.ts +3 -0
  406. package/views/interactive/sketch/SketchLabelOptions.js +1 -1
  407. package/views/interactive/sketch/SketchTooltipOptions.d.ts +3 -0
  408. package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
  409. package/views/interactive/sketch/SketchValueOptions.d.ts +3 -0
  410. package/views/interactive/sketch/SketchValueOptions.js +1 -1
  411. package/views/interactive/snapping/SnappingOptions.d.ts +3 -0
  412. package/views/interactive/snapping/SnappingOptions.js +1 -1
  413. package/views/interactive/snapping/snappingUtils.js +1 -1
  414. package/views/interactive/tooltip/fields/parsingAndFormattingUtils.js +1 -1
  415. package/views/layers/SketchLayerView.d.ts +34 -0
  416. package/views/layers/SketchLayerView.js +2 -0
  417. package/views/layers/types.d.ts +3 -2
  418. package/views/selection/types.d.ts +15 -4
  419. package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
  420. package/widgets/BasemapGallery.js +1 -1
  421. package/widgets/Bookmarks/BookmarksViewModel.d.ts +4 -0
  422. package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +5 -1
  423. package/widgets/Bookmarks/types.d.ts +2 -0
  424. package/widgets/Editor/EditorViewModel.d.ts +31 -30
  425. package/widgets/Editor/EditorViewModel.js +1 -1
  426. package/widgets/Editor/components/Settings.js +1 -1
  427. package/widgets/Editor/types.d.ts +44 -0
  428. package/widgets/Editor.d.ts +30 -27
  429. package/widgets/Editor.js +1 -1
  430. package/widgets/FeatureTable/FeatureTableViewModel.d.ts +1 -1
  431. package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
  432. package/widgets/FeatureTable/support/FeatureStore.d.ts +1 -1
  433. package/widgets/FeatureTable/support/FeatureStore.js +1 -1
  434. package/widgets/FeatureTable.d.ts +6 -0
  435. package/widgets/FeatureTable.js +1 -1
  436. package/widgets/Histogram/types.d.ts +10 -2
  437. package/widgets/HistogramRangeSlider/types.d.ts +4 -1
  438. package/widgets/LayerList/LayerListViewModel.d.ts +2 -1
  439. package/widgets/Legend/LegendViewModel.d.ts +2 -0
  440. package/widgets/Legend/styles/card/CardView.d.ts +2 -0
  441. package/widgets/Legend/styles/classic/ClassicView.d.ts +4 -1
  442. package/widgets/Legend.d.ts +3 -0
  443. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.d.ts +7 -0
  444. package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
  445. package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
  446. package/widgets/OrientedImageryViewer/support/VideoFeatureCache.js +2 -0
  447. package/widgets/OrientedImageryViewer/types.d.ts +9 -0
  448. package/widgets/OrientedImageryViewer.d.ts +7 -0
  449. package/widgets/OrientedImageryViewer.js +2 -2
  450. package/widgets/PanoramicVideoViewer.js +1 -1
  451. package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
  452. package/widgets/ScaleRangeSlider/types.d.ts +9 -2
  453. package/widgets/Sketch/SketchViewModel.d.ts +32 -1
  454. package/widgets/Sketch/SketchViewModel.js +1 -1
  455. package/widgets/Sketch.d.ts +27 -1
  456. package/widgets/Sketch.js +1 -1
  457. package/widgets/Slider/types.d.ts +58 -13
  458. package/widgets/Slider.d.ts +6 -0
  459. package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.d.ts +2 -0
  460. package/widgets/smartMapping/ClassedColorSlider/ClassedColorSliderViewModel.d.ts +2 -0
  461. package/widgets/smartMapping/ClassedSizeSlider/ClassedSizeSliderViewModel.d.ts +2 -0
  462. package/widgets/smartMapping/ColorSizeSlider/ColorSizeSliderViewModel.d.ts +2 -0
  463. package/widgets/smartMapping/ColorSlider/ColorSliderViewModel.d.ts +2 -0
  464. package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.d.ts +2 -0
  465. package/widgets/smartMapping/OpacitySlider/OpacitySliderViewModel.d.ts +2 -0
  466. package/widgets/smartMapping/SizeSlider/SizeSliderViewModel.d.ts +3 -0
  467. package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.d.ts +2 -0
  468. package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +2 -0
  469. package/widgets/smartMapping/types.d.ts +30 -7
  470. package/widgets/support/FilterBuilder/FilterBuilderViewModel.d.ts +21 -11
  471. package/widgets/support/FilterBuilder/FilterBuilderViewModel.js +1 -1
  472. package/widgets/support/FilterBuilder/types.d.ts +28 -0
  473. package/widgets/support/FilterBuilder.js +1 -1
  474. package/widgets/support/FilterCondition/FilterConditionViewModel.d.ts +24 -0
  475. package/widgets/support/FilterCondition/FilterConditionViewModel.js +1 -1
  476. package/widgets/support/FilterCondition/types.d.ts +16 -1
  477. package/widgets/support/FilterCondition.js +1 -1
  478. package/widgets/support/SnappingControls/snappingLayerListUtils.js +1 -1
  479. package/widgets/support/iconUtils.js +1 -1
  480. package/assets/esri/core/workers/chunks/0606ab6fdfc1dfea3856.js +0 -1
  481. package/assets/esri/core/workers/chunks/078dcd17f46403d44b24.js +0 -1
  482. package/assets/esri/core/workers/chunks/1289204f8ca96032c17a.js +0 -1
  483. package/assets/esri/core/workers/chunks/12b5a645c0987a0efe54.js +0 -2
  484. package/assets/esri/core/workers/chunks/152fe3d6ad7aebbd23d1.js +0 -1
  485. package/assets/esri/core/workers/chunks/17b938ba49fb1e7ab8c4.js +0 -1
  486. package/assets/esri/core/workers/chunks/1dbb3e25e005a8220779.js +0 -2
  487. package/assets/esri/core/workers/chunks/3d6fef25af7e1a51e1bd.js +0 -1
  488. package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +0 -1
  489. package/assets/esri/core/workers/chunks/5f4feca26102088ea565.js +0 -1
  490. package/assets/esri/core/workers/chunks/74211d096cc3296e0968.js +0 -1
  491. package/assets/esri/core/workers/chunks/7926faab76a721a2e1c4.js +0 -1
  492. package/assets/esri/core/workers/chunks/ad28486bc6afaa346de5.js +0 -1
  493. package/assets/esri/core/workers/chunks/ad29c729e90b5866713c.js +0 -1
  494. package/assets/esri/core/workers/chunks/b72a2514aa4cc4ae7d1b.js +0 -1
  495. package/assets/esri/core/workers/chunks/bb51cf52b8ea8283f4f8.js +0 -1
  496. package/assets/esri/core/workers/chunks/be761749f8d77fbd9df5.js +0 -1
  497. package/assets/esri/core/workers/chunks/dbfd25aa0d19aed5890c.js +0 -1
  498. package/assets/esri/core/workers/chunks/de28a86775235bd5d3c4.js +0 -2
  499. package/assets/esri/core/workers/chunks/f6cfc901267a229de7a1.js +0 -2
  500. package/assets/esri/core/workers/chunks/fb147097149a89e671ff.js +0 -1
  501. package/support/revision.js +0 -2
  502. /package/assets/esri/core/workers/chunks/{1dbb3e25e005a8220779.js.LICENSE.txt → 1b946714ca4a1a7359d4.js.LICENSE.txt} +0 -0
  503. /package/assets/esri/core/workers/chunks/{f6cfc901267a229de7a1.js.LICENSE.txt → 2a1ec30f9ad305763f81.js.LICENSE.txt} +0 -0
  504. /package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js.LICENSE.txt → 590e6c70206122e4cc3c.js.LICENSE.txt} +0 -0
  505. /package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js.LICENSE.txt → 68d8ae42ab71d01a70a5.js.LICENSE.txt} +0 -0
  506. /package/assets/esri/core/workers/chunks/{de28a86775235bd5d3c4.js.LICENSE.txt → 8dc1c3042267618fd710.js.LICENSE.txt} +0 -0
  507. /package/assets/esri/core/workers/chunks/{12b5a645c0987a0efe54.js.LICENSE.txt → 96c50a0dda0f1503ef92.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9117],{31139(e,t,r){r.d(t,{O:()=>_,a:()=>g,c:()=>m});var s=r(61691),i=r(55537),n=r(95213),a=r(79187),o=r(88885),l=r(83661);function m(e,t,r,s,i){return h(e,t,null,r,s,i)}function h(e,t,r,s,o,l){let h=e.getGeometryType();if(h===i.G.enumPoint){let r=e.getXY();return t.contains(r)?e:e.createInstance()}if(h===i.G.enumEnvelope){let r=a.Envelope2D.constructEmpty();if(e.queryEnvelope(r),r.intersect(t)){let t=e.clone();return t.setEnvelope(r),t}return e.createInstance()}if(e.isEmpty())return e;if(t.isEmpty())return e.createInstance();let g=t.clone();{let t=new a.Envelope2D;if(e.queryLooseEnvelope(t),g.containsEnvelope(t))return e;if(!g.isIntersecting(t))return e.createInstance();0===o&&(t.intersect(g),t.inflate(Math.max(.1*t.maxDimension(),1)),t.intersect(g),g.assign(t))}let _=s;if((null!==r||Number.isNaN(_))&&(_=(0,n.c)(r,g,!1).total()),h===i.G.enumGeometryCollection){let t=e,r=e.createInstance();for(let e=0,s=t.getGeometryCount();e<s;e++){let s=t.getGeometry(e);if(s.isEmpty())continue;let i=m(s,g,_,o,l);i.isEmpty()||(i===s?r.addGeometry(i.clone()):r.addGeometry(i))}return r}(0,i.i)(h)||(0,i.a)("Clip: geometry not supported");let p=e.getImpl().getAccelerators();if(null!==p){let e=p.getRasterizedGeometry();(0,i.g)(null===e)}switch(h){case i.G.enumMultiPoint:{let t,r=e,s=r.getPointCount(),n=r.getImpl().getAttributeStreamRef(0),a=0;for(let e=0;e<s;e++){let s=n.readPoint2D(2*e);g.contains(s)||(0===a&&(t=r.createInstance()),a<e&&t.addPoints(r,a,e),a=e+1)}return a>0&&t.addPoints(r,a,s),0===a?r:((0,i.g)(null!==t),t)}case i.G.enumPolygon:case i.G.enumPolyline:return function(e,t,r,s,i){return new u(t,i).clipMultiPath2(e,r,s)}(e,g,_,o,l);default:(0,i.d)("")}}function g(e,t,r,s,i,n){let o=new u(t,n),l=new a.Envelope2D;return e.queryLooseEnvelope(l),t.containsEnvelope(l)?e:t.isIntersecting(l)?o.clipPolesOut(e,i):e.createInstance()}class u{m_extent;m_shape=new o.E;m_geometry=-1;m_verticesOnExtentIndex=-1;m_verticesOnExtent=[];m_progressTracker;m_progressCounter=0;constructor(e,t){this.m_extent=new a.Envelope2D(e),this.m_progressTracker=t}progress_(){}clipMultiPath2(e,t,r){return e.getGeometryType()===i.G.enumPolygon?this.clipPolygonOrProjectedPolyline2(e,r):this.clipPolyline(e,t)}clipPolygonOrProjectedPolyline2(e,t){let r=e.getGeometryType()===i.G.enumPolyline;if(0===this.m_extent.width()||0===this.m_extent.height())return e.createInstance();let s=a.Envelope2D.constructEmpty();e.queryLooseEnvelope(s),this.m_geometry=r?this.m_shape.addGeometry(e):this.m_shape.addGeometry(e,this.m_extent);let n=a.Envelope2D.constructEmpty(),m=a.Envelope2D.constructEmpty(),h=new l.P,g=new l.P,_=(0,l.d)(9,NaN),p=(0,l.d)(9,NaN),d=(0,l.m)(l.P,9),c=null,f=new o.L,x=[],P=!1;for(let e=0;!P&&e<4;e++){let t=!1,a=!!(1&e),o=0;switch(e){case 0:o=this.m_extent.xmin,t=s.xmin<=o&&s.xmax>=o;break;case 1:o=this.m_extent.ymin,t=s.ymin<=o&&s.ymax>=o;break;case 2:o=this.m_extent.xmax,t=s.xmin<=o&&s.xmax>=o;break;case 3:o=this.m_extent.ymax,t=s.ymin<=o&&s.ymax>=o}if(t){P=!0;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;){let s=!0,l=-1,y=-1,E=this.m_shape.getFirstVertex(t),S=E;do{this.progress_(),c=this.m_shape.getSegment(S);let t=c;if(null===t){let e=this.m_shape.getNextVertex(S);if(-1===e){(0,i.g)(r),0===l&&x.push(S);break}this.m_shape.queryXY(S,h),f.setStartXY(h),this.m_shape.queryXY(e,g),f.setEndXY(g),t=f}t.queryLooseEnvelope(n);let E=u.checkSegmentIntersection(n,e,o);t.isCurve()&&0===E&&t.isCurve()&&(f.setStartXY(t.getStartXY()),f.setEndXY(t.getEndXY()),this.m_shape.replaceCurveWithLine(S),t=f,f.queryEnvelope(n),E=u.checkSegmentIntersection(n,e,o));let C=0,I=-1;if(-1===E){let r=t.intersectionWithAxis2D(a,o,_,p);if(r>0){let e=null;if(t.isCurve()){e=d,(0,i.g)(r<=9);for(let e=0;e<r;e++)a?d[e].setCoords(_[e],o):d[e].setCoords(o,_[e]);C=this.m_shape.splitSegmentAxisAware(S,p,r,e,+!!a)}else C=this.m_shape.splitSegmentAxisAware(S,p,r,null,-1)}else C=0;C+=1;let n=S,E=this.m_shape.getNextVertex(n);t=null;for(let t=0;t<C;t++){this.m_shape.queryXY(n,h),this.m_shape.queryXY(E,g),c=this.m_shape.getSegment(n);let t=c;null===t&&(f.setStartXY(h),f.setEndXY(g),t=f),t.queryEnvelope(m);let r=u.checkSegmentIntersection(m,e,o);t.isCurve()&&0===r&&(this.m_shape.replaceCurveWithLine(n),f.setStartXY(h),f.setEndXY(g),t=f,t.queryEnvelope(m),r=u.checkSegmentIntersection(m,e,o)),-1===r&&(a?Math.abs(h.y-o)<Math.abs(g.y-o)?(h.y=o,this.m_shape.setXY(n,h)):(g.y=o,this.m_shape.setXY(E,g)):Math.abs(h.x-o)<Math.abs(g.x-o)?(h.x=o,this.m_shape.setXY(n,h)):(g.x=o,this.m_shape.setXY(E,g)),c=this.m_shape.getSegment(n),t=c,null===t&&(f.setStartXY(h),f.setEndXY(g),t=f),t.queryEnvelope(m),r=u.checkSegmentIntersection(m,e,o),-1===r&&(r=u.checkSegmentIntersectionLoose(m,e,o)));let i=l;l=r,-1===y&&(y=l),0===i&&1===l||1===i&&0===l||0===i&&0===l&&x.push(n),1===l&&(P=!1,s=!1),n=E,I=n,E=this.m_shape.getNextVertex(E)}}if(0===C){let e=l;l=E,-1===y&&(y=l),0===e&&l>=1||e>=1&&0===l||0===e&&0===l&&x.push(S),1===l&&(P=!1,s=!1),I=this.m_shape.getNextVertex(S)}if(S=I,x.length>=256){for(let e=1,t=x.length-1;e<t;e++){let t=x[e];r?this.m_shape.snapVertexForPoleClipping(t,o):this.m_shape.removeVertex(t,!1)}x[1]=x.at(-1),x.length=2}}while(S!==E);if(!s){0===y&&(r||0===l||2===l)&&x.push(E);for(let e=0,t=x.length;e<t;e++){let t=x[e];r?this.m_shape.snapVertexForPoleClipping(t,o):this.m_shape.removeVertex(t,!1)}}x.length=0,t=s||0===this.m_shape.getPathSize(t)?this.m_shape.removePath(t):this.m_shape.getNextPath(t)}}}if(P)return e.createInstance();c=null,r?this.removeSpikesAlongPoles():this.resolveBoundaryOverlaps(),t>0&&this.densifyAlongClipExtent(t);let y=this.m_shape.getGeometry(this.m_geometry);return y.getGeometryType()===i.G.enumPolygon&&y.setFillRule(e.getFillRule()),y}clipPolyline(e,t){let r=a.Envelope2D.constructEmpty(),s=a.Envelope2D.constructEmpty(),i=(0,l.d)(9,NaN),n=(0,l.d)(9,NaN),m=new o.S,h=e,g=a.Envelope2D.constructEmpty();e.queryLooseEnvelope(g);for(let t=0;t<4;t++){let a=!1,o=!!(1&t),_=0;switch(t){case 0:_=this.m_extent.xmin,a=g.xmin<=_&&g.xmax>=_;break;case 1:_=this.m_extent.ymin,a=g.ymin<=_&&g.ymax>=_;break;case 2:_=this.m_extent.xmax,a=g.xmin<=_&&g.xmax>=_;break;case 3:_=this.m_extent.ymax,a=g.ymin<=_&&g.ymax>=_}if(!a)continue;let p=h;h=e.createInstance();let d=p.getImpl().querySegmentIterator();d.resetToFirstPath();let c=new l.P,f=new l.P;for(;d.nextPath();){let e=-1,a=!0;for(;d.hasNextSegment();){this.progress_();let l=d.nextSegment(),g=l.isDegenerate(0);l.queryLooseEnvelope(r);let p=u.checkSegmentIntersection(r,t,_);if(-1===p){let r=l.intersectionWithAxis2D(o,_,i,n),p=0;c.assign(l.getStartXY());for(let d=0;d<=r;d++){let x=d<r?n[d]:1;if(p===x)continue;l.queryCut(p,x,m,!1);let P=m.get(),y=!1;if(P.getStartXY().equals(c)||(P.setStartXY(c),y=!0),d<r&&(o?(f.x=i[d],f.y=_):(f.x=_,f.y=i[d]),P.getEndXY().equals(f)||(P.setEndXY(f),y=!0)),y&&P.normalizeAfterEndpointChange(),!g&&P.isDegenerate(0))continue;P.queryEnvelope(s);let E=u.checkSegmentIntersection(s,t,_);if(-1===E){let e=P.getStartXY(),r=P.getEndXY();y=!1,o?Math.abs(e.y-_)<Math.abs(r.y-_)?(e.y=_,P.setStartXY(e),e.equals(P.getStartXY())||(P.setStartXY(e),y=!0)):(r.y=_,r.equals(P.getEndXY())||(P.setEndXY(r),y=!0)):Math.abs(e.x-_)<Math.abs(r.x-_)?(e.x=_,e.equals(P.getStartXY())||(P.setStartXY(e),y=!0)):(r.x=_,r.equals(P.getEndXY())||(P.setEndXY(r),y=!0)),y&&P.normalizeAfterEndpointChange(),P.queryEnvelope(s),E=u.checkSegmentIntersection(s,t,_),-1===E&&(E=u.checkSegmentIntersectionLoose(s,t,_))}c.assign(P.getEndXY()),p=x,e=E,e>=1?(h.addSegment(P,a),a=!1):a=!0}}else e=p,e>=1?(h.addSegment(l,a),a=!1):a=!0}}}return h}static checkSegmentIntersection(e,t,r){switch(t){case 0:return e.xmin<r&&e.xmax<=r?0:e.xmin>=r?e.xmax===r?2:1:-1;case 1:return e.ymin<r&&e.ymax<=r?0:e.ymin>=r?e.ymax===r?2:1:-1;case 2:return e.xmin>=r&&e.xmax>r?0:e.xmax<=r?e.xmin===r?2:1:-1;case 3:return e.ymin>=r&&e.ymax>r?0:e.ymax<=r?e.ymin===r?2:1:-1}return(0,i.d)(""),0}static checkSegmentIntersectionLoose(e,t,r){switch(t){case 0:{let t=Math.abs(e.xmin-r),s=Math.abs(e.xmax-r);return e.xmin<r?t>s?0:1:((0,i.d)(""),1)}case 1:{let t=Math.abs(e.ymin-r),s=Math.abs(e.ymax-r);return e.ymin<r?t>s?0:1:((0,i.d)(""),1)}case 2:{let t=Math.abs(e.xmin-r),s=Math.abs(e.xmax-r);return e.xmax>r?t<s?0:1:((0,i.d)(""),1)}case 3:{let t=Math.abs(e.ymin-r),s=Math.abs(e.ymax-r);return e.ymax>r?t<s?0:1:((0,i.d)(""),1)}}return(0,i.d)(""),0}resolveBoundaryOverlaps(){this.m_verticesOnExtentIndex=-1,this.splitSegments(!1,this.m_extent.xmin),this.splitSegments(!1,this.m_extent.xmax),this.splitSegments(!0,this.m_extent.ymin),this.splitSegments(!0,this.m_extent.ymax),this.m_verticesOnExtent.length=0,this.m_verticesOnExtentIndex=this.m_shape.createUserIndex();let e=new l.P;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;t=this.m_shape.getNextPath(t)){let r=this.m_shape.getFirstVertex(t);for(let s=0,i=this.m_shape.getPathSize(t);s<i;s++,r=this.m_shape.getNextVertex(r))this.progress_(),this.m_shape.queryXY(r,e),(this.m_extent.xmin===e.x||this.m_extent.xmax===e.x||this.m_extent.ymin===e.y||this.m_extent.ymax===e.y)&&(this.m_shape.setUserIndex(r,this.m_verticesOnExtentIndex,this.m_verticesOnExtent.length),this.m_verticesOnExtent.push(r))}this.dbgCheckPathFirst(),this.resolveOverlaps(!1,this.m_extent.xmin),this.dbgCheckPathFirst(),this.resolveOverlaps(!1,this.m_extent.xmax),this.dbgCheckPathFirst(),this.resolveOverlaps(!0,this.m_extent.ymin),this.dbgCheckPathFirst(),this.resolveOverlaps(!0,this.m_extent.ymax),this.fixPaths()}densifyAlongClipExtent(e){let t=new l.P(0,0),r=new l.P(0,0),s=(0,l.d)(2048,NaN);for(let n=this.m_shape.getFirstPath(this.m_geometry);-1!==n;n=this.m_shape.getNextPath(n)){let a=this.m_shape.getFirstVertex(n),o=a;do{let n=this.m_shape.getNextVertex(o);this.m_shape.queryXY(o,t);let a=-1;if(t.x===this.m_extent.xmin?(this.m_shape.queryXY(n,r),r.x===this.m_extent.xmin&&(a=1)):t.x===this.m_extent.xmax&&(this.m_shape.queryXY(n,r),r.x===this.m_extent.xmax&&(a=1)),t.y===this.m_extent.ymin?(this.m_shape.queryXY(n,r),r.y===this.m_extent.ymin&&(a=0)):t.y===this.m_extent.ymax&&(this.m_shape.queryXY(n,r),r.y===this.m_extent.ymax&&(a=0)),-1===a){o=n;continue}if(this.isCurve(o)){o=n;continue}let m=t.clone(),h=new l.P(0,0);if(a){let s=t.y-this.m_extent.ymin;h.y=(0,l.e)(r.y-t.y),m.y=e*(0,l.f)(Math.floor(Math.abs(s)/e),s)+this.m_extent.ymin,h.y<0&&(m.y+=e)}else{let s=t.x-this.m_extent.xmin;h.x=(0,l.e)(r.x-t.x),m.x=e*(0,l.f)(Math.floor(Math.abs(s)/e),s)+this.m_extent.xmin,h.x<0&&(m.x+=e)}let g=a?r.y-t.y:r.x-t.x,u=Math.abs(g);if(u/e>65536&&(0,i.d)(""),u>0){let r=Math.trunc(u/e)+2;s.length<r&&(s.length=r);let n=0;for(let r=0;;r++){let o=m.add(h.mul(r*e)),l=(a?o.y-t.y:o.x-t.x)/g;if(l>=1)break;l<=0||((0,i.g)(n<=s.length),s[n]=l,n++)}0!==n&&this.m_shape.splitSegment(o,s,n)}o=n}while(o!==a)}}splitSegments(e,t){let r=-1,s=new l.P,i=[];for(let n=this.m_shape.getFirstPath(this.m_geometry);-1!==n;n=this.m_shape.getNextPath(n)){let a=this.m_shape.getFirstVertex(n),o=-1;for(let l=0,m=this.m_shape.getPathSize(n);l<m;l++,a=o)if(this.progress_(),o=this.m_shape.getNextVertex(a),this.m_shape.queryXY(a,s),(e?s.y===t:s.x===t)&&(this.m_shape.queryXY(o,s),e?s.y===t:s.x===t)){if(this.isCurve(a))continue;-1===r&&(r=this.m_shape.createUserIndex()),1!==this.m_shape.getUserIndex(a,r)&&(i.push(a),this.m_shape.setUserIndex(a,r,1)),1!==this.m_shape.getUserIndex(o,r)&&(i.push(o),this.m_shape.setUserIndex(o,r,1))}}if(-1!==r&&this.m_shape.removeUserIndex(r),i.length<3)return;i.sort((e,t)=>this.compareVertices(e,t));let n=new l.P,a=new l.P,o=new l.P;a.setNAN();let m=-1,h=[],g=[],u=this.m_shape.createUserIndex(),_=this.m_shape.createUserIndex();for(let r=0,p=i.length;r<p;r++){let p=i[r];if(this.m_shape.queryXY(p,s),!s.isEqualPoint2D(a)){if(-1===m){m=r,a.setCoordsPoint2D(s);continue}for(let s=m;s<r;s++){let r=i[s],o=this.m_shape.getNextVertex(r),l=this.m_shape.getPrevVertex(r),m=!1;this.m_shape.queryXY(o,n),a.compare(n)<0&&(e?n.y===t:n.x===t)&&(this.isCurve(r)||(h.push(r),m=!0,this.m_shape.setUserIndex(r,_,1))),this.m_shape.queryXY(l,n),a.compare(n)<0&&(e?n.y===t:n.x===t)&&(this.isCurve(l)||(m||h.push(r),this.m_shape.setUserIndex(r,u,1)))}for(let e=0,t=h.length;e<t;e++){let t=h[e],r=this.m_shape.getUserIndex(t,u),i=this.m_shape.getUserIndex(t,_);if(1===r){let e=this.m_shape.getPrevVertex(t);this.m_shape.queryXY(e,o);let r=0;if(!o.isEqualPoint2D(s)){let i=l.P.distance(a,o);r=l.P.distance(o,s)/i,0===r?r=2**-52:1===r&&(r=1-2**-52),this.m_shape.splitSegment(e,[r],1);let n=this.m_shape.getPrevVertex(t);this.m_shape.setXY(n,s),g.push(n),this.m_shape.setUserIndex(n,u,1),this.m_shape.setUserIndex(n,_,-1)}}if(1===i){let e=this.m_shape.getNextVertex(t);this.m_shape.queryXY(e,o);let r=0;if(!o.isEqualPoint2D(s)){let e=l.P.distance(a,o);r=l.P.distance(a,s)/e,0===r?r=2**-52:1===r&&(r=1-2**-52),this.m_shape.splitSegment(t,[r],1);let i=this.m_shape.getNextVertex(t);this.m_shape.setXY(i,s),g.push(i),this.m_shape.setUserIndex(i,u,-1),this.m_shape.setUserIndex(i,_,1)}}}let p=h;h=g,g=p,g.length=0,m=r,a.setCoordsPoint2D(s)}}this.m_shape.removeUserIndex(u),this.m_shape.removeUserIndex(_)}resolveOverlaps(e,t){let r=new l.P,s=[],n=-1;for(let i=0,a=this.m_verticesOnExtent.length;i<a;i++){this.progress_();let a=this.m_verticesOnExtent[i];if(-1===a)continue;let o=this.m_shape.getNextVertex(a);if(this.m_shape.queryXY(a,r),(e?r.y===t:r.x===t)&&(this.m_shape.queryXY(o,r),e?r.y===t:r.x===t)){if(this.isCurve(a))continue;-1===n&&(n=this.m_shape.createUserIndex()),-2!==this.m_shape.getUserIndex(a,n)&&(s.push(a),this.m_shape.setUserIndex(a,n,-2)),-2!==this.m_shape.getUserIndex(o,n)&&(s.push(o),this.m_shape.setUserIndex(o,n,-2))}}if(0===s.length)return void(-1!==n&&this.m_shape.removeUserIndex(n));(0,i.g)(-1!==n),s.sort((e,t)=>this.compareVertices(e,t));for(let e=0,t=s.length;e<t;e++){let t=s[e];this.m_shape.setUserIndex(t,n,e)}let a=new l.P,o=new l.P;o.setNAN();let m=-1;for(let i=0,l=s.length;i<l;i++){this.progress_();let l=s[i];if(-1!==l&&(this.m_shape.queryXY(l,r),!r.isEqualPoint2D(o))){if(-1!==m)for(;;){let r=!1,l=i;for(let h=m;h<l;h++){let l=s[h];if(-1===l)continue;let m=-1,g=this.m_shape.getNextVertex(l);this.m_shape.queryXY(g,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(l)||(m=g));let u=-1,_=this.m_shape.getPrevVertex(l);if(this.m_shape.queryXY(_,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(_)||(u=_)),-1===m||-1===u){if(-1!==m||-1!==u){for(let g=h+1;g<i;g++){let i=s[g];if(-1===i)continue;let h=this.m_shape.getNextVertex(i),_=-1;this.m_shape.queryXY(h,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(i)||(_=h));let p=this.m_shape.getPrevVertex(i),d=-1;if(this.m_shape.queryXY(p,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(p)||(d=p)),-1!==_&&-1!==d){this.beforeRemoveVertex(i,s,n),this.m_shape.removeVertex(i,!1),this.beforeRemoveVertex(_,s,n),this.m_shape.removeVertex(_,!1),r=!0;break}if(-1!==m&&-1!==d){this.removeOverlap(s,l,m,i,d,n),r=!0;break}if(-1!==u&&-1!==_){this.removeOverlap(s,i,_,l,u,n),r=!0;break}}if(r)break}}else this.beforeRemoveVertex(l,s,n),this.m_shape.removeVertex(l,!1),this.beforeRemoveVertex(m,s,n),this.m_shape.removeVertex(m,!1),r=!0}if(!r)break}m=i,o.setCoordsPoint2D(r)}}this.m_shape.removeUserIndex(n)}beforeRemoveVertex(e,t,r){let s=this.m_shape.getUserIndex(e,r);(0,i.g)(s>=0),t[s]=-1,s=this.m_shape.getUserIndex(e,this.m_verticesOnExtentIndex),(0,i.g)(s>=0),this.m_verticesOnExtent[s]=-1;let n=this.m_shape.getPathFromVertex(e);-1!==n&&this.m_shape.getFirstVertex(n)===e&&(this.m_shape.setFirstVertex(n,-1),this.m_shape.setLastVertex(n,-1))}removeOverlap(e,t,r,s,i,n){this.m_shape.setNextVertex(t,s),this.m_shape.setPrevVertex(s,t),this.m_shape.setPrevVertex(r,i),this.m_shape.setNextVertex(i,r),this.beforeRemoveVertex(s,e,n),this.m_shape.removeVertexInternal(s,!1),this.beforeRemoveVertex(i,e,n),this.m_shape.removeVertexInternal(i,!0)}removeSpikesAlongPoles(){this.removeSpikesOnPole(this.m_extent.ymin),this.removeSpikesOnPole(this.m_extent.ymax)}removeSpikesOnPole(e){for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;t=this.m_shape.getNextPath(t)){let r=this.m_shape.getPathSize(t);if(r<3)continue;let s=this.m_shape.getFirstVertex(t),i=new l.P;this.m_shape.queryXY(s,i);let n=i.y===e&&!this.isCurve(s);s=this.m_shape.getNextVertex(s);let a=new l.P;this.m_shape.queryXY(s,a);let o=a.y===e&&!this.isCurve(s);s=this.m_shape.getNextVertex(s);let m=new l.P;for(let t=0,l=r-2;t<l;t++,s=this.m_shape.getNextVertex(s)){this.progress_(),this.m_shape.queryXY(s,m);let t=m.y===e;o&&n&&t&&(a.x-i.x)*(m.x-a.x)<=0?(this.m_shape.removeVertex(this.m_shape.getPrevVertex(s),!1),a.setCoordsPoint2D(m),o=t&&!this.isCurve(s)):(i.setCoordsPoint2D(a),n=o,a.setCoordsPoint2D(m),o=t&&!this.isCurve(s))}}}fixPaths(){for(let e=0,t=this.m_verticesOnExtent.length;e<t;e++){let t=this.m_verticesOnExtent[e];-1!==t&&this.m_shape.setPathToVertex(t,-1)}let e=this.m_shape.hasCurves(),t=0,r=0;for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;){let s=this.m_shape.getFirstVertex(e);if(-1===s||e!==this.m_shape.getPathFromVertex(s)){let t=e;e=this.m_shape.getNextPath(e),this.m_shape.setFirstVertex(t,-1),this.m_shape.removePathOnly(t);continue}let i=s,n=0;do{this.m_shape.setPathToVertex(i,e),n++,i=this.m_shape.getNextVertex(i)}while(i!==s);this.m_shape.setRingAreaValid(e,!1),this.m_shape.setLastVertex(e,this.m_shape.getPrevVertex(s)),this.m_shape.setPathSize(e,n),r+=n,t++,e=this.m_shape.getNextPath(e)}for(let s=0,n=this.m_verticesOnExtent.length;s<n;s++){let n=this.m_verticesOnExtent[s];if(-1===n)continue;let a=this.m_shape.getPathFromVertex(n);if(-1!==a)continue;a=this.m_shape.insertPath(this.m_geometry,-1);let o=!1,l=0,m=n;do{this.m_shape.setPathToVertex(n,a),l++,e&&l<=2&&(o||=this.isCurve(n)),n=this.m_shape.getNextVertex(n)}while(n!==m);if(o?0===l:l<=2){let e=this.m_shape.getUserIndex(m,this.m_verticesOnExtentIndex);(0,i.g)(e>=0),this.m_verticesOnExtent[e]=-1;let t=this.m_shape.removeVertex(m,!1);2===l&&(e=this.m_shape.getUserIndex(t,this.m_verticesOnExtentIndex),e>=0&&(this.m_verticesOnExtent[e]=-1),this.m_shape.removeVertex(t,!1));let r=a;a=this.m_shape.getNextPath(a),this.m_shape.setFirstVertex(r,-1),this.m_shape.removePathOnly(r);continue}this.m_shape.setClosedPath(a,!0),this.m_shape.setPathSize(a,l),this.m_shape.setFirstVertex(a,m),this.m_shape.setLastVertex(a,this.m_shape.getPrevVertex(m)),this.m_shape.setRingAreaValid(a,!1),r+=l,t++}this.m_shape.setGeometryPathCount(this.m_geometry,t),this.m_shape.setGeometryVertexCount(this.m_geometry,r);let s=0;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))s+=this.m_shape.getPointCount(e);this.m_shape.setTotalPointCount(s)}dbgCheckPathFirst(){}isCurve(e){return null!==this.m_shape.getSegment(e)}compareVertices(e,t){let r=new l.P;this.m_shape.queryXY(e,r);let s=new l.P;return this.m_shape.queryXY(t,s),r.compare(s)}clipPolesOut(e,t){return this.clipPolygonOrProjectedPolyline2(e,t)}}class _{getOperatorType(){return 10004}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s){return new p(e,t,r,s)}execute(e,t,r,s){return function(e,t,r,s){return h(e,t,r,NaN,0,s)}(e,t,r,s)}}class p extends s.G{m_inputGeometryCursor;m_spatialRefImpl;m_progressTracker;m_envelope;m_tolerance;m_index;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_index=-1,e||(0,i.a)(""),this.m_envelope=t,this.m_inputGeometryCursor=e,this.m_spatialRefImpl=r,this.m_tolerance=(0,n.c)(r,t,!1).total()}next(){let e;return(e=this.m_inputGeometryCursor.next())?((0,i.c)(e),this.m_index=this.m_inputGeometryCursor.getGeometryID(),m(e,this.m_envelope,this.m_tolerance,0,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}},5247(e,t,r){r.d(t,{O:()=>l});var s=r(61691),i=r(55537),n=r(88885),a=n.D;class o extends s.G{m_inputGeoms;m_densificator;m_index;constructor(e,t,r,s,i,n){super(),this.m_densificator=new a(t,r,s,n,!1,i),this.m_index=-1,this.m_inputGeoms=e}tock(){return!0}getRank(){return 1}next(){let e=null;for(;e=this.m_inputGeoms.next();)return(0,i.c)(e),this.m_index=this.m_inputGeoms.getGeometryID(),this.densify(e);return null}getGeometryID(){return this.m_index}densify(e){return this.m_densificator.densify(e)}}class l{getOperatorType(){return 10202}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}executeMany(e,t,r,s,i,n=12e3){return new o(e,t,r,s,n,i)}execute(e,t,r,s,i,a=12e3){return(0,n.d)(e,t,r,s,i,a)}}},39117(e,t,r){r.d(t,{$:()=>Me,B:()=>pn,C:()=>gn,D:()=>_n,E:()=>un,H:()=>dn,J:()=>ts,K:()=>tr,M:()=>ur,N:()=>_r,O:()=>ps,Q:()=>lr,U:()=>dr,W:()=>c,X:()=>Or,Y:()=>Rr,Z:()=>ni,_:()=>et,a:()=>ma,a$:()=>p,a0:()=>Ue,a1:()=>ai,a2:()=>oi,a3:()=>mi,a4:()=>ns,a5:()=>gi,a6:()=>Ar,a7:()=>br,a8:()=>hr,a9:()=>Ne,aA:()=>Di,aB:()=>rr,aC:()=>b,aD:()=>Ga,aE:()=>Ii,aF:()=>Ui,aN:()=>va,aQ:()=>mr,aR:()=>Vr,aX:()=>Ia,aY:()=>Ai,aZ:()=>F,a_:()=>Ks,aa:()=>ir,ab:()=>Nr,ac:()=>Wa,ad:()=>Ra,ae:()=>Va,af:()=>cs,ag:()=>Ti,ah:()=>fs,ai:()=>P,aj:()=>ln,ak:()=>Os,al:()=>bi,am:()=>Ea,an:()=>Sa,ao:()=>Da,ap:()=>Bs,aq:()=>ys,ar:()=>Es,as:()=>xs,at:()=>Ps,au:()=>Ys,av:()=>v,aw:()=>Mi,ax:()=>zi,ay:()=>C,az:()=>Hi,b:()=>jn,c:()=>Wn,e:()=>Qn,f:()=>Kn,i:()=>Yn,j:()=>oa,l:()=>Rn,m:()=>Xn,p:()=>$n,q:()=>ea,r:()=>On,v:()=>pi,x:()=>li,y:()=>Ua,z:()=>qa});var s=r(32198),i=r(55537),n=r(79187),a=r(88885),o=r(95213),l=r(83661),m=r(11878),h=r(31139),g=r(5247),u=r(61691),_=r(76061);class p{constructor(e){if(this.m_geom=this.m_sr=null,e){if(e.move)return this.m_geom=e.move.m_geom,e.move.m_geom=null,this.m_sr=e.move.m_sr,void(e.move.m_sr=null);if(e.copy)return this.m_geom=e.copy.m_geom?e.copy.m_geom.clone():null,void(this.m_sr=e.copy.m_sr);e.geom&&(this.m_geom=e.geom),e.sr&&(this.m_sr=e.sr)}}getGeometry(){return this.m_geom}getSpatialReference(){return this.m_sr}setGeometry(e){this.m_geom=e}setSpatialReference(e){this.m_sr=e}equals(e,t){let r=e;return!(!this.m_sr&&r.m_sr||this.m_sr&&!r.m_sr||!this.m_geom&&r.m_geom||this.m_geom&&!r.m_geom||this.m_sr&&r.m_sr&&!this.m_sr.equals(r.m_sr)||this.m_geom&&r.m_geom&&!this.m_geom.equals(r.m_geom,t))}clone(){let e=null;return this.m_geom&&(e=this.m_geom.clone()),new p({geom:e,sr:this.m_sr})}hasGeom(){return!!this.m_geom}m_geom;m_sr}class d{m_factor=1;m_wkid=0;m_peUnit=null;constructor(e){e&&(this.m_peUnit=e,this.m_factor=e.getUnitFactor(),this.m_wkid=e.getCode(),this.m_wkid<0&&(this.m_wkid=0))}getName(){return this.m_peUnit?this.m_peUnit.getName():""}getID(){return this.m_wkid}getConversionFactor(e){return this.getUnitType()!==e.getUnitType()&&(0,i.a)("unit type mismatch"),this.getUnitToBaseFactor()/e.getUnitToBaseFactor()}getUnitToBaseFactor(){return this.m_factor}getHashCode(){return(0,l.B)((0,l.C)(this.getUnitType()),(0,l.C)(this.getUnitToBaseFactor()))}equals(e){return!!e&&this.getUnitType()===e.getUnitType()&&this.getUnitToBaseFactor()===e.getUnitToBaseFactor()&&this.getID()===e.getID()&&this.getName()===e.getName()}static isValidWkid(e){return!1}}class c{m_reason;m_vertexIndex1;m_vertexIndex2;assign(e){this.m_reason=e.m_reason,this.m_vertexIndex1=e.m_vertexIndex1,this.m_vertexIndex2=e.m_vertexIndex2}constructor(e,t,r){void 0===e?(this.m_reason=0,this.m_vertexIndex1=-1,this.m_vertexIndex2=-2):(this.m_reason=e,this.m_vertexIndex1=t,this.m_vertexIndex2=r)}clear(){this.m_reason=0,this.m_vertexIndex1=-1,this.m_vertexIndex2=-1}}const f={330:104878,500:104879,1300:104899,1450:104986,2230:104988,3800:104978,5e3:104919,6200:104906,8200:104909,9500:104927,9600:104977,1e4:[104911,104936],11e3:104941,11080:104872,11100:104907,12e3:104920,12400:104995,13e3:104948,14e3:[104923,104989],15e3:[104913,104954],15100:104976,16e3:[104926,104931],18e3:[104922,104982],21e3:104947,21500:104877,27e3:[104950,104957],29e3:104964,3e4:104921,31e3:104949,33e3:104946,4e4:[104914,104967],40600:104897,41900:104937,42e3:104951,43100:104993,49300:104924,50100:104939,54e3:104955,58200:104981,59500:104930,74e3:104961,77e3:104956,79e3:104962,83500:104910,85e3:104917,88800:104934,89200:104985,96e3:104997,104e3:104963,106500:104898,11e4:104938,133e3:104932,135e3:104983,17e4:104965,198200:104987,198630:104935,208e3:104966,235800:104952,249400:104929,252100:104980,255e3:104973,47e4:104972,529800:104942,531e3:104996,56e4:104928,561400:104979,578900:104945,584700:104959,593e3:104970,606e3:104999,718e3:104933,745700:104984,761400:104953,763500:104994,764e3:104940,788900:104958,1188300:104998,1195e3:104969,1352600:104968,1560800:104874,1562090:104915,1737400:104903,1821460:104918,1821490:104876,2409300:104912,2410300:104873,2439400:104974,2439700:104900,2575e3:104943,2631200:104875,2632345:104916,3393400:104904,3396190:[104905,104971],6051e3:104901,6051800:104902,637e4:104128,6370997:[4052,37008],6371e3:4035,6371007:4047,6371228:[4053,10346],6376045:[8042,8043],6376523:[4027,4901,4902],6376896:37007,6378135:[4122,4322,4324,4720,4985,4987],6378136:[4740,4923,7678,7680,9474,9475,104017,104018],6378137:[3823,3824,3888,3889,4017,4019,4023,4031,4040,4046,4055,4074,4075,4080,4081,4121,4126,4130,4133,4140,4141,4148,4151,4152,4163,4166,4167,4170,4171,4172,4173,4176,4180,4189,4190,4258,4269,4283,4318,4319,4326,4463,4466,4469,4470,4480,4482,4483,4490,4557,4558,4612,4617,4619,4624,4627,4659,4661,4667,4669,4670,4674,4686,4687,4693,4694,4702,4737,4742,4747,4749,4750,4755,4756,4757,4758,4759,4761,4762,4763,4764,4765,4883,4885,4887,4889,4893,4895,4898,4907,4909,4921,4925,4927,4929,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4965,4967,4971,4975,4977,4979,4981,4983,4989,4997,4999,5012,5013,5245,5246,5251,5252,5263,5264,5323,5324,5340,5342,5353,5354,5359,5360,5364,5365,5370,5371,5372,5373,5380,5381,5392,5393,5488,5489,5545,5546,5592,5593,5885,5886,6134,6135,6310,6311,6318,6319,6321,6322,6324,6325,6364,6365,6667,6668,6705,6706,6782,6783,6980,6982,6983,6987,6989,6990,7034,7035,7036,7037,7038,7039,7040,7041,7042,7072,7073,7084,7085,7086,7087,7133,7135,7136,7138,7139,7372,7373,7657,7659,7661,7663,7665,7685,7686,7797,7798,7816,7843,7844,7880,7881,7885,7886,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7915,7917,7919,7921,7923,7925,7927,7929,7931,8085,8086,8231,8232,8235,8237,8239,8240,8244,8246,8248,8249,8251,8252,8254,8255,8399,8403,8426,8427,8449,8542,8544,8545,8684,8685,8698,8699,8817,8818,8860,8888,8899,8900,8901,8902,8906,8907,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934,8936,8938,8940,8942,8944,8946,8948,8949,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9e3,9002,9003,9005,9006,9008,9009,9011,9012,9013,9014,9016,9017,9018,9019,9053,9054,9055,9056,9057,9059,9060,9061,9062,9063,9064,9065,9066,9067,9068,9069,9071,9072,9074,9075,9139,9140,9147,9148,9152,9153,9183,9184,9293,9294,9299,9308,9309,9332,9333,9364,9372,9379,9380,9384,9453,9469,9470,9546,9547,9695,9696,9701,9702,9739,9754,9755,9758,9763,9776,9777,9778,9779,9781,9782,9783,9784,9866,9871,9939,9964,9969,9974,9989,9990,10175,10177,10178,10185,10191,10196,10204,10209,10214,10219,10224,10229,10237,10272,10277,10283,10284,10298,10299,10300,10304,10305,10307,10309,10310,10311,10312,10327,10328,10413,10414,10468,10474,10475,10570,10571,10605,10606,10623,10628,10638,10639,10670,10671,10672,10673,10689,10690,10724,10725,10738,10739,10761,10762,10780,10781,10784,10785,10790,10791,10799,10800,10830,10831,10849,10860,10909,10910,10940,10941,10951,10952,10955,10956,10958,10959,10992,10993,11030,11033,11042,11043,11225,11226,20033,20040,20041,20045,20046,104009,104010,104011,104012,104013,104014,104015,104016,104019,104020,104021,104022,104024,104027,104028,104030,104031,104033,104048,104049,104050,104100,104107,104108,104110,104111,104114,104115,104116,104117,104118,104119,104120,104121,104122,104123,104124,104129,104133,104134,104137,104141,104142,104143,104144,104145,104179,104180,104181,104182,104183,104184,104185,104186,104199,104220,104221,104223,104257,104258,104259,104260,104286,104287,104602,104613,104644,104645,104646,104647,104653,104804,104896,104991],6378140:4610,6378145:[4025,4276,4760,4891,37001],6378150:37003,6378155:[37004,37207],6378160:[3821,4003,4021,4036,4202,4203,4237,4238,4291,4618,4708,5527,37231,104023,104136],6378166:37002,6378200:[4020,4229,4286,4303,4706],6378245:[4024,4147,4164,4178,4179,4191,4200,4205,4214,4284,4317,4555,4676,4677,4678,4991,4993,5560,5561,37257,104135],6378270:[4732,37005,37229],6378273:[4054,10345],6378300:[4029,4168,4174],6378388:[4022,4123,4153,4154,4158,4159,4160,4161,4165,4181,4182,4183,4184,4185,4192,4194,4195,4196,4199,4204,4207,4208,4215,4218,4221,4224,4225,4230,4231,4233,4235,4236,4247,4248,4249,4254,4255,4259,4264,4265,4271,4272,4274,4285,4287,4288,4292,4297,4309,4311,4313,4316,4472,4475,4611,4614,4615,4616,4621,4622,4623,4625,4626,4628,4629,4630,4631,4632,4633,4636,4637,4639,4641,4642,4643,4644,4645,4646,4658,4660,4662,4663,4664,4665,4668,4672,4673,4684,4688,4689,4690,4691,4692,4698,4704,4705,4707,4709,4710,4711,4712,4714,4715,4716,4718,4719,4721,4722,4724,4725,4727,4728,4729,4730,4733,4734,4735,4739,4741,4753,4754,4802,4803,4806,4809,4810,4823,4824,4900,5524,6883,8428,8430,8431,9248,9251,9253,9403,9893,10158,10249,10252,10635,10636,10735,10736,10758,37e3,37201,37204,37205,37212,37213,37214,37215,37216,37217,37218,37219,37221,37222,37224,37226,37227,37230,37232,37233,37234,37235,37237,37238,37241,37242,37245,37246,37247,37249,37250,37251,37253,37259,104104,104106,104125,104126,104127,104130,104138,104248],6378523:104786,24764e3:104960,25559e3:104944,60268e3:104925,71492e3:104908,6957e5:104975,6377397.155:[3819,3906,4004,4120,4124,4125,4149,4150,4156,4162,4211,4219,4257,4262,4280,4289,4294,4295,4301,4306,4308,4312,4314,4613,4666,4745,4746,4801,4804,4805,4808,4813,4814,4815,4818,4820,4904,5132,5228,5229,5681,5830,8351,9267,10268,10898,37255,104101,104102,104105,104131,104648,104696,104697,104990,104992],6377563.396:[4001,4188,4277,4278,4279],6377340.189:[4002,4299,4300],6377492.018:[4005,4273,4817],6377483.865280418:[4006,4293],6378293.645208759:[4007,4157,4302,4738,5464],6378206.4:[4008,4127,4128,4129,4135,4136,4137,4138,4139,4169,4216,4242,4253,4267,4608,4609,4638,4675,4683,4695,4717,4723,4726,4995,5451,5467,37220,37239,37243,37252,37260,104e3,104109,104112,104113,104132],6378450.047:[4009,4268],6378300.789:[4010,4281],6378249.2:[4011,4014,4155,4193,4206,4213,4223,4226,4227,4228,4252,4261,4266,4275,4282,4296,4304,4310,4315,4671,4807,4811,4816,4821,37223,37225,104139,104140,104261,104304],6378249.145:[4012,4013,4132,4134,4142,4143,4175,4197,4198,4201,4209,4210,4212,4220,4222,4232,4234,4246,4250,4251,4256,4260,4263,4270,4305,4307,4600,4601,4602,4603,4604,4605,4606,4607,4620,4679,4680,4696,4697,4699,4700,4701,4703,4713,4731,4736,4743,4744,4812,4819,6881,6882,6892,6894,8694,37206,37208,37211,37228,37240,37254,104025,104026,104032,104103,104305],6377276.345:[4015,4131,4144,4239,4240,4244,4682,5233,6207,37202,104256,104664,104693],6377298.556:[4016,4298],6377304.063:[4018,4245],6378298.3:[4028,4903],6378136.2:4032,6378136.3:4033,6378249.144808011:[4034,4241],20922931.8:[4042,4243],6377301.243:[4044,4145,37203],6377299.151:[4045,4146],6377019.27:[4657,10256,10260,10265],6378306.3696:[4748,4752],6377295.664:[4751,37006],6378136.5:[7682,7683],6371008.7714:104047,6378418.941:[104700,104726,104760],6378586.581:[104701,104743],6378505.809:104702,6378544.823:104703,6378490.569:104704,6378470.757:[104705,104776],6378403.701:[104706,104750],6378434.181:[104707,104724,104739,104764],6378454.907:104708,6378400.653:104709,6378567.378:104710,6378546.957:[104711,104717,104780],6378476.853:[104712,104736],6378411.321:[104713,104728],6378647.541:[104714,104715],6378514.953:[104716,104782],6378421.989:[104718,104770],6378481.425:[104719,104753,104774,104781],6378518.001:[104720,104725],6378521.049:[104721,104723,104731,104745,104748],6378464.661:104722,6378436.619:104727,6378574.389:[104729,104730],6378472.281:[104732,104756],6378498.189:[104733,104746],6378449.421:[104734,104766],6378525.621:[104735,104754],6378466.185:104737,6378496.665:104738,6378643.579:104740,6378559.758:104741,6378414.369:[104742,104763,104772],6378441.801:104744,6378502.761:[104747,104759,104773,104775],6378617.061:104749,6378624.681:[104751,104765],6378468.623:104752,6378445.763:[104755,104758,104761],6378670.401:104757,6378438.753:104762,6378543.909:104767,6378605.783:104768,6378540.861:104769,6378443.325:[104771,104784],6378548.481:104777,6378463.746:104778,6378426.561:104779,6378453.688:104783,6378530.193:104785,6378376.271:[104800,104828],6378471.92:104801,6378472.931:104802,6378411.351:104803,6378380.991:104805,6378414.96:104806,6378345.09:[104807,104819,104844,104870],6378412.542:104808,6378470.401:104809,6378376.331:104810,6378379.031:104811,6378407.621:104812,6378376.811:[104813,104827],6378313.92:104814,6378414.93:104815,6378413.021:104816,6378380.381:104817,6378530.851:104818,6378591.521:104820,6378378.881:104821,6378408.481:[104822,104832],6378375.601:[104823,104838],6378408.041:104824,6378655.071:104825,6378409.151:104826,6378315.7:[104829,104840,104845,104851],6378285.86:[104830,104835,104859],6378379.301:104831,6378560.121:104833,6378531.821:104834,6378500.6:104836,6378376.041:104837,6378406.601:104839,6378438.991:104841,6378345.42:104842,6378593.86:104843,6378381.271:[104846,104847],6378413.671:104848,6378344.377:104849,6378563.891:104850,6378408.091:104852,6378377.671:104853,6378472.751:104854,6378412.511:104855,6378407.281:104856,6378534.451:104857,6378406.051:104858,6378532.921:104860,6378380.091:104861,6378408.941:104862,6378624.171:104863,6378377.411:104864,6378474.591:104865,6378407.141:104866,6378376.871:104867,6378375.251:104868,6378405.971:104869,6378437.651:104871};class x extends d{constructor(e){if("number"==typeof e)return super(),this.m_factor=e,void(this.m_wkid=0);super(e)}getUnitType(){return 1}convertFromRadians(e){return e/this.getUnitToBaseFactor()}convertToRadians(e){return e*this.getUnitToBaseFactor()}}function P(e){return new kn}class y{x;y;z;constructor(e,t,r){void 0===e?(this.x=new l.Z,this.y=new l.Z,this.z=new l.Z):e instanceof o.k?(this.x=new l.Z(e.x),this.y=new l.Z(e.y),this.z=new l.Z(e.z)):e instanceof l.Z?(this.x=e.clone(),this.y=t.clone(),this.z=r.clone()):(0,i.a)("EPoint3D constructor")}dotProduct(e){return this.x.mulE(e.x).addE(this.y.mulE(e.y)).addE(this.z.mulE(e.z))}crossProduct(e){return new y(this.y.mulE(e.z).subE(this.z.mulE(e.y)),this.z.mulE(e.x).subE(this.x.mulE(e.z)),this.x.mulE(e.y).subE(this.y.mulE(e.x)))}crossProductVector(e){let t=this.y.mulE(e.z).subE(e.y.mulE(this.z)),r=e.x.mulE(this.z).subE(this.x.mulE(e.z)),s=this.x.mulE(e.y).subE(e.x.mulE(this.y));return new y(t,r,s)}sqrLength(){return this.x.mulE(this.x).addE(this.y.mulE(this.y)).addE(this.z.mulE(this.z))}length(){return this.sqrLength().sqrt()}static distance(e,t){return e.sub(t).length()}negate(){return new y(this.x.negate(),this.y.negate(),this.z.negate())}add(e){return new y(this.x.addE(e.x),this.y.addE(e.y),this.z.addE(e.z))}sub(e){return new y(this.x.subE(e.x),this.y.subE(e.y),this.z.subE(e.z))}subThis(e){return this.x.subThisE(e.x),this.y.subThisE(e.y),this.z.subThisE(e.z),this}addThis(e){return this.x.addThisE(e.x),this.y.addThisE(e.y),this.z.addThisE(e.z),this}mul(e){return new y(this.x.mulE(e),this.y.mulE(e),this.z.mulE(e))}div(e){return new y(this.x.divE(e),this.y.divE(e),this.z.divE(e))}eq(e){return this.x.eq(e.x)&&this.y.eq(e.y)&&this.z.eq(e.z)}isZero(){return this.x.isZero()&&this.y.isZero()&&this.z.isZero()}value(){return o.k.construct(this.x.value(),this.y.value(),this.z.value())}}class E{m_origin=new o.k;m_normal=new o.k;m_axisX=new o.k;m_axisY=new o.k;constructor(e){if(!e)return this.m_origin=new o.k,this.m_normal=new o.k(0,0,1),this.m_axisX=new o.k(1,0,0),void(this.m_axisY=new o.k(0,1,0));e.pt0&&e.pt1&&e.pt2?this.setFromPoints(e.pt0,e.pt1,e.pt2):(0,i.g)(0,`unimplemented constructor options ${JSON.stringify(e)}`)}assign(e){return(0,i.g)(0),this}set(e,t,r,s){(0,i.g)(0)}setFromPoints(e,t,r){let s=t.sub(e),i=r.sub(e);this.m_normal=s.crossProductVector(i);let n=!0;if(this.m_normal.isZero()){if(n=!1,s.isZero()&&(s=i),s.isZero())return this.m_normal.setCoords(0,0,1),this.m_axisX.setCoords(1,0,0),this.m_axisY.setCoords(0,1,0),this.m_origin=e,!1;this.m_axisX=s.getUnitVector(),this.m_normal=this.m_axisX.createAPerpendicular()}else this.m_normal.normalizeThis(),this.m_axisX=s.getUnitVector();return this.m_axisY=this.m_normal.crossProductVector(this.m_axisX),this.m_origin=e,n}getCoord(e,t){return(0,i.g)(0),{}}getCoord2D(e){return(0,i.g)(0),{}}getCoordX(e,t){return(0,i.g)(0),0}getCoordY(e,t){return(0,i.g)(0),0}getCoordZ(e,t){return(0,i.g)(0),0}setPreferredAxisX(e){(0,i.g)(0)}getOrigin(){return(0,i.g)(0),{}}getNormal(){return(0,i.g)(0),{}}getAxisX(){return this.m_axisX.clone()}getAxisY(){return this.m_axisY.clone()}setAxisX(e,t=!1){(0,i.g)(0)}setAxisY(e,t=!1){(0,i.g)(0)}recalculateAxisY(){(0,i.g)(0)}setOrigin(e){(0,i.g)(0)}setNormal(e,t){(0,i.g)(0)}intersect(e,t){return(0,i.g)(0),!1}intersectLine(e){return(0,i.g)(0),0}intersectLineEx(e,t){return(0,i.g)(0),0}closestCoordinate(e){let t=e.sub(this.m_origin),r=new l.P;return r.x=t.dotProduct(this.m_axisX),r.y=t.dotProduct(this.m_axisY),r}projectVector(e){return(0,i.g)(0),{}}signedDistance(e){return(0,i.g)(0),0}distance(e){return(0,i.g)(0),0}}function S(e,t){return!1}function C(e,t,r,s,n=100,a=S){(0,i.g)(s>0);let o,m,h,g,u,_,p,d,c,f,x,P,y=0,E=0,C=(0,l.a2)();t>r&&(r=(0,l.c)(t,t=r));let I=e(t),v=e(r);I<v?(o=m=h=t,g=u=_=I):(o=m=h=r,g=u=_=v);let G=0;for(;G<n&&(P=.5*(r-t),c=t+P,f=s*(Math.abs(o)+.25),x=2*f,!(a(o,g)||Math.abs(o-c)<=x-P));++G){if(Math.abs(E)>f){let e=(o-m)*(g-_),s=(o-h)*(g-u),i=(o-h)*s-(o-m)*e;s=2*(s-e),s>0&&(i=-i),s=Math.abs(s);let n=E;E=y,Math.abs(i)>=Math.abs(s*n*.5)||i<=s*(t-o)||i>=s*(r-o)?(E=o>=c?t-o:r-o,y=(0,l.a2)()*E):(y=i/s,d=o+y,(d-t<x||r-d<x)&&(y=c-o<0?-Math.abs(f):Math.abs(f)))}else E=o>=c?t-o:r-o,y=E*C;d=o+y,p=e(d),p<g?(d>=o?t=o:r=o,h=m,m=o,o=d,_=u,u=g,g=p):(d<o?t=d:r=d,p<=u||m===o?(h=m,m=d,_=u,u=p):(p<=_||h===o||h===m)&&(h=d,_=p))}return(0,l.o)(o,g)}function I(e,t,r){return e>r?e-=Math.ceil((e-r)/l.n)*l.n:e<t&&(e+=Math.ceil((t-e)/l.n)*l.n),e}function v(e,t,r){return function(e,t,r){let s=r.x,i=r.y;return G(e,t,Math.cos(s),Math.sin(s),Math.cos(i),Math.sin(i),0)}(e,t,r)}function G(e,t,r,s,i,n,a){let l=e/Math.sqrt(1-t*n*n),m=l+a,h=m*i*r,g=m*i*s,u=(l*(1-t)+a)*n;return o.k.construct(h,g,u)}function w(e,t,r){let s=new l.Z,i=new l.Z,n=new l.Z,a=new l.Z;s.setCos(r.x),i.setSin(r.x),n.setCos(r.y),a.setSin(r.y);let o=a.negate().mulE(a.mul(t)).add(1).sqrt(),m=new l.Z(e).divE(o),h=m.mulE(n).mulE(s),g=m.mulE(n).mulE(i),u=m.mul(1-t).mulE(a);return new y(h,g,u)}function b(e,t,r){let s=r.x,i=r.y,n=r.z,a=Math.atan2(i,s),o=Math.sqrt(s*s+i*i),m=Math.atan2(n,(1-t)*o);return l.P.construct(a,m)}function T(e,t,r){let s=1-t,i=e/Math.sqrt((0,l.a)(r.x)+(0,l.a)(r.y)+(0,l.a)(r.z)/s);return r.mul(i)}function N(e,t,r,s,i){let n=v(e,t,r),a=v(e,t,s);return b(0,t,o.k.lerp(n,a,i))}function D(e,t,r,n,a,m=0,h){if(2===m||3===m)return function(e,t,r,s,i,n=!1,a){let m=T(e,t,r);if(n){let n=new E({pt0:new o.k(0,0,0),pt1:s,pt2:i}),h=n.closestCoordinate(r),g=n.closestCoordinate(s),u=n.closestCoordinate(i),_=l.P.getClosestCoordinate(g,u,h),p=T(e,t,o.k.lerp(s,i,_)),d=o.k.distance(p,m);return a&&a.assign(p),(0,l.o)(_,d)}let h=r=>{let n=T(e,t,o.k.lerp(s,i,r));return o.k.distance(n,m)},g=o.k.distance(s,i);if(g>0){let{first:r,second:n}=C(h,0,1,A(e,g));return a&&a.assign(T(e,t,o.k.lerp(s,i,r))),(0,l.o)(r,n)}{let e=o.k.distance(r,s);return a&&a.assign(r),(0,l.o)(.5,e)}}(e,t,r,n,a,3===m,h);let g=b(0,t,r),u=r=>{let l=b(0,t,o.k.lerp(n,a,r));return function(e,t,r,n,a){switch((0,i.g)(r.isFinite()&&n.isFinite()),a){case 0:return function(e,t,r,i){let n={stack:[],error:void 0,hasError:!1};try{let a=(0,s.mS)(n,new Sa,!1);return Da.geodeticDistance(e,t,r.x,r.y,i.x,i.y,a,null,null,va.PE_LINETYPE_GEODESIC),a.val}catch(e){n.error=e,n.hasError=!0}finally{(0,s.hk)(n)}}(e,t,r,n);case 1:return function(e,t,r){let i={stack:[],error:void 0,hasError:!1};try{let n=(0,s.mS)(i,new Sa,!1);return Da.greatEllipticDistance(e,t,r.x,r.y,r.x,r.y,n,null,null),n.val}catch(e){i.error=e,i.hasError=!0}finally{(0,s.hk)(i)}}(e,t,r);case 2:case 3:{let s=v(e,t,r),i=v(e,t,n);return o.k.distance(s,i)}default:(0,i.t)("")}}(e,t,g,l,m)},_=o.k.distance(n,a);if(_>0){let{first:r,second:s}=C(u,0,1,A(e,_));return h&&h.assign(T(e,t,o.k.lerp(n,a,r))),(0,l.o)(r,s)}{let e=u(0);return h&&h.assign(n),(0,l.o)(.5,e)}}function V(e,t,r,s,i,n){if(n[0]=NaN,n[1]=NaN,Math.abs(r.x-s.x)>Math.PI||Math.abs(r.y)>l.l||Math.abs(s.y)>l.l||(Math.abs(r.y)===l.l||Math.abs(s.y)===l.l)&&r.x!==s.x||Math.abs(i)>=l.l||r.y>0&&s.y>0&&r.y>i&&s.y>i||r.y<0&&s.y<0&&r.y<i&&s.y<i)return 0;let o=a.Z.constructPoint2D(r),m=a.Z.constructPoint2D(s),h=w(1,t,o),g=w(1,t,m),u=h.crossProductVector(g);if(u.z.isZero())return l.E.construct(r.y,s.y).containsCoordinate(i)?(n[0]=r.x,1):0;let _=u.x.divE(u.z.negate()),p=u.y.divE(u.z.negate()),d=_.mulE(_).addE(p.mulE(p)).sqrt();if(d.isZero()||_.isZero()&&p.isZero())return 0===i?(n[0]=r.x,n[1]=s.x,2):0;let c=(1-t)*Math.tan(i)/d.value();if(Math.abs(c)>1)return 0;let f=Math.acos(c),x=Math.atan2(p.value(),_.value()),P=x-f,y=x+f,E=Math.min(r.x,s.x),S=Math.max(r.x,s.x);I(P,E,S),0===i?y=P:I(y,E,S);let C=0;return E<=P&&P<=S&&(n[C]=P,C++),y!==P&&E<=y&&y<=S&&(n[C]=y,C++),C}function k(e,t){t[0]>.5*Math.PI?(e[0]+=Math.PI,t[0]=Math.PI-t[0]):t[0]<.5*-Math.PI&&(e[0]-=Math.PI,t[0]=-Math.PI-t[0]),(0,i.g)(t[0]>=.5*-Math.PI&&t[0]<=.5*Math.PI)}function F(e,t,r,s,i){s=(0,l.s)(s,-l.l,l.l),i=(0,l.s)(i,-l.l,l.l);let n,a=l.l-.03;n=s>a&&i>a||s<-a&&i<-a?function(e,t,r){let s=1;if(t<0&&(s=-1,t=-t,r=-r),0!==e){let i=e*e,n=i*e,a=[1,(1+11*e)/12,(1+118*e+241*i)/360,(1+1089*e+10419*i+8651*n)/20160,(1+9836*e+318246*i+1027436*n+n*e*458881)/1814400],o=t=>{let r=0,s=(0,l.a)(t)/(e-1);for(let e=a.length-1;e>=0;--e)r=a[e]+r*s;return r*=-(0,l.a)(t/(1-e)),r},m=o(l.l-t);return(o(l.l-r)-m)*s}{let e=l.l-t,i=l.l-r,n=-4*(0,l.a)(Math.sin(e/2));return(-4*(0,l.a)(Math.sin(i/2))-n)*s}}(e,s,i):H(e,i)-H(e,s);let o=function(e){return 1-e}(e);return.5*(r-t)*n*o}function H(e,t){if(0===t)return 0;let r=Math.sin(t),s=r,i=r;return 0!==e&&(s/=1-e*r*r,i=r*(0,l.z)(Math.sqrt(e)*r)),s+i}function A(e,t){if(0!==t){let r=e*(0,l.a1)()/t;return Math.min(r,1e-10)}return 0}class M{m_parent;m_currentShift=63n;m_currentElt=0n;m_iCurrentElt=-1;m_aiSetElts;constructor(e){this.m_parent=e,this.m_aiSetElts=e.m_bits.flatMap((e,t)=>t)}next(){if(this.m_currentShift++,64n===this.m_currentShift){if(this.m_iCurrentElt++,this.m_iCurrentElt===this.m_aiSetElts.length)return M.npos();this.m_currentShift=0n,this.m_currentElt=this.m_parent.m_bits[this.m_aiSetElts[this.m_iCurrentElt]]}for(;this.m_currentShift<63n&&!(this.m_currentElt&1n<<this.m_currentShift);)this.m_currentShift++;return this.m_currentElt&1n<<this.m_currentShift?64*this.m_aiSetElts[this.m_iCurrentElt]+Number(this.m_currentShift):this.next()}static npos(){return 2**53-1}}function U(e){return 1n<<(63n&BigInt(e))}function q(e){return e>>6}class B{m_bits=[];constructor(e){void 0!==e&&e.copy&&(this.m_bits=e.copy.m_bits.slice())}assignMove(){return this}assignCopy(){return this}hasBit(e){let t=U(e),r=q(e);return void 0!==this.m_bits[r]&&!!(this.m_bits[r]&t)}setBit(e){let t=U(e),r=q(e);void 0===this.m_bits[r]&&(this.m_bits[r]=0n),this.m_bits[r]|=t}clearBit(e){}flipBit(e){let t=U(e),r=q(e);return void 0===this.m_bits[r]&&(this.m_bits[r]=0n),this.m_bits[r]^=t,0n!==(this.m_bits[r]&t)}clear(){this.m_bits.length=0}isZero(){let e=0;return this.m_bits.forEach(t=>{e|=t?2:1}),!(2&e)}equals(e){if(this===e)return!0;if(this.m_bits.length!==e.m_bits.length)return!1;let t=0;return this.m_bits.forEach((r,s)=>{t|=r===e.m_bits[s]?2:1}),!(1&t||(e.m_bits.forEach((e,r)=>{t|=e===this.m_bits[r]?2:1}),1&t))}notEquals(e){return!this.equals(e)}assignOr(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]|=e}),this}assignSubtract(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=~e)}),this}assignAnd(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=e)}),this}assignXor(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]^=e}),this}getHashCode(){return this.m_bits.reduce((e,t)=>(0,l.O)(e,t),(0,l.C)(0))}getUnorderedBitIterator(){return new M(this)}}class O{m_map=new Map;m_hf;m_ef;constructor(e,t){this.m_hf=e,this.m_ef=t}add(e){let t=this.m_hf(e);if(!this.m_map.has(t))return this.m_map.set(t,e),this;let r=this.m_map.get(t);return r instanceof Array?r.find(t=>this.m_ef(t,e))||r.push(e):this.m_ef(r,e)||this.m_map.set(t,[r,e]),this}clear(){this.m_map.clear()}delete(e){return!1}has(e){let t=this.m_hf(e);if(!this.m_map.has(t))return!1;let r=this.m_map.get(t);return r instanceof Array?void 0!==r.find(t=>this.m_ef(t,e)):this.m_ef(r,e)}get(e){let t=this.m_hf(e),r=this.m_map.get(t);if(void 0!==r)return r instanceof Array?r.find(t=>this.m_ef(t,e)):r}get size(){let e=0;for(let t of this.m_map.values())e+=t instanceof Array?t.length:1;return e}forEach(e,t){}[Symbol.iterator](){return(new Set)[Symbol.iterator]()}entries(){return(new Set).entries()}keys(){return(new Set).keys()}values(){return(new Set).values()}get[Symbol.toStringTag](){return"ValueSet"}}class Y extends o.F{m_helper;m_bufferLeft=new a.S;m_bufferRight=new a.S;m_intervalLeft=l.E.constructEmpty();m_intervalRight=l.E.constructEmpty();m_yScanline=NaN;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=t,i=e.getElement(r);this.m_helper.querySegmentXY(s,this.m_bufferLeft),this.m_helper.querySegmentXY(i,this.m_bufferRight);let n=this.m_bufferLeft.get(),a=this.m_bufferRight.get();if(this.m_intervalLeft.setCoords(n.getStartX(),n.getEndX()),this.m_intervalRight.setCoords(a.getStartX(),a.getEndX()),this.m_intervalLeft.vmax<this.m_intervalRight.vmin)return-1;if(this.m_intervalLeft.vmin>this.m_intervalRight.vmax)return 1;let o=n.getStartY()===n.getEndY(),l=a.getStartY()===a.getEndY();if(o||l){if(o&&l)return 0;if(n.getStartY()===a.getStartY()&&n.getStartX()===a.getStartX())return o?1:-1;if(n.getEndY()===a.getEndY()&&n.getEndX()===a.getEndX())return o?-1:1}let m=n.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalLeft.vmin),h=a.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalRight.vmin);if(m===h){let e=n.getEndY(),t=a.getEndY(),r=Math.min(e,t),s=.5*(r+this.m_yScanline);s===this.m_yScanline&&(s=r),m=n.intersectionOfYMonotonicWithAxisX(s,this.m_intervalLeft.vmin),h=a.intersectionOfYMonotonicWithAxisX(s,this.m_intervalRight.vmin)}return m<h?-1:+(m>h)}setY(e){this.m_yScanline=e}}class X{m_parent;m_segmentBuffer=new a.S;m_point=l.P.getNAN();constructor(e){this.m_parent=e}setPointXY(e){this.m_point.assign(e)}compare(e,t){let r=e.getElement(t);this.m_parent.querySegmentXY(r,this.m_segmentBuffer);let s=this.m_segmentBuffer.get(),i=new l.E;if(i.setCoords(s.getStartX(),s.getEndX()),this.m_point.x<i.vmin)return-1;if(this.m_point.x>i.vmax)return 1;let n=s.intersectionOfYMonotonicWithAxisX(this.m_point.y,this.m_point.x);return this.m_point.x<n?-1:+(this.m_point.x>n)}}var R,L,z;function W(e,t){return{parentage:e,rank:t}}function j(e,t){let r=e.length;if(r!==t.length)return!1;let s=e[0].parentage;if(s!==t[0].parentage)return!1;if(-1===s)return!0;for(let s=1;s<r;++s)if(e[s].parentage!==t[s].parentage)return!1;return!0}function Z(e,t,r){r.length=0;let s=!1;{let i=e.getHalfEdgeVertexIterator(t);for(;-1!==i;){let t=e.getVertexFromVertexIterator(i),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);s||=a>=0,r.push(W(a,n)),i=e.incrementVertexIterator(i)}}{let i=e.getHalfEdgeVertexIterator(e.getHalfEdgeTwin(t));for(;-1!==i;){let t=e.getVertexFromVertexIterator(i),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);s||=a>=0,r.push(W(a,n)),i=e.incrementVertexIterator(i)}}s&&r.sort((e,t)=>e.rank>t.rank?-1:e.rank<t.rank?1:e.parentage<t.parentage?-1:+(e.parentage>t.parentage)),-1===r[0].parentage&&(r.length=1)}(L=R||={})[L.enumInputModeBuildGraph=0]="enumInputModeBuildGraph",L[L.enumInputModeSimplifyAlternate=1]="enumInputModeSimplifyAlternate",L[L.enumInputModeSimplifyWinding=2]="enumInputModeSimplifyWinding",function(e){e[e.enumSegmentParentageBreakNode=1]="enumSegmentParentageBreakNode",e[e.enumPathBreakNode=2]="enumPathBreakNode"}(z||={});class K{m_shape=null;m_clusterData=new o.S(8);m_clusterVertices=new o.S(2);m_firstCluster=-1;m_lastCluster=-1;m_halfEdgeData=new o.S(8);m_chainData=new o.S(8);m_chainAreas=null;m_chainPerimeters=null;static c_EdgeParentageMask=2147483647;static c_EdgeBitMask=1<<31;m_universeChain=-1;m_simplifiedGeometry=-1;m_edgeIndices=[];m_clusterIndices=[];m_chainIndices=[];m_bBuildGeometryParentageSets=!1;m_chainBitSetIndex=-1;m_edgeBitSetIndex=-1;m_edgeBitSetIndexLeft=-1;m_emptyBitSet=null;m_geometryMapID=null;m_uniqueBitSets=null;m_chainBitSets=[];m_edgeBitSets=[];m_checkDirtyPlanesweepTolerance=NaN;m_geometryIDIndex=-1;m_clusterIndex=-1;m_halfEdgeIndex=-1;m_tmpHalfEdgeParentageIndex=-1;m_tmpHalfEdgeParentageIndexLeft=-1;m_tmpHalfEdgeWindingNumberIndex=-1;m_tmpHalfEdgeOddEvenNumberIndex=-1;m_segmentParentageIndex=-1;m_segmentIndexHe=-1;m_clusterBreakNodeIndex=-1;m_universeGeomID=-1;m_pointCount=0;m_progressCounter=0;m_bBuildChains=!0;m_bDirtyCheckFailed=!1;constructor(){}setCheckDirtyPlanesweepTolerance(e){this.m_checkDirtyPlanesweepTolerance=e}dirtyCheckFailed(){return this.m_bDirtyCheckFailed}getShape(){return this.m_shape}setEditShape(e,t,r=!0,s=!1){s?this.setEditShapeImpl3D_(e,R.enumInputModeBuildGraph,null,t,!1):this.setEditShapeImpl_(e,R.enumInputModeBuildGraph,null,t,r)}setAndSimplifyEditShapeAlternate(e,t,r=null,s=!1){let n=[];n.push(t),this.m_simplifiedGeometry=t,s?this.setEditShapeImpl3D_(e,R.enumInputModeSimplifyAlternate,n,r,!1):this.setEditShapeImpl_(e,R.enumInputModeSimplifyAlternate,n,r,e.getGeometryType(t)===i.G.enumPolygon)}setAndSimplifyEditShapeWinding(e,t,r=null){let s=[];s.push(t),this.m_simplifiedGeometry=t,this.setEditShapeImpl_(e,R.enumInputModeSimplifyWinding,s,r,!0)}removeShape(){null!==this.m_shape&&(-1!==this.m_geometryIDIndex&&(this.m_shape.removeGeometryUserIndex(this.m_geometryIDIndex),this.m_geometryIDIndex=-1),-1!==this.m_clusterIndex&&(this.m_shape.removeUserIndex(this.m_clusterIndex),this.m_clusterIndex=-1),-1!==this.m_halfEdgeIndex&&(this.m_shape.removeUserIndex(this.m_halfEdgeIndex),this.m_halfEdgeIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1),-1!==this.m_segmentParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_segmentParentageIndex),this.m_segmentParentageIndex=-1),-1!==this.m_segmentIndexHe&&(this.deleteUserIndexForHalfEdges(this.m_segmentIndexHe),this.m_segmentIndexHe=-1),-1!==this.m_clusterBreakNodeIndex&&(this.deleteUserIndexForClusters(this.m_clusterBreakNodeIndex),this.m_clusterBreakNodeIndex=-1),this.deleteEdgeBitSets_(),this.deleteChainBitSets_(),this.m_emptyBitSet=null,this.m_geometryMapID=null,this.m_shape=null,this.m_clusterData.deleteAll(!0),this.m_clusterVertices.deleteAll(!0),this.m_firstCluster=-1,this.m_lastCluster=-1,this.m_halfEdgeData.deleteAll(!0),this.m_edgeIndices.length=0,this.m_clusterIndices.length=0,this.m_chainIndices.length=0,this.m_chainData.deleteAll(!0),this.m_universeChain=-1,this.m_chainAreas=null)}getClusterHalfEdge(e){return this.m_clusterData.getField(e,2)}queryXY(e,t){let r=this.getClusterVertexIndex_(e);t.assign(this.m_shape.getXYWithIndex(r))}queryXYZ(e,t){(0,i.g)(0)}getClusterParentage(e){return this.m_clusterData.getField(e,1)}getFirstCluster(){return this.m_firstCluster}getPrevCluster(e){return this.m_clusterData.getField(e,3)}getNextCluster(e){return this.m_clusterData.getField(e,4)}getClusterChain(e){return this.m_clusterData.getField(e,6)}getClusterVertexIterator(e){return this.m_clusterData.getField(e,7)}incrementVertexIterator(e){return this.m_clusterVertices.getField(e,1)}getVertexFromVertexIterator(e){return this.m_clusterVertices.getField(e,0)}getClusterUserIndex(e,t){let r=this.getClusterIndex_(e),s=this.m_clusterIndices[t];return s.size()<=r?-1:s.read(r)}setClusterUserIndex(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1),i.write(s,r)}hasClusterUserIndexFlags(e,t,r){if(-1===t)return!1;let s=this.getClusterUserIndex(e,t);return-1!==s&&0!==(r&s)}setClusterUserIndexFlags(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1);let n=i.read(s);-1===n&&(n=0),i.write(s,r|n)}clearClusterUserIndexFlags(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1);let n=i.read(s);-1===n&&(n=0),i.write(s,~r&n)}createUserIndexForClusters(e=-1){let t=new o.a(this.m_clusterData.capacity(),e);for(let e=0,r=this.m_clusterIndices.length;e<r;e++)if(null===this.m_clusterIndices[e])return this.m_clusterIndices[e]=t,e;return this.m_clusterIndices.push(t),this.m_clusterIndices.length-1}deleteUserIndexForClusters(e){this.m_clusterIndices[e]=null}getHalfEdgeOrigin(e){return this.m_halfEdgeData.getField(e,1)}getHalfEdgeTo(e){return this.getHalfEdgeOrigin(this.getHalfEdgeTwin(e))}getHalfEdgeTwin(e){return this.m_halfEdgeData.getField(e,4)}getHalfEdgePrev(e){return this.m_halfEdgeData.getField(e,5)}getHalfEdgeNext(e){return this.m_halfEdgeData.getField(e,6)}getHalfEdgeChain(e){return this.m_halfEdgeData.getField(e,2)}getHalfEdgeFaceParentage(e){return this.getChainParentage(this.getHalfEdgeChain(e))}getHalfEdgeVertexIterator(e){return this.m_halfEdgeData.getField(e,7)}getHalfEdgeFromXY(e,t){this.queryXY(this.getHalfEdgeOrigin(e),t)}getHalfEdgeToXY(e,t){this.queryXY(this.getHalfEdgeTo(e),t)}isHalfEdgeCurve(e){return-1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}getHalfEdgeFromXYZ(e,t){(0,i.g)(0)}getHalfEdgeToXYZ(e,t){(0,i.g)(0)}getHalfEdgeParentage(e){return this.m_halfEdgeData.getField(e,3)&K.c_EdgeParentageMask}getHalfEdgeUserIndex(e,t){let r=this.getHalfEdgeIndex_(e),s=this.m_edgeIndices[t];return s.size()<=r?-1:s.read(r)}setHalfEdgeUserIndex(e,t,r){let s=this.getHalfEdgeIndex_(e),i=this.m_edgeIndices[t];i.size()<=s&&i.resize(this.m_halfEdgeData.size(),-1),i.write(s,r)}createUserIndexForHalfEdges(e){void 0===e&&(e=-1);let t=new o.a(this.m_halfEdgeData.capacity(),e);for(let e=0,r=this.m_edgeIndices.length;e<r;e++)if(null===this.m_edgeIndices[e])return this.m_edgeIndices[e]=t,e;this.m_edgeIndices.push(t);let r=this.m_edgeIndices.length-1;return(0,i.g)(r>=0&&r<=2**53-1),r}deleteUserIndexForHalfEdges(e){this.m_edgeIndices[e]=null}deleteEdgesBreakFaces_(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.getHalfEdgeChain(r),i=this.getHalfEdgeTwin(r),n=this.getHalfEdgeChain(i);this.setChainHalfEdge_(s,-1),this.setChainHalfEdge_(n,-1),this.updateVertexToHalfEdgeConnection_(r,!0),this.deleteEdgeImpl_(r)}}doesHalfEdgeBelongToAPolygonInterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolygonExterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolygonBoundary(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolylineInterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolylineExterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonInterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonExterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonBoundary(e,t){return(0,i.g)(0),!1}getFirstChain(){return this.m_universeChain}getChainHalfEdge(e){return this.m_chainData.getField(e,1)}getChainParentage(e){return this.m_chainData.getField(e,2)}getChainParent(e){return this.m_chainData.getField(e,3)}getChainFirstIsland(e){return this.m_chainData.getField(e,4)}getChainNextInParent(e){return this.m_chainData.getField(e,5)}getChainNext(e){return this.m_chainData.getField(e,7)}getChainArea(e){let t=this.getChainIndex_(e),r=this.m_chainAreas.read(t);return Number.isNaN(r)&&(this.updateChainAreaAndPerimeter_(e),r=this.m_chainAreas.read(t)),r}getChainPerimeter(e){return(0,i.g)(0),0}getChainUserIndex(e,t){let r=this.getChainIndex_(e),s=this.m_chainIndices[t];return s.size()<=r?-1:s.read(r)}setChainUserIndex(e,t,r){let s=this.getChainIndex_(e),i=this.m_chainIndices[t];i.size()<=s&&i.resize(this.m_chainData.size(),-1),i.write(s,r)}createUserIndexForChains(){let e=new o.a(this.m_chainData.capacity(),-1);for(let t=0,r=this.m_chainIndices.length;t<r;t++)if(null===this.m_chainIndices[t])return this.m_chainIndices[t]=e,t;return this.m_chainIndices.push(e),this.m_chainIndices.length-1}deleteUserIndexForChains(e){this.m_chainIndices[e]=null}extractPolygonFromChainAndIslands(e,t,r,s){let n=-1===t?e.createGeometry(i.G.enumPolygon):t,o=new a.S;this.extractPolygonPathFromChain_(e,n,r,s,o);for(let t=this.getChainFirstIsland(r);-1!==t;t=this.getChainNextInParent(t))this.extractPolygonPathFromChain_(e,n,t,s,o);return n}getGeometryID(e){let t=this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex);return(0,i.g)(t>=0),1<<Math.min(t,31)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_clusterIndex)}getHalfEdgeFromVertex(e){return this.m_shape.getUserIndex(e,this.m_halfEdgeIndex)}buildGeometryParentageSets(){this.m_bBuildGeometryParentageSets=!0}getChainBitSet(e){if((0,i.g)(this.m_bBuildGeometryParentageSets),-1===this.m_chainBitSetIndex)return this.getEmptySet();let t=this.getChainUserIndex(e,this.m_chainBitSetIndex);(0,i.g)(t>=0);let r=this.m_chainBitSets.at(t);return r||=this.getEmptySet(),r}getChainBoundaryBitSet(e){(0,i.g)(this.m_bBuildGeometryParentageSets);let t=new B,r=e=>{let r=this.getChainHalfEdge(e),s=r;do{let e=this.getEdgeBitSet_(s);null!==e&&t.assignOr(e);let r=this.getEdgeBitSet_(this.getHalfEdgeTwin(s));null!==r&&t.assignOr(r),s=this.getHalfEdgeNext(s)}while(s!==r)};r(e);for(let t=this.getChainFirstIsland(e);-1!==t;t=this.getChainNextInParent(t))r(e);return t}getChainPolygons(e){return(0,i.g)(0),[]}getGeometriesFromBits(e){if(!this.m_bBuildGeometryParentageSets||null===e)return[];if(null===this.m_geometryMapID){this.m_geometryMapID=new Map;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))this.m_geometryMapID.set(this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex),e)}let t=[],r=e.getUnorderedBitIterator();for(let e=r.next();e!==M.npos();e=r.next())(0,i.g)(this.m_geometryMapID.has(e)),t.push(this.m_geometryMapID.get(e));return t}getVertexDominant(e,t){if(-1===t)return e;let r=this.getClusterFromVertex(e);return this.getVertexDominantFromCluster(r,t)}getVertexDominantFromCluster(e,t){if(-1!==t){let r=-1;for(let s=this.getClusterVertexIterator(e);-1!==s;s=this.incrementVertexIterator(s)){let e=this.getVertexFromVertexIterator(s);-1===r&&(r=e);let i=this.m_shape.getPathFromVertex(e);if(this.m_shape.getGeometryFromPath(i)===t){r=e;break}}return r}{let t=this.getClusterVertexIterator(e);return-1===t?-1:this.getVertexFromVertexIterator(t)}}isBreakNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode)}setBreakNode(e,t){(0,i.g)(-1!==this.m_clusterBreakNodeIndex),t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode)}isStrongPathNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode)}setStrongPathNode(e,t){if(-1===this.m_clusterBreakNodeIndex){if(!t)return;this.m_clusterBreakNodeIndex=this.createUserIndexForClusters()}t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode)}getSegmentParentage(e){if(-1===this.m_segmentParentageIndex)return-1;let t=this.getHalfEdgeUserIndex(e,this.m_segmentParentageIndex);return t>=0?t:-1}isCrossroadAhead(e){let t=this.getHalfEdgeNext(e);if(this.isStrongPathNode(this.getHalfEdgeOrigin(t)))return!0;let r=this.getHalfEdgeTwin(t),s=this.getHalfEdgeNext(r);return e!==this.getHalfEdgeTwin(s)}isCrossroadBehind(e){return(0,i.g)(0),!1}getHalfEdgeConnector(e,t){let r=this.getClusterHalfEdge(e);if(-1===r)return-1;let s=r,i=-1,n=-1;do{if(this.getHalfEdgeTo(s)===t)return s;if(-1===i){if(i=this.getClusterHalfEdge(t),-1===i)return-1;n=i}if(this.getHalfEdgeTo(n)===e)return s=this.getHalfEdgeTwin(n),s;s=this.getHalfEdgeNext(this.getHalfEdgeTwin(s)),n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(s!==r&&n!==i);return-1}querySegmentXY(e,t){if(-1!==this.m_segmentIndexHe){let r=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==r){if(-2!==r){let e=this.m_shape.getSegmentFromIndex(r);t.copyFrom(e,!0)}else{r=this.getHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe);let s=this.m_shape.getSegmentFromIndex(r);t.copyFrom(s,!0),t.get().reverse()}return}}t.createLine();let r=t.get(),s=l.P.getNAN();this.getHalfEdgeFromXY(e,s),r.setStartXY(s),this.getHalfEdgeToXY(e,s),r.setEndXY(s)}isCurveEdge(e){return-1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}compareEdgeAnglesCurveHelper_(e,t,r){let s=new a.S,n=new a.S;this.querySegmentXY(e,s),this.querySegmentXY(t,n);let o=s.get(),m=n.get();if(o.equals(m))return 0;let h=new l.P;this.getHalfEdgeFromXY(e,h);let g=new l.P;this.getHalfEdgeToXY(e,g);let u=new l.P;return this.getHalfEdgeToXY(t,u),(0,i.g)(!g.isEqualPoint2D(u)),(0,a.O)(o,m)}compareEdgeAnglesHelper_(e,t,r){if(e===t)return 0;if(this.isHalfEdgeCurve(e)||this.isHalfEdgeCurve(t))return this.compareEdgeAnglesCurveHelper_(e,t,r);let s=l.P.getNAN();this.getHalfEdgeToXY(e,s);let i=l.P.getNAN();if(this.getHalfEdgeToXY(t,i),s.isEqualPoint2D(i))return 0;let n=l.P.getNAN();this.getHalfEdgeFromXY(e,n);let a=l.P.getNAN();a.setSub(s,n);let o=l.P.getNAN();return o.setSub(i,n),!r||o.y>=0&&a.y>0?l.P.compareVectors(a,o):0}compareEdgeAngles_(e,t){return this.compareEdgeAnglesHelper_(e,t,!1)}compareEdgeAnglesForPair_(e,t){return this.compareEdgeAnglesHelper_(e,t,!0)}compareEdgeAngles3D_(e,t){return(0,i.g)(0),0}compareEdgeAnglesForPair3D_(e,t){return(0,i.g)(0),0}dbgDumpChains_(){}dbgDumpChainToPolygon_(e,t){}deleteEdgeInternal_(e){let t=this.getHalfEdgeChain(e),r=this.getHalfEdgeTwin(e),s=this.getHalfEdgeChain(r);(0,i.g)(s===t),(0,i.g)(e===this.getHalfEdgeNext(r)||r===this.getHalfEdgeNext(e));let n=this.getHalfEdgeNext(e);n===r&&(n=this.getHalfEdgeNext(n),n===e&&(n=-1));let a=this.getChainIndex_(t),o=this.m_chainAreas.read(a);Number.isNaN(o)||(this.setChainArea_(t,NaN),this.setChainPerimeter_(t,NaN));let l=this.getChainHalfEdge(t);(l===e||l===r)&&this.setChainHalfEdge_(t,n),this.updateVertexToHalfEdgeConnection_(e,!0),this.deleteEdgeImpl_(e)}getFirstUnvisitedHalfEdgeOnCluster_(e,t,r){let s=-1===t?this.getClusterHalfEdge(e):t;if(-1===s)return-1;let i=s;for(;;){if(1!==this.getHalfEdgeUserIndex(s,r))return s;let e=this.getHalfEdgeNext(this.getHalfEdgeTwin(s));if(e===i)return-1;s=e}}removeSpikes_(){let e=!1,t=this.createUserIndexForHalfEdges();for(let r=this.getFirstCluster();-1!==r;r=this.getNextCluster(r)){let s=-1;for(;;){let i=this.getFirstUnvisitedHalfEdgeOnCluster_(r,s,t);if(-1===i)break;s=this.getHalfEdgeNext(this.getHalfEdgeTwin(i));let n=i;for(;;){let r=this.getHalfEdgeNext(n),a=this.getHalfEdgePrev(n),o=this.getHalfEdgeTwin(n);if(a===o){if(this.deleteEdgeInternal_(n),e=!0,(s===n||s===o)&&(s=-1),n===i||a===i){if(i=r,n===i||a===i)break;n=r;continue}}else this.setHalfEdgeUserIndex(n,t,1);if(n=r,n===i)break}}}return this.deleteUserIndexForHalfEdges(t),e}progress_(e,t=!1){}newCluster_(){let e=this.m_clusterData.newElement();return this.m_clusterData.setField(e,1,0),e}newHalfEdgePair_(){let e=this.m_halfEdgeData.newElement();this.m_halfEdgeData.setField(e,2,0),this.m_halfEdgeData.setField(e,3,0);let t=this.m_halfEdgeData.newElement();return this.m_halfEdgeData.setField(t,2,0),this.m_halfEdgeData.setField(t,3,0),this.setHalfEdgeTwin_(e,t),this.setHalfEdgeTwin_(t,e),e}newChain_(){let e=this.m_chainData.newElement();return this.m_chainData.setField(e,2,0),e}deleteChain_(e){return(0,i.g)(0),0}getClusterIndex_(e){return this.m_clusterData.elementToIndex(e)}setClusterVertexIterator_(e,t){this.m_clusterData.setField(e,7,t)}setClusterHalfEdge_(e,t){this.m_clusterData.setField(e,2,t)}setClusterParentage_(e,t){this.m_clusterData.setField(e,1,t)}setPrevCluster_(e,t){this.m_clusterData.setField(e,3,t)}setNextCluster_(e,t){this.m_clusterData.setField(e,4,t)}setClusterVertexIndex_(e,t){this.m_clusterData.setField(e,5,t)}getClusterVertexIndex_(e){return this.m_clusterData.getField(e,5)}setClusterChain_(e,t){this.m_clusterData.setField(e,6,t)}addClusterToExteriorChain_(e,t){this.setClusterChain_(t,e)}getHalfEdgeIndex_(e){return this.m_halfEdgeData.elementToIndex(e)}setHalfEdgeOrigin_(e,t){this.m_halfEdgeData.setField(e,1,t)}setHalfEdgeTwin_(e,t){this.m_halfEdgeData.setField(e,4,t)}setHalfEdgePrev_(e,t){this.m_halfEdgeData.setField(e,5,t)}setHalfEdgeNext_(e,t){this.m_halfEdgeData.setField(e,6,t)}setHalfEdgeChain_(e,t){this.m_halfEdgeData.setField(e,2,t)}setHalfEdgeParentage_(e,t){this.m_halfEdgeData.setField(e,3,t)}getHalfEdgeParentageMask_(e){return this.m_halfEdgeData.getField(e,3)}setHalfEdgeVertexIterator_(e,t){this.m_halfEdgeData.setField(e,7,t)}updateVertexToHalfEdgeConnectionHelper_(e,t){let r=t?-1:e;for(let t=this.getHalfEdgeVertexIterator(e);-1!==t;t=this.incrementVertexIterator(t)){let e=this.getVertexFromVertexIterator(t);this.m_shape.setUserIndex(e,this.m_halfEdgeIndex,r)}}updateVertexToHalfEdgeConnection_(e,t){-1!==e&&(this.updateVertexToHalfEdgeConnectionHelper_(e,t),this.updateVertexToHalfEdgeConnectionHelper_(this.getHalfEdgeTwin(e),t))}getChainIndex_(e){return this.m_chainData.elementToIndex(e)}setChainHalfEdge_(e,t){this.m_chainData.setField(e,1,t)}setChainParentage_(e,t){this.m_chainData.setField(e,2,t)}setChainParent_(e,t){this.m_chainData.setField(e,3,t);let r=this.getChainFirstIsland(t);this.setChainNextInParent_(e,r),this.setChainFirstIsland_(t,e)}setChainFirstIsland_(e,t){this.m_chainData.setField(e,4,t)}setChainNextInParent_(e,t){this.m_chainData.setField(e,5,t)}setChainPrev_(e,t){this.m_chainData.setField(e,6,t)}setChainNext_(e,t){this.m_chainData.setField(e,7,t)}setChainArea_(e,t){let r=this.getChainIndex_(e);this.m_chainAreas.write(r,t)}setChainPerimeter_(e,t){let r=this.getChainIndex_(e);this.m_chainPerimeters.write(r,t)}updateChainAreaAndPerimeter_(e){let t=this.m_shape.hasCurves(),r=new l.K(0),s=new l.K(0),i=this.getChainHalfEdge(e),n=l.P.getNAN(),o=l.P.getNAN(),m=l.P.getNAN();this.getHalfEdgeFromXY(i,n),o.setCoordsPoint2D(n);let h=i;do{this.getHalfEdgeToXY(h,m),(!t||!this.isCurveEdge(h))&&s.pe(l.P.distance(o,m)),this.getHalfEdgeChain(this.getHalfEdgeTwin(h))!==e&&r.pe((m.x-n.x-(o.x-n.x))*(m.y-n.y+(o.y-n.y))*.5),o.setCoordsPoint2D(m),h=this.getHalfEdgeNext(h)}while(h!==i);if(t){let t=new a.S;h=i;do{this.getHalfEdgeToXY(h,m);let i=this.isCurveEdge(h);if(i&&(this.querySegmentXY(h,t),s.pe(t.get().calculateLength2D())),this.getHalfEdgeChain(this.getHalfEdgeTwin(h))!==e&&i){let e=t.get().calculateArea2DHelper();r.pe(e)}h=this.getHalfEdgeNext(h)}while(h!==i)}let g=this.getChainIndex_(e);this.m_chainAreas.write(g,r.getResult()),this.m_chainPerimeters.write(g,s.getResult())}getChainTopmostEdge_(e){return(0,i.g)(0),0}planeSweepParentage_(e,t){let r=new Y(this),s=new o.T;s.setCapacity(Math.trunc(this.m_pointCount/2)),s.setComparator(r);let i=[],n=this.createUserIndexForHalfEdges(),a=null,m=l.P.getNAN();for(let l=this.getFirstCluster();-1!==l;l=this.getNextCluster(l)){this.progress_(t);let h=this.getClusterHalfEdge(l);if(-1!==h){if(i.length=0,!this.tryOptimizedInsertion_(s,n,i,l,h)){this.queryXY(l,m),r.setY(m.y);let e=h;do{let t=this.getHalfEdgeUserIndex(e,n);-1!==t&&(s.deleteNode(t),this.setHalfEdgeUserIndex(e,n,o.S.impossibleIndex2())),e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e);e=h;do{if(-1===this.getHalfEdgeUserIndex(e,n)){let t=s.addElement(e);i.push(t)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e)}for(let t=i.length-1;t>=0;t--){let r=i[t],a=s.getElement(r),o=this.getHalfEdgeTwin(a);this.setHalfEdgeUserIndex(o,n,r),this.planeSweepParentagePropagateParentage_(s,r,e)}}else if(-1===this.getClusterChain(l)){null===a&&(a=new X(this)),this.queryXY(l,m),a.setPointXY(m);let e=s.searchLowerBound(a),t=this.m_universeChain;if(-1!==e){let r=s.getElement(e);this.getHalfEdgeChain(r)===this.getHalfEdgeChain(this.getHalfEdgeTwin(r))&&(r=this.getLeftSkipPolylines_(s,e)),-1!==r&&(t=this.getHalfEdgeChain(r))}this.addClusterToExteriorChain_(t,l)}}this.deleteUserIndexForHalfEdges(n)}planeSweepParentagePropagateParentage_(e,t,r){let s=e.getElement(t),n=this.getHalfEdgeChain(s);if(-1!==this.getChainParent(n))return;let a=this.getLeftSkipPolylines_(e,t),o=this.getHalfEdgeTwin(s),l=this.getHalfEdgeChain(o),m=this.getChainParent(n),h=this.getChainParent(l);if(-1===a)-1===m&&(l===n?(this.setChainParent_(l,this.m_universeChain),h=this.m_universeChain,m=h):(-1===h&&(this.setChainParent_(l,this.m_universeChain),h=this.m_universeChain),this.setChainParent_(n,l),m=l));else{let e=this.getHalfEdgeChain(a);if(-1===h){if(this.getChainArea(e)<=0){let t=this.getChainParent(e);this.setChainParent_(l,t),h=t}else this.setChainParent_(l,e),h=e;l===n&&(m=h)}}-1===m&&(this.trySetChainParentFromTwin_(n,l),m=this.getChainParent(n)),(0,i.g)(-1!==m),r===R.enumInputModeBuildGraph?this.propagateParentageBuildGraph_(e,t,s,a):r===R.enumInputModeSimplifyWinding?this.propagateParentageWinding_(e,t,s,a,o,n,l):r===R.enumInputModeSimplifyAlternate&&this.propagateParentageAlternate_(e,t,s,a,o,n,l)}propagateParentageBuildGraph_(e,t,r,s){let i,n=t;-1===s?(n=e.getNext(n),i=this.getHalfEdgeChain(r)):i=this.getHalfEdgeChain(s);let a=null,o=this.getChainParentage(i);for(this.m_bBuildGeometryParentageSets&&(a=this.getChainBitSet(i));-1!==n;n=e.getNext(n)){let t=e.getElement(n),r=this.getHalfEdgeTwin(t);i=this.getHalfEdgeChain(t);let s=this.getHalfEdgeChain(r);if(this.m_bBuildGeometryParentageSets){let e=this.getChainBitSet(s);e=new B({copy:e}),e.assignOr(a),this.setChainBitSet_(s,e);let r=this.getChainBitSet(i),n=this.getLeftEdgeBitSet_(t),o=new B({copy:a});if(o.assignSubtract(n),o.isZero())break;r=new B({copy:r}),r.assignOr(o),this.setChainBitSet_(i,r),a=r}let l=this.getChainParentage(s),m=l|o;m!==l&&this.setChainParentage_(s,m);let h=this.getChainParentage(i),g=o&~this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeParentageIndexLeft);if(g&&(h|=g,this.setChainParentage_(i,h)),0===g)break;o=h}}propagateParentageWinding_(e,t,r,s,n,a,o){if(a===o)return;let l=this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeWindingNumberIndex);l+=this.getHalfEdgeUserIndex(n,this.m_tmpHalfEdgeWindingNumberIndex);let m=0,h=[],g=[];g.push(0);for(let r=e.getFirst();r!==t;r=e.getNext(r)){let t=e.getElement(r),s=this.getHalfEdgeTwin(t),n=this.getHalfEdgeChain(t),a=this.getHalfEdgeChain(s);if(n!==a){let e=this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeWindingNumberIndex);e+=this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeWindingNumberIndex),m+=e;let r=!1;0!==h.length&&h.at(-1)===a&&(g.pop(),h.pop(),r=!0),(0,i.g)(-1!==this.getChainParent(a)),(!r||this.getChainParent(a)!==n)&&(g.push(m),h.push(n))}}if(m+=l,0!==h.length&&h.at(-1)===o&&(g.pop(),h.pop()),0!==m){if(0===g.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(a,t)}}else if(0!==g.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(a,t)}}propagateParentageAlternate_(e,t,r,s,i,n,a){let o=this.m_simplifiedGeometry,l=this.getGeometryID(o);if(-1===s)this.setChainParentage_(a,this.m_universeGeomID),1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,l):this.setChainParentage_(n,this.m_universeGeomID);else{let e=this.getChainParentage(a);if(0===e){let e=this.getHalfEdgeChain(s),t=this.getChainParentage(e);this.setChainParentage_(a,t),1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,t===l?this.m_universeGeomID:l):this.setChainParentage_(n,t)}else 1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,e===l?this.m_universeGeomID:l):this.setChainParentage_(n,e)}}tryOptimizedInsertion_(e,t,r,s,i){let n=i,a=-1,l=-1,m=0;do{if(2===m)return!1;let e=this.getHalfEdgeUserIndex(n,t);if(-1!==e){if(-1!==a)return!1;a=e}else{if(-1!==l)return!1;l=n}m++,n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(i!==n);return-1!==l&&-1!==a&&(this.setHalfEdgeUserIndex(e.getElement(a),t,o.S.impossibleIndex2()),e.setElement(a,l),r.push(a),!0)}trySetChainParentFromTwin_(e,t){let r=this.getChainArea(e);if(0===r)return!1;let s=this.getChainArea(t);if(r>0&&s<0||r<0&&s>0)return this.setChainParent_(e,t),!0;{let r=this.getChainParent(t);if(-1!==r)return this.setChainParent_(e,r),!0}return!1}createHalfEdges_(e,t){this.m_halfEdgeIndex=this.m_shape.createUserIndex();for(let r=0,s=t.size();r<s;r++){let s=t.read(r),n=this.m_shape.getUserIndex(s,this.m_clusterIndex),a=this.m_shape.getPathFromVertex(s),o=this.m_shape.getGeometryFromPath(a),l=this.m_shape.getGeometryType(o);if((0,i.j)(l)){let t=this.m_shape.getNextVertex(s);if(-1===t)continue;let r=this.m_shape.getUserIndex(t,this.m_clusterIndex);if(n===r)continue;let a=this.newHalfEdgePair_(),m=this.getHalfEdgeTwin(a),h=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(h,0,s),this.m_clusterVertices.setField(h,1,-1),this.setHalfEdgeVertexIterator_(a,h),this.m_shape.setUserIndex(s,this.m_halfEdgeIndex,a),this.setHalfEdgeOrigin_(a,n);let g=this.getClusterHalfEdge(n);if(-1===g)this.setClusterHalfEdge_(n,a),this.setHalfEdgePrev_(a,m),this.setHalfEdgeNext_(m,a);else{let e=this.getHalfEdgePrev(g);this.setHalfEdgePrev_(g,m),this.setHalfEdgeNext_(m,g),this.setHalfEdgeNext_(e,a),this.setHalfEdgePrev_(a,e)}this.setHalfEdgeOrigin_(m,r);let u=this.getClusterHalfEdge(r);if(-1===u)this.setClusterHalfEdge_(r,m),this.setHalfEdgeNext_(a,m),this.setHalfEdgePrev_(m,a);else{let e=this.getHalfEdgePrev(u);this.setHalfEdgePrev_(u,a),this.setHalfEdgeNext_(a,u),this.setHalfEdgeNext_(e,m),this.setHalfEdgePrev_(m,e)}let _=this.getGeometryID(o);if(e===R.enumInputModeBuildGraph){let e=l===i.G.enumPolygon?_:0;if(this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex,0),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft,e),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft,0),this.m_bBuildGeometryParentageSets){let e=new B,t=this.m_shape.getGeometryUserIndex(o,this.m_geometryIDIndex);e.setBit(t),this.setEdgeBitSet_(a,e),this.setEdgeBitSet_(m,null),this.setLeftEdgeBitSet_(m,e),this.setLeftEdgeBitSet_(a,null)}}else if(e===R.enumInputModeSimplifyWinding){let e=this.m_shape.getXY(s),r=this.m_shape.getXY(t),i=0,n=0;e.compare(r)<0?i=1:n=-1,this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex,i),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex,n)}else e===R.enumInputModeSimplifyAlternate&&(this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex,1),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex,1));let p=l===i.G.enumPolygon?K.c_EdgeBitMask:0;this.setHalfEdgeParentage_(a,_|p),this.setHalfEdgeParentage_(m,_|p)}}if(this.m_shape.hasCurves()){this.m_segmentIndexHe=this.createUserIndexForHalfEdges();for(let e=0,r=t.size();e<r;e++){let r=t.read(e);if(this.m_shape.getSegment(r)){let e=this.m_shape.getUserIndex(r,this.m_halfEdgeIndex);-1!==e&&(this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,this.m_shape.getVertexIndex(r)),this.setHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe,-2))}}}}mergeVertexListsOfEdges_(e,t){{let r=this.getHalfEdgeVertexIterator(t);if(-1!==r){let s=this.getHalfEdgeVertexIterator(e);this.m_clusterVertices.setField(r,1,s),this.setHalfEdgeVertexIterator_(e,r),this.setHalfEdgeVertexIterator_(t,-1)}}let r=this.getHalfEdgeTwin(e),s=this.getHalfEdgeTwin(t);{let e=this.getHalfEdgeVertexIterator(s);if(-1!==e){let t=this.getHalfEdgeVertexIterator(r);this.m_clusterVertices.setField(e,1,t),this.setHalfEdgeVertexIterator_(r,e),this.setHalfEdgeVertexIterator_(s,-1)}}if(-1!==this.m_segmentIndexHe){let i=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==i){if(-2===i){let r=this.getHalfEdgeUserIndex(t,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,r)}if(i=this.getHalfEdgeUserIndex(r,this.m_segmentIndexHe),-2===i){let e=this.getHalfEdgeUserIndex(s,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(r,this.m_segmentIndexHe,e)}}}}sortHalfEdgesByAngle_(e){let t=[];for(let r=this.getFirstCluster();-1!==r;r=this.getNextCluster(r)){t.length=0;let s=this.getClusterHalfEdge(r);if(-1!==s){let i=s;do{t.push(i),i=this.getHalfEdgeNext(this.getHalfEdgeTwin(i))}while(i!==s);if(t.length>1){let i=!0;t.length>2?(t.sort((e,t)=>this.compareEdgeAngles_(e,t)),t.push(t[0])):this.compareEdgeAnglesForPair_(t[0],t[1])>0?t[1]=(0,l.c)(t[0],t[0]=t[1]):i=!1;let n=t[0],a=n,o=this.getHalfEdgeTo(a),m=this.getHalfEdgeTwin(a),h=-1;for(let r=1,s=t.length;r<s;r++){let s=t[r],i=this.getHalfEdgeTwin(s),l=this.getHalfEdgeOrigin(i);if(l!==o||s===a)this.updateVertexToHalfEdgeConnection_(h,!1),h=-1,a=s,o=l,m=i;else{if(e===R.enumInputModeBuildGraph){let e=this.getHalfEdgeParentageMask_(a)|this.getHalfEdgeParentageMask_(s);if(this.setHalfEdgeParentage_(a,e),this.setHalfEdgeParentage_(m,e),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeParentageIndexLeft)),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndexLeft)),this.m_bBuildGeometryParentageSets){let e,t,r;e=this.getEdgeBitSet_(a),t=this.getEdgeBitSet_(s),r=new B({copy:e}),r.assignOr(t),this.setEdgeBitSet_(a,r),e=this.getEdgeBitSet_(m),t=this.getEdgeBitSet_(i),r=new B({copy:e}),r.assignOr(t),this.setEdgeBitSet_(m,r),e=this.getLeftEdgeBitSet_(a),t=this.getLeftEdgeBitSet_(s),r=new B({copy:e}),r.assignOr(t),this.setLeftEdgeBitSet_(a,r),e=this.getLeftEdgeBitSet_(m),t=this.getLeftEdgeBitSet_(i),r=new B({copy:e}),r.assignOr(t),this.setLeftEdgeBitSet_(m,r)}}else if(-1!==this.m_tmpHalfEdgeWindingNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeWindingNumberIndex),t=this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeWindingNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex,t)}else if(-1!==this.m_tmpHalfEdgeOddEvenNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeOddEvenNumberIndex),t=this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeOddEvenNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex,t)}this.mergeVertexListsOfEdges_(a,s),this.deleteEdgeImpl_(s),h=a,t[r]=-1,s===n&&(t[0]=-1,n=-1)}}if(this.updateVertexToHalfEdgeConnection_(h,!1),h=-1,!i){n=-1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(-1!==r){n=r;break}}s!==n&&this.setClusterHalfEdge_(r,n);continue}n=-1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(-1===r)continue;if(-1===n){n=r,a=n,o=this.getHalfEdgeTo(a),m=this.getHalfEdgeTwin(a);continue}if(r===a)continue;let s=this.getHalfEdgeTwin(r),i=this.getHalfEdgeOrigin(s);this.setHalfEdgeNext_(m,r),this.setHalfEdgePrev_(r,m),a=r,o=i,m=s}this.setClusterHalfEdge_(r,n)}}}}sortHalfEdgesByAngle3D_(e){(0,i.g)(0)}buildChains_(e){this.m_universeChain=this.newChain_(),this.setChainHalfEdge_(this.m_universeChain,-1);let t=this.m_universeChain,r=this.createUserIndexForHalfEdges();for(let e=this.getFirstCluster();-1!==e;e=this.getNextCluster(e)){let s=this.getClusterHalfEdge(e);if(-1!==s){let e=s;do{if(1!==this.getHalfEdgeUserIndex(e,r)){let s=this.newChain_();this.setChainHalfEdge_(s,e),this.setChainPrev_(s,t),this.setChainNext_(t,s);let i=null;this.m_bBuildGeometryParentageSets&&(i=new B),t=s;let n=0,a=e;do{-1!==this.m_tmpHalfEdgeParentageIndex&&(n|=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)),this.m_bBuildGeometryParentageSets&&i.assignOr(this.getEdgeBitSet_(a)),this.setHalfEdgeChain_(a,s),this.setHalfEdgeUserIndex(a,r,1),a=this.getHalfEdgeNext(a)}while(a!==e);this.m_bBuildGeometryParentageSets&&this.setChainBitSet_(s,i),this.setChainParentage_(s,n)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(e!==s)}}this.m_chainAreas=new o.A(this.m_chainData.size(),NaN),this.m_chainPerimeters=new o.A(this.m_chainData.size(),NaN),this.setChainArea_(this.m_universeChain,1/0),this.setChainPerimeter_(this.m_universeChain,1/0),this.deleteUserIndexForHalfEdges(r)}simplify_(e){(0,i.g)(0)}simplifyAlternate_(){(0,i.g)(0)}simplifyWinding_(){(0,i.g)(0)}setEditShapeImpl_(e,t,r,s,n){this.removeShape(),this.m_bBuildChains=n,this.m_shape=e,this.m_geometryIDIndex=this.m_shape.createGeometryUserIndex();let a=this.m_shape.getTotalPointCount();if(r){a=0;for(let e=0,t=r.length;e<t;e++)a+=this.m_shape.getPointCount(r[e])}let m=new o.a(0),h=0,g=0;{let e=null==r?this.m_shape.getFirstGeometry():r[0],t=1;for(;-1!==e;){this.m_shape.setGeometryUserIndex(e,this.m_geometryIDIndex,g++);for(let t=this.m_shape.getFirstPath(e);-1!==t;t=this.m_shape.getNextPath(t)){let e=this.m_shape.getFirstVertex(t);for(let r=0,s=this.m_shape.getPathSize(t);r<s;r++)m.add(e),e=this.m_shape.getNextVertex(e)}(0,i.f)(this.m_shape.getGeometryType(e))||(h+=this.m_shape.getPathCount(e)),null==r?e=this.m_shape.getNextGeometry(e):(e=t<r.length?r[t]:-1,t++)}}this.m_universeGeomID=1<<Math.min(g,31),this.m_pointCount=m.size(),this.m_shape.sortVerticesSimpleByY(m,0,this.m_pointCount),this.m_clusterVertices.setCapacity(this.m_pointCount),this.progress_(s,!0),this.m_clusterData.setCapacity(this.m_pointCount+10),this.m_halfEdgeData.setCapacity(2*this.m_pointCount+32),this.m_chainData.setCapacity(Math.max(32,h)),this.m_clusterIndex=this.m_shape.createUserIndex();let u=l.P.getNAN(),_=0,p=l.P.getNAN();for(let e=0;e<=this.m_pointCount;e++){if(e<this.m_pointCount){let t=m.read(e);this.m_shape.queryXY(t,p)}else p.setNAN();if(!u.isEqualPoint2D(p)){if(_<e){let t=this.newCluster_(),r=-1,s=-1;for(let i=_;i<e;i++){s=m.read(i),this.m_shape.setUserIndex(s,this.m_clusterIndex,t);let e=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(e,0,s),this.m_clusterVertices.setField(e,1,r),r=e;let n=this.m_shape.getPathFromVertex(s),a=this.m_shape.getGeometryFromPath(n),o=this.getGeometryID(a);this.setClusterParentage_(t,this.getClusterParentage(t)|o)}this.setClusterVertexIterator_(t,r),this.setClusterVertexIndex_(t,this.m_shape.getVertexIndex(s)),-1!==this.m_lastCluster&&this.setNextCluster_(this.m_lastCluster,t),this.setPrevCluster_(t,this.m_lastCluster),this.m_lastCluster=t,-1===this.m_firstCluster&&(this.m_firstCluster=t)}_=e,u.setCoordsPoint2D(p)}}if(this.m_shape.hasSegmentParentage()){-1===this.m_clusterBreakNodeIndex&&(this.m_clusterBreakNodeIndex=this.createUserIndexForClusters());for(let e=0;e<this.m_pointCount;e++){let t=m.read(e);if(this.m_shape.getSegmentParentageBreakVertex(t)){let e=this.getClusterFromVertex(t);this.setBreakNode(e,!0)}}}this.progress_(s,!0);{let e=null==r?this.m_shape.getFirstGeometry():r[0],t=1;for(;-1!==e;){for(let t=this.m_shape.getFirstPath(e);-1!==t;t=this.m_shape.getNextPath(t)){if(this.m_shape.isStrongPathStart(t)){let e=this.m_shape.getFirstVertex(t),r=this.getClusterFromVertex(e);this.setStrongPathNode(r,!0)}if(this.m_shape.isStrongPathEnd(t)){let e=this.m_shape.isClosedPath(t)?this.m_shape.getFirstVertex(t):this.m_shape.getLastVertex(t),r=this.getClusterFromVertex(e);this.setStrongPathNode(r,!0)}}null==r?e=this.m_shape.getNextGeometry(e):(e=t<r.length?r[t]:-1,t++)}}if(t===R.enumInputModeBuildGraph&&(this.m_tmpHalfEdgeParentageIndex=this.createUserIndexForHalfEdges(),this.m_tmpHalfEdgeParentageIndexLeft=this.createUserIndexForHalfEdges()),t===R.enumInputModeSimplifyWinding&&(this.m_tmpHalfEdgeWindingNumberIndex=this.createUserIndexForHalfEdges()),t===R.enumInputModeSimplifyAlternate&&(this.m_tmpHalfEdgeOddEvenNumberIndex=this.createUserIndexForHalfEdges()),this.createHalfEdges_(t,m),this.dbgNavigate_(),this.sortHalfEdgesByAngle_(t),!Number.isNaN(this.m_checkDirtyPlanesweepTolerance)&&!this.checkStructureAfterDirtySweep_())return this.m_bDirtyCheckFailed=!0,void this.cleanSetEditShapeImpl_();this.buildChains_(t),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),this.m_bBuildChains&&this.planeSweepParentage_(t,s),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),this.dbgChkChainParents_(),this.dbgDumpChains_(),this.mergeSegmentParentage_(),this.dbgNavigate_(),this.dbgDumpChains_(),this.cleanSetEditShapeImpl_()}setEditShapeImpl3D_(e,t,r,s,n){(0,i.g)(0)}cleanSetEditShapeImpl_(){-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1)}cleanSetEditShapeImpl3D_(){(0,i.g)(0)}dbgNavigate_(){}dbgChkChainParents_(){}deleteEdgeImpl_(e){let t=this.getHalfEdgeNext(e),r=this.getHalfEdgePrev(e),s=this.getHalfEdgeTwin(e),i=this.getHalfEdgeNext(s),n=this.getHalfEdgePrev(s);t!==s&&(this.setHalfEdgeNext_(n,t),this.setHalfEdgePrev_(t,n)),r!==s&&(this.setHalfEdgeNext_(r,i),this.setHalfEdgePrev_(i,r));let a=this.getHalfEdgeOrigin(e);this.getClusterHalfEdge(a)===e&&(i===e?this.setClusterHalfEdge_(a,-1):this.setClusterHalfEdge_(a,i));let o=this.getHalfEdgeOrigin(s);this.getClusterHalfEdge(o)===s&&(t===s?this.setClusterHalfEdge_(o,-1):this.setClusterHalfEdge_(o,t)),this.m_halfEdgeData.deleteElement(e),this.m_halfEdgeData.deleteElement(s)}getLeftSkipPolylines_(e,t){let r=t;for(;;){if(r=e.getPrev(r),-1===r)return-1;{let t=e.getElement(r);if(this.getHalfEdgeChain(t)!==this.getHalfEdgeChain(this.getHalfEdgeTwin(t)))return t}}}checkStructureAfterDirtySweep_(){let e=(0,l.a)(this.m_checkDirtyPlanesweepTolerance),t=new l.P,r=new l.P,s=new l.P,i=new l.P,n=new l.P;for(let a=this.getFirstCluster();-1!==a;a=this.getNextCluster(a)){let o=this.getClusterHalfEdge(a);if(-1!==o){let a=o;this.getHalfEdgeFromXY(a,t),this.getHalfEdgeToXY(a,r),s.setSub(r,t);let l=s.sqrLength();do{let o=a;if(a=this.getHalfEdgeNext(this.getHalfEdgeTwin(a)),a!==o){this.getHalfEdgeToXY(a,i),n.setSub(i,t);let o=n.sqrLength(),m=n.crossProduct(s),h=m*m/(o*l);if(Math.min(o,l)*h<=e&&n.dotProduct(s)>=0)return!1;s.assign(n),l=o,r.assign(i)}}while(a!==o)}}return!0}extractPolygonPathFromChain_(e,t,r,s,i){let n=this.m_shape.hasSegmentParentage(),a=this.getChainHalfEdge(r),l=a,m=-1,h=new o.P;do{let a=this.getHalfEdgeTwin(l);if(this.getHalfEdgeChain(a)!==r){let r,a=-1,o=this.getHalfEdgeOrigin(l);if(-1===s){let e=this.getClusterVertexIterator(o);a=this.getVertexFromVertexIterator(e)}else for(let e=this.getClusterVertexIterator(o);-1!==e;e=this.incrementVertexIterator(e)){let t=this.getVertexFromVertexIterator(e);-1===a&&(a=t);let r=this.m_shape.getPathFromVertex(t);if(this.m_shape.getGeometryFromPath(r)===s){a=t;break}}if(-1===m&&(m=e.insertPath(t,-1),e.setClosedPath(m,!0)),this.m_shape===e?r=e.addVertex(m,a):(this.m_shape.queryPoint(a,h),r=e.addPoint(m,h)),this.isHalfEdgeCurve(l)&&(this.querySegmentXY(l,i),e.setSegmentToIndex(e.getVertexIndex(r),i.get().clone())),n){let t=this.getSegmentParentage(l);e.setSegmentParentageAndBreak(r,t,this.isBreakNode(o))}}l=this.getHalfEdgeNext(l)}while(l!==a)}mergeSegmentParentage_(){if(!this.m_shape.hasSegmentParentage())return;(0,i.g)(-1!==this.m_clusterBreakNodeIndex),(0,i.g)(-1===this.m_segmentParentageIndex);for(let e=this.getFirstCluster();-1!==e;e=this.getNextCluster(e)){let t=0,r=this.getClusterHalfEdge(e);if(-1!==r){let e=r;do{t++,e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(e!==r&&t<3)}2!==t&&this.setBreakNode(e,!0)}let e=[],t=[];this.m_segmentParentageIndex=this.createUserIndexForHalfEdges();let r=this.createUserIndexForHalfEdges();for(let s=this.getFirstCluster();-1!==s;s=this.getNextCluster(s)){let i=this.getClusterHalfEdge(s);if(-1!==i){let s=!1,n=i;do{let i=n;for(;-1===this.getHalfEdgeUserIndex(i,r);){let n=this.getHalfEdgeNext(i),a=this.getHalfEdgeTwin(i);Z(this,i,t);let o=t.at(-1).parentage;if(!s){let t=this.getHalfEdgeOrigin(i);if(!this.isBreakNode(t)){let t=this.getHalfEdgePrev(i);i!==t&&(Z(this,t,e),s=!0)}}if(s&&!j(t,e)){let e=this.getHalfEdgeOrigin(i);this.setBreakNode(e,!0)}e=(0,l.c)(t,t=e),s=!0;let m=this.getHalfEdgeOrigin(n);this.isBreakNode(m)&&(s=!1),this.setHalfEdgeUserIndex(i,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(a,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(i,r,1),this.setHalfEdgeUserIndex(a,r,1),i=n}n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(n!==i)}}this.deleteUserIndexForHalfEdges(r)}registerNewBitSet(e){return null===this.m_uniqueBitSets&&(this.m_uniqueBitSets=new O(e=>e.getHashCode(),(e,t)=>e.equals(t)),this.m_uniqueBitSets.add(this.getEmptySet())),null===e?this.getEmptySet():this.m_uniqueBitSets.has(e)?this.m_uniqueBitSets.get(e):(this.m_uniqueBitSets.add(e),e)}getLeftEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);return(0,i.g)(t>=0),(0,i.g)(this.m_edgeBitSets.at(t)),this.m_edgeBitSets.at(t)}getEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);return(0,i.g)(t>=0),this.m_edgeBitSets.at(t)}setEdgeBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndex&&(this.m_edgeBitSetIndex=this.createUserIndexForHalfEdges());let r=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);-1===r?(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndex,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t)):this.m_edgeBitSets[r]=t}setLeftEdgeBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndexLeft&&(this.m_edgeBitSetIndexLeft=this.createUserIndexForHalfEdges());let r=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);-1===r?(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t)):this.m_edgeBitSets[r]=t}setChainBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_chainBitSetIndex&&(this.m_chainBitSetIndex=this.createUserIndexForChains());let r=this.getChainUserIndex(e,this.m_chainBitSetIndex);-1===r?(this.setChainUserIndex(e,this.m_chainBitSetIndex,this.m_chainBitSets.length),this.m_chainBitSets.push(t)):this.m_chainBitSets[r]=t}getEmptySet(){return this.m_emptyBitSet||=new B,this.m_emptyBitSet}deleteEdgeBitSets_(){-1!==this.m_edgeBitSetIndex&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndex),this.m_edgeBitSetIndex=-1),-1!==this.m_edgeBitSetIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndexLeft),this.m_edgeBitSetIndexLeft=-1),this.m_edgeBitSets.length=0,this.m_uniqueBitSets=null}deleteChainBitSets_(){-1!==this.m_chainBitSetIndex&&(this.deleteUserIndexForChains(this.m_chainBitSetIndex),this.m_chainBitSetIndex=-1,this.m_chainBitSets.length=0)}dbgPrintEdge_(e){}dbgVerifyEdgeSegment(e){}}class Q{m_listNodes=new o.S(2);m_lists;m_listOfLists=Q.st_nullNode();m_bAllowNavigationBetweenLists=!0;freeNode_(e){this.m_listNodes.deleteElement(e)}newNode_(){return this.m_listNodes.newElement()}freeList_(e){this.m_lists.deleteElement(e)}newList_(){return this.m_lists.newElement()}Init_(e){(0,i.g)(0)}constructor(e){void 0===e&&(e=!0),this.m_bAllowNavigationBetweenLists=e,this.m_lists=new o.S(this.m_bAllowNavigationBetweenLists?4:2)}createList(){let e=this.newList_();return this.m_bAllowNavigationBetweenLists&&(this.m_lists.setField(e,3,this.m_listOfLists),this.m_listOfLists!==Q.st_nullNode()&&this.m_lists.setField(this.m_listOfLists,2,e),this.m_listOfLists=e),e}deleteList(e){let t=this.getFirst(e);for(;t!==Q.st_nullNode();){let e=t;t=this.getNext(t),this.freeNode_(e)}if(this.m_bAllowNavigationBetweenLists){let t=this.m_lists.getField(e,2),r=this.m_lists.getField(e,3);t===Q.st_nullNode()?this.m_listOfLists=r:this.m_lists.setField(t,3,r),r!==Q.st_nullNode()&&this.m_lists.setField(r,2,t)}this.freeList_(e)}reserveLists(e){this.m_lists.setCapacity(e)}addElement(e,t){this.m_lists.getField(e,0);let r=this.m_lists.getField(e,1),s=this.newNode_();return r===Q.st_nullNode()?(this.m_lists.setField(e,0,s),this.m_lists.setField(e,1,s)):(this.m_listNodes.setField(r,1,s),this.m_lists.setField(e,1,s)),this.m_listNodes.setField(s,0,t),s}reserveNodes(e){this.m_listNodes.setCapacity(e)}deleteElementDirect(e,t,r){t===Q.st_nullNode()?(this.m_lists.setField(e,0,this.m_listNodes.getField(r,1)),this.m_lists.getField(e,1)===r&&this.m_lists.setField(e,1,Q.st_nullNode())):(this.m_listNodes.setField(t,1,this.m_listNodes.getField(r,1)),this.m_lists.getField(e,1)===r&&this.m_lists.setField(e,1,t)),this.freeNode_(r)}deleteElementSearch(e,t){let r=-1,s=this.getFirst(e);for(;s!==t;)r=s,s=this.getNext(s);this.deleteElementDirect(e,r,t)}concatenateLists(e,t){let r=this.m_lists.getField(e,1),s=this.m_lists.getField(t,0);if(s!==Q.st_nullNode()&&(r===Q.st_nullNode()?(this.m_lists.setField(e,0,s),this.m_lists.setField(e,1,this.m_lists.getField(t,1))):(this.m_listNodes.setField(r,1,s),this.m_lists.setField(e,1,this.m_lists.getField(t,1)))),this.m_bAllowNavigationBetweenLists){let e=this.m_lists.getField(t,2),r=this.m_lists.getField(t,3);e===Q.st_nullNode()?this.m_listOfLists=r:this.m_lists.setField(e,3,r),r!==Q.st_nullNode()&&this.m_lists.setField(r,2,e)}return this.freeList_(t),e}getElement(e){return this.m_listNodes.getField(e,0)}getData(e){return this.getElement(e)}setElement(e,t){(0,i.g)(0)}getNext(e){return this.m_listNodes.getField(e,1)}getFirst(e){return this.m_lists.getField(e,0)}getFirstElement(e){let t=this.getFirst(e);return this.getElement(t)}static st_nullNode(){return-1}clear(){this.m_listNodes.deleteAll(!0),this.m_lists.deleteAll(!0),this.m_listOfLists=Q.st_nullNode()}isEmpty(e){return(0,i.g)(0),!1}getNodeCount(){return this.m_listNodes.size()}getListCount(){return this.m_lists.size()}getFirstList(){return this.m_listOfLists}getNextList(e){return this.m_lists.getField(e,3)}}function J(e=-1){return{m_value:e,m_line:new a.L,m_segment:null,m_segmentInfo:new a.a2(-1),m_env:new l.E(0,0),m_dxdy:55555555,m_bHorizontal:!1,m_bCurve:!1}}class $ extends o.F{m_shape;m_bIntersectionDetected=!1;m_nonSimpleResult=new c;m_tempSimpleEdge1=J();m_tempSimpleEdge2=J();m_prev1=-1;m_prev2=-1;m_vertex1=-1;m_vertex2=-1;m_currentNode=-1;m_prevX1=NaN;m_prevX2=NaN;m_prevY=NaN;m_prevX=0;m_sweepY=NaN;m_sweepX=0;m_ptSweep=new l.P;m_tolerance;m_tolerance10;m_bIsSimple;m_bShapeHasSegments;m_simpleEdgesCache=[];m_simpleEdgesRecycle=[];m_cOutstandingConstructedEdges=0;constructor(e,t,r){super(!0),this.m_shape=e,this.m_bShapeHasSegments=this.m_shape.hasCurves(),this.m_tolerance=t,this.m_tolerance10=10*t,this.m_bIsSimple=r;let s=Math.trunc(Math.min(3*e.getTotalPointCount()/2,67)),i=Math.min(7,s);this.m_simpleEdgesCache.length=i}tryGetCachedEdge_(e){let t=this.m_simpleEdgesCache[(e&(0,l.j)())%this.m_simpleEdgesCache.length];return t&&t.m_value===e?t:null}tryDeleteCachedEdge_(e){let t=(e&(0,l.j)())%this.m_simpleEdgesCache.length,r=this.m_simpleEdgesCache[t];r&&r.m_value===e&&(this.m_simpleEdgesRecycle.push(r),this.m_simpleEdgesCache[t]=null)}tryCreateCachedEdge_(e){let t=(e&(0,l.j)())%this.m_simpleEdgesCache.length,r=this.m_simpleEdgesCache[t];return r?null:(0===this.m_simpleEdgesRecycle.length?(r=J(),this.m_cOutstandingConstructedEdges++):r=this.m_simpleEdgesRecycle.pop(),r.m_value=e,this.m_simpleEdgesCache[t]=r,r)}initSimpleEdge_(e,t){this.m_bShapeHasSegments&&this.initSimpleEdgeHelper_(e,t)||e.m_bCurve||(this.m_shape.queryLineConnector(t,e.m_line,!0),e.m_segment=e.m_line,e.m_env.setCoordsNoNAN(e.m_line.getStartX(),e.m_line.getEndX()),e.m_env.vmax+=this.m_tolerance,e.m_line.orientBottomUp(),e.m_bHorizontal=e.m_line.getEndY()===e.m_line.getStartY(),e.m_bHorizontal||(e.m_dxdy=(e.m_line.getEndX()-e.m_line.getStartX())/(e.m_line.getEndY()-e.m_line.getStartY())))}initSimpleEdgeHelper_(e,t){if(e.m_segment=this.m_shape.getSegment(t),e.m_segmentInfo=this.m_shape.getOriginalSegmentInfo(t),e.m_bCurve=null!==e.m_segment,e.m_bCurve){let t=e.m_segment.clone();return t.orientBottomUp(),e.m_segment=t,e.m_env=e.m_segment.queryInterval(0,0),e.m_env.vmax+=this.m_tolerance,!0}return!1}compareTwoSegments_(e,t){let r=e.getStartXY(),s=e.getEndXY(),i=t.getStartXY(),n=t.getEndXY();if(this.m_ptSweep.setCoords(this.m_sweepX,this.m_sweepY),r.isEqualPoint2D(i)&&this.m_sweepY===r.y){this.m_ptSweep.assign(s.compare(n)<0?s:n);let r=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),i=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x);if(Math.abs(r-i)>this.m_tolerance)return r<i?-1:1}let a=r.compare(i)<0?i:r,o=s.compare(n)<0?s:n,m=0,h=0;for(let r=1;r<5;r++){(0,l.J)(a,o,r/5,this.m_ptSweep);let s=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),i=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),n=Math.abs(s-i);n>m&&(m=n,h=s<i?-1:1)}return 0===h?this.errorCracking():h}compareNonHorizontal_(e,t){if(e.m_line.getStartY()===t.m_line.getStartY()&&e.m_line.getStartX()===t.m_line.getStartX())return e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX()?this.m_bIsSimple?this.errorCoincident():0:this.compareNonHorizontalUpperEnd_(e,t);if(e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX())return this.compareNonHorizontalLowerEnd_(e,t);let r=this.compareNonHorizontalLowerEnd_(e,t),s=this.compareNonHorizontalUpperEnd_(e,t);return r<0&&s<0?-1:r>0&&s>0?1:this.errorCracking()}compareHorizontal1Case1_(e,t){if(e.getEndX()>t.getEndX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getEndX()-e.getStartX())<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return 1}compareHorizontal1Case2_(e,t){if(e.getStartX()<t.getStartX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getStartX()-e.getEndX())<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking();return-1}compareHorizontal1Case3_(e,t){let r=l.P.getNAN();r.setSub(t.getEndXY(),t.getStartXY()),r.rightPerpendicularThis(),r.normalize();let s=l.P.getNAN();s.setSub(e.getStartXY(),t.getStartXY());let i=l.P.getNAN();i.setSub(e.getEndXY(),t.getStartXY());let n=s.dotProduct(r),a=i.dotProduct(r),o=Math.abs(n),m=Math.abs(a);if(o<m){if(o<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking()}else if(m<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return n<0&&a<0?-1:n>0&&a>0?1:this.errorCracking()}compareHorizontal1_(e,t){return e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.compareHorizontal1Case1_(e,t):e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()?this.compareHorizontal1Case2_(e,t):this.compareHorizontal1Case3_(e,t)}compareHorizontal2_(e,t){return e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()&&e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.m_bIsSimple?this.errorCoincident():0:this.errorCracking()}compareNonHorizontalLowerEnd_(e,t){let r=1;if(e.m_line.getStartY()<t.m_line.getStartY()){r=-1;let s=e;e=t,t=s}let s=e.m_line,i=t.m_line,n=s.getStartX()-i.getStartX(),a=t.m_dxdy*(s.getStartY()-i.getStartY()),o=this.m_tolerance10;return n<a-o?-r:n>a+o?r:i.isIntersectingPoint(s.getStartXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-r:r}compareNonHorizontalUpperEnd_(e,t){let r=1;if(t.m_line.getEndY()<e.m_line.getEndY()){r=-1;let s=e;e=t,t=s}let s=e.m_line,i=t.m_line,n=s.getEndX()-i.getStartX(),a=t.m_dxdy*(s.getEndY()-i.getStartY()),o=this.m_tolerance10;return n<a-o?-r:n>a+o?r:i.isIntersectingPoint(s.getEndXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-r:r}errorCoincident(){return this.m_bIntersectionDetected=!0,this.m_nonSimpleResult=new c(7,this.m_vertex1,this.m_vertex2),-1}errorCracking(){return this.m_bIntersectionDetected=!0,this.m_bIsSimple?this.m_nonSimpleResult=new c(6,this.m_vertex1,this.m_vertex2):(this.m_prev1=-1,this.m_prev2=-1,this.m_vertex1=-1,this.m_vertex2=-1),-1}compareSegments_(e,t,r,s){if(r.m_env.vmax<s.m_env.vmin)return-1;if(s.m_env.vmax<r.m_env.vmin)return 1;if(!r.m_bCurve&&!s.m_bCurve){let e=+!!r.m_bHorizontal;return e|=s.m_bHorizontal?2:0,0===e?this.compareNonHorizontal_(r,s):1===e?this.compareHorizontal1_(r.m_line,s.m_line):2===e?-1*this.compareHorizontal1_(s.m_line,r.m_line):this.compareHorizontal2_(r.m_line,s.m_line)}if(this.m_bIntersectionDetected)return-1;let i,n,o=this.m_prevY===this.m_sweepY&&this.m_prevX===this.m_sweepX;if(o&&e===this.m_prev1?i=this.m_prevX1:(i=NaN,this.m_prev1=-1),o&&t===this.m_prev2?n=this.m_prevX2:(n=NaN,this.m_prev2=-1),this.m_prevY=this.m_sweepY,this.m_prevX=this.m_sweepX,Number.isNaN(i)){this.m_prev1=e;let t=r.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);i=t,this.m_prevX1=t}if(Number.isNaN(n)){this.m_prev2=t;let e=s.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);n=e,this.m_prevX2=e}let l=(0,a.T)(!0,!0,r.m_segment,s.m_segment,this.m_tolerance,!0);return 0===l?Math.abs(i-n)<=this.m_tolerance?this.compareTwoSegments_(r.m_segment,s.m_segment):i<n?-1:+(i>n):2===l?this.m_bIsSimple?this.errorCoincident():r.m_segmentInfo.equals(s.m_segmentInfo)?0:this.errorCracking():this.errorCracking()}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1}intersectionDetected(){return this.m_bIntersectionDetected}getLastComparedNode(){return this.m_currentNode}getResult(){return this.m_nonSimpleResult}setSweepY(e,t){this.m_sweepY=e,this.m_sweepX=t,this.m_prev1=-1,this.m_prev2=-1,this.m_vertex1=-1,this.m_vertex2=-1}compare(e,t,r){if(this.m_bIntersectionDetected)return-1;let s=e.getElement(r),i=t;return this.m_currentNode=r,this.compareSegments(i,i,s,s)}compareSegments(e,t,r,s){let i=this.tryGetCachedEdge_(e);null===i?this.m_vertex1===t?i=this.m_tempSimpleEdge1:(this.m_vertex1=t,i=this.tryCreateCachedEdge_(e),null===i&&(i=this.m_tempSimpleEdge1,this.m_tempSimpleEdge1.m_value=e),this.initSimpleEdge_(i,t)):this.m_vertex1=t;let n=this.tryGetCachedEdge_(r);return null===n?this.m_vertex2===s?n=this.m_tempSimpleEdge2:(this.m_vertex2=s,n=this.tryCreateCachedEdge_(r),null===n&&(n=this.m_tempSimpleEdge2,this.m_tempSimpleEdge2.m_value=r),this.initSimpleEdge_(n,s)):this.m_vertex2=s,this.compareSegments_(t,s,i,n)}onDelete(e){this.tryDeleteCachedEdge_(e)}onSet(e){this.tryDeleteCachedEdge_(e)}onEndSearch(e){this.tryDeleteCachedEdge_(e)}onAddUniqueElementFailed(e){this.tryDeleteCachedEdge_(e)}}class ee{m_shape;m_bIntersectionDetected=!1;m_pointOfInterest=l.P.getNAN();m_line1=new a.L;m_seg1=null;m_env=l.E.constructEmpty();m_vertex1=-1;m_currentNode=-1;m_minDist=Number.MAX_VALUE;m_tolerance;constructor(e,t){this.m_shape=e,this.m_tolerance=t}getCurrentNode(){return this.m_currentNode}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1,this.m_minDist=Number.MAX_VALUE}intersectionDetected(){return this.m_bIntersectionDetected}setPoint(e){this.m_pointOfInterest.assign(e)}compare(e,t){let r=e.getElement(t);return this.compareVertex(e,t,r)}compareVertex(e,t,r){let s,i=this.m_shape.getSegment(r),o=!0;if(null==i)this.m_shape.queryLineConnector(r,this.m_line1,!0),this.m_env.setCoordsNoNAN(this.m_line1.getStartX(),this.m_line1.getEndX()),i=this.m_line1,s=this.m_line1.getStartY()===this.m_line1.getEndY();else{let e=n.Envelope2D.constructEmpty();i.queryLooseEnvelope(e),e.queryIntervalX(this.m_env),s=0===e.height(),o=!1}if(this.m_pointOfInterest.x+this.m_tolerance<this.m_env.vmin)return-1;if(this.m_pointOfInterest.x-this.m_tolerance>this.m_env.vmax)return 1;if(s)return this.m_currentNode=t,this.m_bIntersectionDetected=!0,0;let m=0;if(o){(0,a.X)(this.m_line1);let e=this.m_line1.getStartXY(),t=new l.P;t.setSub(this.m_line1.getEndXY(),e),t.rightPerpendicularThis();let r=new l.P;r.setSub(this.m_pointOfInterest,e),m=t.dotProduct(r),m/=t.length()}else m=i.intersectionOfYMonotonicWithAxisX(this.m_pointOfInterest.y,this.m_pointOfInterest.x)-this.m_pointOfInterest.x;return m<10*-this.m_tolerance?-1:m>10*this.m_tolerance?1:(i.isIntersectingPoint(this.m_pointOfInterest,this.m_tolerance)&&(Math.abs(m)<this.m_minDist&&(this.m_currentNode=t,this.m_minDist=m),this.m_bIntersectionDetected=!0),m<0?-1:+(m>0))}}class te{m_bitFilter;m_hashBuckets;m_lists=new Q(!1);m_hash;constructor(e,t){this.m_hash=t,this.m_hashBuckets=new Int32Array(e),this.m_hashBuckets.fill(te.st_nullNode()),this.m_bitFilter=new Int32Array(10*e+31>>5)}reserveElements(e){this.m_lists.reserveLists(Math.min(this.m_hashBuckets.length,e)),this.m_lists.reserveNodes(e)}addElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let r=t%(this.m_bitFilter.length<<5);this.m_bitFilter[r>>5]|=1<<(31&r);let s=t%this.m_hashBuckets.length,i=this.m_hashBuckets[s];return i===Q.st_nullNode()&&(i=this.m_lists.createList(),this.m_hashBuckets[s]=i),this.m_lists.addElement(i,e)}deleteElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let r=t%this.m_hashBuckets.length,s=this.m_hashBuckets[r];s===Q.st_nullNode()&&(0,i.a)("");let n=this.m_lists.getFirst(s),a=Q.st_nullNode();for(;n!==Q.st_nullNode();){let t=this.m_lists.getData(n),i=this.m_lists.getNext(n);t===e?(this.m_lists.deleteElementDirect(s,a,n),this.m_lists.getFirst(s)===Q.st_nullNode()&&(this.m_lists.deleteList(s),this.m_hashBuckets[r]=Q.st_nullNode())):a=n,n=i}}getFirstInBucket(e){let t=e%(this.m_bitFilter.length<<5);if(!(this.m_bitFilter[t>>5]&1<<(31&t)))return Q.st_nullNode();let r=e%this.m_hashBuckets.length,s=this.m_hashBuckets[r];return s===Q.st_nullNode()?Q.st_nullNode():this.m_lists.getFirst(s)}getNextInBucket(e){return this.m_lists.getNext(e)}findNode(e){let t=this.m_hash.getHash(e),r=this.getFirstInBucket(t);for(;r!==Q.st_nullNode();){let t=this.m_lists.getData(r);if(this.m_hash.equal(t,e))return r;r=this.m_lists.getNext(r)}return Q.st_nullNode()}deleteNode(e){let t=this.getElement(e),r=this.m_hash.getHash(t)%this.m_hashBuckets.length,s=this.m_hashBuckets[r];s===Q.st_nullNode()&&(0,i.a)(""),this.m_lists.deleteElementSearch(s,e),this.m_lists.getFirst(s)===Q.st_nullNode()&&(this.m_lists.deleteList(s),this.m_hashBuckets[r]=Q.st_nullNode())}getElement(e){return this.m_lists.getData(e)}static st_nullNode(){return Q.st_nullNode()}clear(){(0,i.g)(0)}size(){return this.m_lists.getNodeCount()}dbgPrintBucketHistogram(){}}function re(e,t,r,s,i){let n=new oe(i);return n.m_shape=e,n.m_sqrTolerance=t*t,n.m_cellSize=2*t,n.m_invCellSize=1/n.m_cellSize,n.m_geometry=r,n.m_bTrackChanges=s,n.m_bHasSegmentParentage=e.hasSegmentParentage(),n.clusterNonReciprocal()}function se(e,t,r,s,i){let n=e-r,a=t-s;return n*n+a*a<=i}function ie(e,t,r,s,i,n){let a={pt:new l.P,weight:0,rank:0,bMerged:!1},o=r+i,m=!1,h=e.x;e.x!==t.x&&(s===n&&(h=(e.x*r+t.x*i)/o),m=!0);let g=e.y;return e.y!==t.y&&(s===n&&(g=(e.y*r+t.y*i)/o),m=!0),s===n?(a.pt.setCoords(h,g),a.weight=o,a.rank=s):s>n?(a.rank=s,a.weight=r,a.pt=e):(a.rank=n,a.weight=i,a.pt=t),a.bMerged=m,a}function ne(e,t){let r=(0,l.a3)(e);return(0,l.a0)(r,t)}class ae{m_shape;m_sqrTolerance;m_invCellSize;m_origin;m_hashValues;m_workPt=new l.P;constructor(e,t,r,s,i){this.m_shape=e,this.m_sqrTolerance=r,this.m_invCellSize=s,this.m_origin=t.clone(),this.m_hashValues=i}getHash(e){return this.m_shape.getUserIndex(e,this.m_hashValues)}calculateHashFromVertex(e){this.m_shape.queryXY(e,this.m_workPt);let t=this.m_workPt.x-this.m_origin.x,r=Math.trunc(t*this.m_invCellSize+.5),s=this.m_workPt.y-this.m_origin.y;return ne(r,Math.trunc(s*this.m_invCellSize+.5))}equal(e,t){return(0,i.g)(0),!1}}class oe{m_origin=l.P.getNAN();m_sqrTolerance=0;m_cellSize=0;m_invCellSize=0;m_geometry=-1;m_bucketArray=(0,l.d)(4,NaN);m_bucketHash=(0,l.d)(4,NaN);m_dbgCandidateCheckCount=0;m_progressTracker;m_nsr=new c;m_hashValues=-1;m_newClusters=-1;m_bTrackChanges=!1;m_bHasSegmentParentage=!1;m_shape=null;m_clusters=new Q;m_hashFunction=null;m_hashTable=null;m_progressCounter=0;constructor(e){this.m_progressTracker=e}progress_(){}collectClusterCandidates(e,t){let r=l.P.getNAN();this.m_shape.queryXY(e,r);let s=(r.x-this.m_origin.x)*this.m_invCellSize,i=(r.y-this.m_origin.y)*this.m_invCellSize,n=Math.trunc(s),a=Math.trunc(i),o=0;for(let e=0;e<=1;e+=1)for(let t=0;t<=1;t+=1){let r=ne(n+e,a+t),s=this.m_hashTable.getFirstInBucket(r);s!==te.st_nullNode()&&(this.m_bucketArray[o]=s,this.m_bucketHash[o]=r,o++)}for(let e=o-1;e>=1;e--){let t=this.m_bucketArray[e];for(let r=e-1;r>=0;r--)if(t===this.m_bucketArray[r]){this.m_bucketHash[r]=-1,o--,e!==o&&(this.m_bucketHash[e]=this.m_bucketHash[o],this.m_bucketArray[e]=this.m_bucketArray[o]);break}}for(let s=0;s<o;s++)this.collectNearestNeighbourCandidates(e,this.m_bucketHash[s],r,this.m_bucketArray[s],t)}collectNearestNeighbourCandidates(e,t,r,s,i){let n=l.P.getNAN();for(let a=s;a!==te.st_nullNode();a=this.m_hashTable.getNextInBucket(a)){let s=this.m_hashTable.getElement(a);e===s||-1!==t&&this.m_shape.getUserIndex(s,this.m_hashValues)!==t||(this.m_shape.queryXY(s,n),se(r.x,r.y,n.x,n.y,this.m_sqrTolerance)&&i.push(a))}}mergeClusters(e,t,r){let s=this.m_shape.getUserIndex(e,this.m_newClusters),i=this.m_shape.getUserIndex(t,this.m_newClusters);-1===s&&(s=this.m_clusters.createList(),this.m_clusters.addElement(s,e),this.m_shape.setUserIndex(e,this.m_newClusters,s)),-1===i?this.m_clusters.addElement(s,t):this.m_clusters.concatenateLists(s,i),this.m_shape.setUserIndex(t,this.m_newClusters,o.S.impossibleIndex2());let n=this.mergeVertices(e,t);if(r){let t=this.m_hashFunction.calculateHashFromVertex(e);this.m_shape.setUserIndex(e,this.m_hashValues,t)}return n}mergeVertices(e,t){let r=l.P.getNAN();this.m_shape.queryXY(e,r);let s=l.P.getNAN();this.m_shape.queryXY(t,s);let i,n,a,o,m=this.m_shape.getRank(e),h=this.m_shape.getRank(t),g=this.m_shape.getWeight(e),u=this.m_shape.getWeight(t),_=!1;if(m===h?(i=m,n=g+u,a=r.x,r.x!==s.x&&(a=(r.x*g+s.x*u)/n,_=!0),o=r.y,r.y!==s.y&&(o=(r.y*g+s.y*u)/n,_=!0)):(m>h?(a=r.x,o=r.y,n=g,i=m):(a=s.x,o=s.y,n=u,i=h),_=!r.equals(s)),_&&(this.m_shape.setXYMonotonic(e,a,o),this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(e,!0),this.m_bHasSegmentParentage)){let r=this.m_shape.getSegmentParentageBreakVertex(e)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(e,r),this.m_shape.setSegmentParentageBreakVertex(t,r)}return this.m_shape.setWeight(e,n),this.m_shape.setRank(e,i),_}needsClustering(){let e={stack:[],error:void 0,hasError:!1};try{(0,s.mS)(e,(0,l.h)(()=>{this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters)}),!1);let t=this.m_shape.getSelectedCount(),r=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin.assign(r.getLowerLeft());let i=Math.max(r.height(),r.width())/((0,l.i)()-1);this.m_cellSize<i&&(this.m_cellSize=i,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(this.m_shape.getSelectedCount()/3+1),this.m_clusters.reserveNodes(this.m_shape.getSelectedCount()/3+1),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new ae(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new te(4*t/3,this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let n=!1;for(let e=0;e<2;e++){let t=[],r=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let s=r.next();-1!==s;s=r.next()){if(this.progress_(),e>0&&this.m_shape.getUserIndex(s,this.m_newClusters)===o.S.impossibleIndex2())continue;let r;if(0===e?(r=this.m_hashFunction.calculateHashFromVertex(s),this.m_shape.setUserIndex(s,this.m_hashValues,r)):r=this.m_shape.getUserIndex(s,this.m_hashValues),this.collectClusterCandidates(s,t),0!==t.length){for(let e=0,r=t.length;e<r;e++){this.progress_();let r=t[e],i=this.m_hashTable.getElement(r);if(this.m_hashTable.deleteNode(r),!this.m_shape.isEqualXY(s,i))return this.m_nsr=new c(5,this.m_shape.getVertexIndex(s),this.m_shape.getVertexIndex(i)),n=!0,n;this.mergeClusters(s,i,!1)}t.length=0}0===e&&this.m_hashTable.addElement(s,r)}}return n}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}clusterNonReciprocal(){let e=this.m_shape.getSelectedCount(),t=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin=t.getLowerLeft();let r=Math.max(t.height(),t.width())/((0,l.i)()-1);this.m_cellSize<r&&(this.m_cellSize=r,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_clusters.reserveNodes(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new ae(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new te(Math.trunc(4*e/3),this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let s=!1;{let e=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let t=e.next();-1!==t;t=e.next()){this.progress_();let e=this.m_hashFunction.calculateHashFromVertex(t);this.m_shape.setUserIndex(t,this.m_hashValues,e),this.m_hashTable.addElement(t,e)}}{let e=[],t=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let r=t.next();-1!==r;r=t.next()){if(this.m_shape.getUserIndex(r,this.m_newClusters)===o.S.impossibleIndex2())continue;let t=this.m_shape.getUserIndex(r,this.m_hashValues);this.m_hashTable.deleteElement(r,t);let i=!1;for(;this.collectClusterCandidates(r,e),0!==e.length;){let t=0;for(let s=0,i=e.length;s<i;s++){this.progress_();let n=e[s],a=this.m_hashTable.getElement(n);this.m_hashTable.deleteNode(n);let o=s+1===i;t|=+!!this.mergeClusters(r,a,o)}if(i||=0!==t,s||=0!==t,e.length=0,!t)break}i&&(t=this.m_shape.getUserIndex(r,this.m_hashValues)),this.m_hashTable.addElement(r,t)}e.length=0}return s&&this.applyClusterPositions_(),this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters),s}applyClusterPositions_(){let e=l.P.getNAN();for(let t=this.m_clusters.getFirstList();t!==Q.st_nullNode();t=this.m_clusters.getNextList(t)){let r=this.m_clusters.getFirst(t),s=this.m_clusters.getElement(r);this.m_shape.queryXY(s,e);let i=this.m_shape.getRank(s),n=this.m_shape.getWeight(s);for(r=this.m_clusters.getNext(r);r!==Q.st_nullNode();r=this.m_clusters.getNext(r)){let t=this.m_clusters.getElement(r);if(this.m_bTrackChanges?this.m_shape.isEqualXYPoint2D(t,e)||(this.m_shape.setXYMonotonicPoint2D(t,e),this.m_shape.setGeometryModifiedWithVertex(t,!0)):this.m_shape.setXYMonotonicPoint2D(t,e),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentageBreakVertex(s)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(s,e),this.m_shape.setSegmentParentageBreakVertex(t,e)}this.m_shape.setWeight(t,n),this.m_shape.setRank(t,i)}}}}class le{static maxWeight=.1*Number.MAX_VALUE;static c_smallToleranceFactor=.01;static c_maxGeometryTypeToRankDelta=8;m_inputParts=[];m_resultParts1=[];m_resultParts2=[];m_resultSegments=[];m_freeSegments=[];m_inputSegments=[];m_param1=[];m_param2=[];m_tolerance=0;m_toleranceZ=0;m_point=new o.P;m_pointWeight=1;m_maxDensifyLimit=0;m_pointRank=0;m_changed1=!1;m_changed2=!1;m_adaptiveDensify=!1;clear(){this.freeAllResultSegments(),this.m_inputSegments.length=0,this.m_inputParts.length=0,this.m_resultParts1.length=0,this.m_resultParts2.length=0,this.m_param1.length=0,this.m_param2.length=0,this.m_adaptiveDensify=!1,this.m_changed1=!1,this.m_changed2=!1}newIntersectionPart_(e,t,r,s,i,n,a,o,l,m){return function(e,t,r,s,i,n,a,o,l,m){return{segmentIndex:e,weightStart:t,rankStart:r,weightEnd:s,rankEnd:i,weightInterior:n,rankInterior:a,segmentParentage:m,u:me(o,l)}}(e,t,r,s,i,n,a,o,l,m)}pushSegment(e,t,r,s,i,n,a,o,l,m){return this.m_inputParts.push(this.newIntersectionPart_(this.m_inputSegments.length,t,r,s,i,n,a,o,l,m)),this.m_inputSegments.push(e),this.m_inputParts.length-1}getResultSegmentCount(e){return this.m_adaptiveDensify?0===e?this.m_param1.length-1:this.m_param2.length-1:0===e?this.m_resultParts1.length:this.m_resultParts2.length}getResultPart_(e,t){return 0===e?this.m_resultParts1[t]:this.m_resultParts2[t]}getResultSegment(e,t){return this.m_resultSegments[this.getResultPart_(e,t).segmentIndex].get()}getSegmentChanged(e){return 0===e?this.m_changed1:this.m_changed2}getResultSegmentStartPointWeight(e,t){return this.getResultPart_(e,t).weightStart}getResultSegmentStartPointRank(e,t){return this.getResultPart_(e,t).rankStart}getResultSegmentSegmentParentage(e,t){return this.getResultPart_(e,t).segmentParentage}getResultSegmentStartPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakStart}getResultSegmentEndPointWeight(e,t){return this.getResultPart_(e,t).weightEnd}getResultSegmentEndPointRank(e,t){return this.getResultPart_(e,t).rankEnd}getResultSegmentEndPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakEnd}getResultSegmentInteriorRank(e,t){return this.getResultPart_(e,t).rankInterior}getResultSegmentInteriorWeight(e,t){return this.getResultPart_(e,t).weightInterior}getResultPoint(){return this.m_point}getResultPointWeight(){return this.m_pointWeight}getResultPointRank(){return this.m_pointRank}getResultPointChanged(){return this.m_changed2}intersectLines(e,t){2!==this.m_inputSegments.length&&(0,i.d)(""),this.m_changed1=!1,this.m_changed2=!1,this.m_tolerance=e;let r=(0,l.a)(e*le.c_smallToleranceFactor),s=!1,n=this.m_inputParts[0],o=this.m_inputParts[1],m=this.m_inputSegments[n.segmentIndex],h=this.m_inputSegments[o.segmentIndex];if(t||5&(0,a.B)(!0,m,h,e,!0)){let t=(0,a.W)(!0,m,h,null,this.m_param1,this.m_param2,e);0===t&&(0,i.d)("");let g=Array(t);for(let e=0;e<t;++e)g[e]=l.P.getNAN();let u=new Float64Array(t),_=new Int32Array(t),p=Array(t),d=Array(t);for(let e=0;e<t;++e)p[e]=he(),d[e]=he();for(let e=0;e<t;e++){let t,i=this.m_param1[e],a=this.m_param2[e],c=n.rankInterior,f=n.weightInterior;0===i?(c=n.rankStart,f=n.weightStart,t=n.u.bBreakStart):1===i?(c=n.rankEnd,f=n.weightEnd,t=n.u.bBreakEnd):(this.m_changed1=!0,t=!1);let x,P=o.rankInterior,y=o.weightInterior;0===a?(P=o.rankStart,y=o.weightStart,x=o.u.bBreakStart):1===a?(P=o.rankEnd,y=o.weightEnd,x=o.u.bBreakEnd):(this.m_changed2=!0,x=!1);let E=c,S=P,C=1,I=0,v=l.P.getNAN();if(E===S){let t=m.getCoord2D(i),s=h.getCoord2D(a);C=f+y;let n=y/C;I=c,(0,l.J)(t,s,n,v);let o=l.P.sqrDistance(v,t),g=l.P.sqrDistance(v,s);p[e].bBigMove=o>r,d[e].bBigMove=g>r,!this.m_changed1&&!t.equals(v)&&(this.m_changed1=!0),!this.m_changed2&&!s.equals(v)&&(this.m_changed2=!0)}else if(E>S){v=m.getCoord2D(i);let t=h.getCoord2D(a);C=f,I=c;let s=l.P.sqrDistance(v,t);p[e].bBigMove=!1,d[e].bBigMove=s>r,!this.m_changed2&&!t.equals(v)&&(this.m_changed2=!0)}else{v=h.getCoord2D(a),C=y,I=P;let t=m.getCoord2D(i),s=l.P.sqrDistance(v,t);p[e].bBigMove=s>r,d[e].bBigMove=!1,!this.m_changed1&&!t.equals(v)&&(this.m_changed1=!0)}g[e].assign(v),u[e]=C,_[e]=I,p[e].bIsBreak=t||x,d[e].bIsBreak=t||x,s||=p[e].bBigMove||d[e].bBigMove}let c=n.rankInterior,f=n.weightInterior,x=0,P=-1;for(let r=0;r<=t;r++){let s=r<t?this.m_param1[r]:1;if(s!==x){let i=this.allocResultSegment(),a=this.m_resultSegments[i];m.queryCut(x,s,a,!1),a.get().snapControlPoints(e*e);let o,h,d,y,E=!1,S=!1,C=!1,I=!1,v=!1,G=l.P.getNAN(),w=l.P.getNAN();-1===P?(o=n.weightStart,h=n.rankStart,G=a.get().getStartXY(),C=n.u.bBreakStart):(h=_[P],o=u[P],E=p[P].bBigMove,G.assign(g[P]),C=p[P].bIsBreak,v=!0),r<t?(y=_[r],d=u[r],S=p[r].bBigMove,w.assign(g[r]),I=p[r].bIsBreak,v=!0):(d=n.weightEnd,y=n.rankEnd,w=a.get().getEndXY(),I=n.u.bBreakEnd),v&&a.get().setCoordsForIntersector(G,w,!0),this.m_resultParts1.push(this.newIntersectionPart_(i,o,h,d,y,f,c,C,I,n.segmentParentage));let b=this.m_resultParts1.at(-1);b.u.bBigMoveStart=E,b.u.bBigMoveEnd=S,x=s,P=r}else-1===P&&(P=r)}let y=(0,l.d)(t,0);for(let e=0;e<t;e++)y[e]=e;t>2?(y.sort((e,t)=>this.m_param2[e]<this.m_param2[t]?-1:+(this.m_param2[e]>this.m_param2[t])),(0,l.w)(this.m_param2)):2===t&&this.m_param2[0]>this.m_param2[1]&&(this.m_param2[1]=(0,l.c)(this.m_param2[0],this.m_param2[0]=this.m_param2[1]),y[1]=(0,l.c)(y[0],y[0]=y[1]));let E=o.rankInterior,S=o.weightInterior;x=0,P=-1;for(let r=0;r<=t;r++){let s=r<t?this.m_param2[r]:1;if(s!==x){let i=this.allocResultSegment(),n=this.m_resultSegments[i];h.queryCut(x,s,n,!1),n.get().snapControlPoints(e*e);let a,m,p,c,f=l.P.getNAN(),C=l.P.getNAN(),I=!1,v=!1,G=!1,w=!1,b=!1;if(-1!==P){let e=y[P];a=u[e],m=_[e],f.assign(g[e]),G=d[e].bBigMove,I=d[e].bIsBreak,b=!0}else a=o.weightStart,m=o.rankStart,f=n.get().getStartXY(),I=o.u.bBreakStart;if(r!==t){let e=y[r];p=u[e],c=_[e],C.assign(g[e]),w=d[e].bBigMove,v=d[e].bIsBreak,b=!0}else p=o.weightEnd,c=o.rankEnd,C=n.get().getEndXY(),v=o.u.bBreakEnd;b&&n.get().setCoordsForIntersector(f,C,!0),this.m_resultParts2.push(this.newIntersectionPart_(i,a,m,p,c,S,E,I,v,o.segmentParentage));let T=this.m_resultParts2.at(-1);T.u.bBigMoveStart=G,T.u.bBigMoveEnd=w,x=s,P=r}else-1===P&&(P=r)}return s?3:2}return 0}intersectLines3D(e,t,r,s){return(0,i.g)(0),1}intersect2D(e,t){let r=this.m_inputParts[0],s=this.m_inputParts[1],n=this.m_inputSegments[r.segmentIndex].getGeometryType(),a=this.m_inputSegments[s.segmentIndex].getGeometryType();return n!==i.G.enumLine||a!==i.G.enumLine?new pe(this).intersectCurves(e,t):this.intersectLines(e,t)}intersect2DEx(e,t,r,s,n){this.m_point.assignCopy(t),1!==this.m_inputSegments.length&&(0,i.d)(""),this.m_tolerance=e,this.m_changed1=!1,this.m_changed2=!1;let a=(0,l.a)(e*le.c_smallToleranceFactor),o=!1,m=this.m_inputParts[0],h=this.m_inputSegments[m.segmentIndex];if(n||h.isIntersectingPoint(t.getXY(),e,!0)){this.m_param1=(0,l.d)(16,NaN);let i=h.getClosestCoordinate(t.getXY(),!1);this.m_param1[0]=i;let n=m.rankInterior,g=m.weightInterior;0===i?(n=m.rankStart,g=m.weightStart):1===i?(n=m.rankEnd,g=m.weightEnd):this.m_changed1=!0;let u=n,_=r,p=s;u===_&&h.isCurve()&&(u=_+1);let d=1,c=0,f=new l.P;if(u===_){let e=h.getCoord2D(i),r=t.getXY();d=g+p,c=n;let s=p/d;(0,l.J)(e,r,s,f),!this.m_changed1&&!e.equals(f)&&(this.m_changed1=!0),!this.m_changed2&&!r.equals(f)&&(this.m_changed2=!0),o=l.P.sqrDistance(f,e)>a}else u>_?(f.assign(h.getCoord2D(i)),d=g,c=n,!this.m_changed2&&!f.equals(t.getXY())&&(this.m_changed2=!0)):(f.assign(h.getCoord2D(i)),d=p,c=_,!this.m_changed1&&!f.equals(t.getXY())&&(this.m_changed1=!0),o=l.P.sqrDistance(f,t.getXY())>a);let x=0,P=-1;for(let t=0;t<=1;t++){let r=t<1?this.m_param1[0]:1;if(r!==x){let s=this.allocResultSegment(),i=this.m_resultSegments[s];h.queryCut(x,r,i),i.get().snapControlPoints(e*e);let n=m.weightStart,a=m.weightEnd,o=m.rankStart,l=m.rankEnd,g=m.rankInterior,u=m.weightInterior,_=m.u.bBreakStart,p=m.u.bBreakEnd;-1!==P&&(n=d,o=c,_=!0,i.get().setCoordsForIntersector(f,i.get().getEndXY(),!0)),1!==t&&(a=d,l=c,p=!0,i.get().setCoordsForIntersector(i.get().getStartXY(),f,!0)),x=r,this.m_resultParts1.push(this.newIntersectionPart_(s,n,o,a,l,u,g,_,p,m.segmentParentage))}P=t}return this.m_point.setXY(f),this.m_pointWeight=d,this.m_pointRank=c,o?3:2}return 0}intersect3D(e,t,r,s){return(0,i.g)(0),1}intersect3DEx(e,t,r,s,n,a,o){return(0,i.g)(0),1}getTolerance(){return this.m_tolerance}freeAllResultSegments(){this.m_resultSegments.length=0,this.m_freeSegments.length=0}freeResultSegment(e){this.m_freeSegments.push(e)}allocResultSegment(){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let e=new a.S,t=this.m_resultSegments.length;return this.m_resultSegments.push(e),t}allocResultSegmentFromBuffer(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new a.S({copy:e}),r=this.m_resultSegments.length;return this.m_resultSegments.push(t),r}allocResultSegmentFromSegment(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new a.S({segment:e}),r=this.m_resultSegments.length;return this.m_resultSegments.push(t),r}}function me(e,t){return{bBigMoveStart:!1,bBigMoveEnd:!1,bBreakStart:e,bBreakEnd:t}}function he(){return{bBigMove:!1,bIsBreak:!1}}let ge=class{start=null;end=null;equalEdge=null;segmentIndex=-1;segmentParentage=-1;weight=0;rank=0;hasSegment(){return this.segmentIndex>=0}transferAttributes(e,t,r){if(1===t.getDescription().getAttributeCount())return;let s=e.parent.m_resultSegments[this.segmentIndex].get().getStartXY(),i=e.parent.m_resultSegments[this.segmentIndex].get().getEndXY(),n=new o.P;t.queryStart(n),r?(n.setXY(s),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n)):(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)),t.queryEnd(n),r?(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)):(n.setXY(s),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n))}copyFromWhenOverlap(e,t,r){this.equalEdge=t,t.equalEdge=this,this.segmentIndex=e.parent.allocResultSegmentFromBuffer(e.parent.m_resultSegments[t.segmentIndex]),this.segmentParentage=t.segmentParentage,this.weight=t.weight,this.rank=t.rank,r?(this.start.copyFrom(t.start),this.end.copyFrom(t.end)):(this.start.copyFrom(t.end),this.end.copyFrom(t.start),e.parent.m_resultSegments[this.segmentIndex].get().reverse())}getEnd(){return this.end}getNextInChain(){return this.end.nextInChain}getPrevInChain(){return this.start.prevInChain}};class ue{hash=0;pt=new l.P;prevInChain=null;nextInChain=null;prevInHash=null;nextInHash=null;prevEqual=null;nextEqual=null;weight=0;rank=0;bBigMove=!1;bIsBreak=!1;copyFrom(e){this.pt.assign(e.pt),this.weight=e.weight,this.rank=e.rank,this.bBigMove=e.bBigMove,this.bIsBreak=e.bIsBreak}nextNode(){return this.nextInChain?this.nextInChain.end:null}prevNode(){return this.prevInChain?this.prevInChain.start:null}equalListHead(){let e=this;for(;null!==e.prevEqual;e=e.prevEqual);return e}}function _e(e,t,r,s){return{edge1:e,edge2:t,recursion:r,bIsIntersecting:s}}class pe{parent;m_pairs=[];m_chainOrigin1=null;m_chainOrigin2=null;m_newNodes=[];m_hashTableOfEquals=[];m_hashTableOfEqualsSize=0;m_origin=new l.P;m_cell=new l.P;constructor(e){this.parent=e}addSegment(e,t,r,s,n,a,o,l,m,h,g){let u=this.newNode(this.parent.m_resultSegments[e].get().getStartXY(),r,s,m),_=this.newNode(this.parent.m_resultSegments[e].get().getEndXY(),n,a,h);this.newEdge(u,_,e,o,l,g),null===this.m_chainOrigin1?this.m_chainOrigin1=u:null===this.m_chainOrigin2?this.m_chainOrigin2=u:(0,i.g)(0)}intersectCurvesHelper(e,t,r,s,n){let o=this.getSegment(e).get(),m=this.getSegment(t).get();if(o.isDegenerate(0)||m.isDegenerate(0))return 0;let h=this.tryOverlapIntersectCurves(e,t,r,s);if(0!==h)return h;let g=(0,l.a)(.01*r),u=!1,_=this.processSharpCorners(o,m,r,n>4),p=_>0;if(!p){if(!(s||5&(0,a.T)(!0,!1,o,m,r,!0)))return 0;_=(0,a.W)(!0,o,m,null,this.parent.m_param1,this.parent.m_param2,r)}0===_&&(0,i.d)("");let d=o.getGeometryType(),c=m.getGeometryType(),f=(0,l.m)(l.P,_),x=(0,l.m)(l.P,_),P=(0,l.d)(_,NaN),y=(0,l.d)(_,NaN),E=(0,l.d)(_,NaN),S=(0,l.d)(_,NaN),C=(0,l.q)(he,_),I=(0,l.q)(he,_),v=!1,G=!1;for(let s=0;s<_;s++){let i=this.parent.m_param1[s],n=this.parent.m_param2[s],a=e.rank,h=e.weight,_=!0,w=!1;0===i?(a=e.start.rank,h=e.start.weight,w=e.start.bIsBreak):1===i?(a=e.end.rank,h=e.end.weight,w=e.end.bIsBreak):(v=!0,_=!1);let b=t.rank,T=t.weight,N=!1,D=!0;0===n?(b=t.start.rank,T=t.start.weight,N=t.start.bIsBreak):1===n?(b=t.end.rank,T=t.end.weight,N=t.end.bIsBreak):(G=!0,D=!1);let V=a,k=b;if(V===k&&(V*=le.c_maxGeometryTypeToRankDelta,k*=le.c_maxGeometryTypeToRankDelta,V+=de(d,o,!1),k+=de(c,m,!1)),_&&D&&k===V){let e=o.getCoord2D(i),t=m.getCoord2D(n);e.equals(t)&&(k=V-1)}let F=1,H=0,A=1,M=0,U=new l.P,q=new l.P,B=o.getCoord2D(i),O=m.getCoord2D(n);if(p&&l.P.distance(B,O)>r)U.setCoordsPoint2D(B),q.setCoordsPoint2D(O),F=h,A=T,H=a,M=b,C[s].bBigMove=!1,I[s].bBigMove=!1,w=!0,N=!0;else if(V===k){A=F=h+T,M=H=a;let e=T/F;(0,l.J)(B,O,e,U),q.setCoordsPoint2D(U);let t=l.P.sqrDistance(U,B),r=l.P.sqrDistance(U,O);C[s].bBigMove=t>g,I[s].bBigMove=r>g,!v&&!B.equals(U)&&(v=!0),!G&&!O.equals(q)&&(G=!0)}else if(V>k){U.setCoordsPoint2D(B),q.setCoordsPoint2D(U),A=F=h,M=H=a;let e=l.P.sqrDistance(U,O);C[s].bBigMove=!1,I[s].bBigMove=e>g,!G&&!O.equals(q)&&(G=!0)}else{q.setCoordsPoint2D(O),U.setCoordsPoint2D(q),A=F=T,M=H=b;let e=l.P.sqrDistance(U,B);C[s].bBigMove=e>g,I[s].bBigMove=!1,!v&&!B.equals(U)&&(v=!0)}f[s].assign(U),x[s].assign(q),P[s]=F,y[s]=A,E[s]=H,S[s]=M,C[s].bIsBreak=w||N,I[s].bIsBreak=w||N,u||=C[s].bBigMove||I[s].bBigMove,s>0&&(i===this.parent.m_param1[s-1]||n===this.parent.m_param2[s-1])&&(E[s]<=E[s-1]?(f[s].assign(x[s-1]),P[s]=y[s-1],E[s]=S[s-1],x[s].assign(x[s-1]),y[s]=y[s-1],S[s]=S[s-1],C[s].bBigMove||=C[s-1].bBigMove,I[s].bBigMove||=I[s-1].bBigMove,C[s].bIsBreak||=C[s-1].bIsBreak,I[s].bIsBreak||=I[s-1].bIsBreak):(f[s-1].assign(f[s]),P[s-1]=P[s],E[s-1]=E[s],x[s-1].assign(x[s]),y[s-1]=y[s],S[s-1]=S[s],C[s-1].bBigMove||=C[s].bBigMove,I[s-1].bBigMove||=I[s].bBigMove,C[s-1].bIsBreak||=C[s].bIsBreak,I[s-1].bIsBreak||=I[s].bIsBreak))}if(!(v||G||2!==_||d===i.G.enumLine&&c===i.G.enumLine)){if(this.processDoublyConnectedEdges(e,t,n+1,r))return this.parent.m_changed1=!0,this.parent.m_changed2=!0,2;(0,i.g)(0)}this.parent.m_changed1||=v,this.parent.m_changed2||=G;let w=e,b=e.end.weight,T=e.end.rank,N=e.end.bBigMove,D=e.end.bIsBreak,V=0,k=-1;for(let t=0;t<=_;t++){let s=t<_?this.parent.m_param1[t]:1;if(s!==V){let i=this.parent.allocResultSegment(),n=this.parent.m_resultSegments[i];o.queryCut(V,s,n,!1),n.get().snapControlPoints(r*r);let a,m,h,g,u=!1,p=!1,d=!1,c=!1,x=new l.P,y=new l.P;-1===k?(a=e.start.weight,m=e.start.rank,d=e.start.bBigMove,u=e.start.bIsBreak,x.assign(n.get().getStartXY())):(m=E[k],a=P[k],d=C[k].bBigMove,u=C[k].bIsBreak,x.assign(f[k])),t<_?(g=E[t],h=P[t],c=C[t].bBigMove,p=C[t].bIsBreak,y.assign(f[t])):(h=b,g=T,c=N,p=D,y.assign(n.get().getEndXY()));let S=w;s<1&&(this.splitEdgeInPlace(w),S=w.getNextInChain()),this.updateSegmentOnly(w,i),0!==w.start.hash&&!w.start.pt.equals(x)&&(this.m_newNodes.push(w.start),this.removeNodeFromHash(w.start),w.start.hash=0),0!==w.end.hash&&!w.end.pt.equals(y)&&(this.m_newNodes.push(w.end),this.removeNodeFromHash(w.end),w.end.hash=0),w.start.pt.assign(x),w.end.pt.assign(y),w.start.bBigMove||=d,w.end.bBigMove||=c,w.start.bIsBreak||=u,w.end.bIsBreak||=p,w.start.weight=a,w.start.rank=m,w.end.weight=h,w.end.rank=g,w=S,V=s,k=t}else-1===k&&(k=t)}let F=w.getNextInChain(),H=[];H.length=_;for(let e=0;e<_;e++)H[e]=e;_>2?(H.sort((e,t)=>(0,l.X)(this.parent.m_param2[e],this.parent.m_param2[t])),this.parent.m_param2.sort(l.X)):2===_&&this.parent.m_param2[0]>this.parent.m_param2[1]&&(this.parent.m_param2[1]=(0,l.c)(this.parent.m_param2[0],this.parent.m_param2[0]=this.parent.m_param2[1]),H[1]=(0,l.c)(H[0],H[0]=H[1])),w=t,b=t.end.weight,T=t.end.rank,N=t.end.bBigMove,D=t.end.bIsBreak,V=0,k=-1;for(let e=0;e<=_;e++){let s=e<_?this.parent.m_param2[e]:1;if(s!==V){let i=this.parent.allocResultSegment(),n=this.parent.m_resultSegments[i];m.queryCut(V,s,n,!1),n.get().snapControlPoints(r*r);let a,o,h,g,u=new l.P,p=new l.P,d=!1,c=!1,f=!1,P=!1;if(-1!==k){let e=H[k];a=y[e],o=S[e],u.assign(x[e]),f=I[e].bBigMove,d=I[e].bIsBreak}else a=t.start.weight,o=t.start.rank,f=t.start.bBigMove,d=t.start.bIsBreak,u.assign(n.get().getStartXY());if(e!==_){let t=H[e];h=y[t],g=S[t],p.assign(x[t]),P=I[t].bBigMove,c=I[t].bIsBreak}else h=b,g=T,P=N,c=D,p.assign(n.get().getEndXY());let E=w;s<1&&(this.splitEdgeInPlace(w),E=w.getNextInChain()),this.updateSegmentOnly(w,i),0!==w.start.hash&&!w.start.pt.equals(u)&&(this.m_newNodes.push(w.start),this.removeNodeFromHash(w.start),w.start.hash=0),0!==w.end.hash&&!w.end.pt.equals(p)&&(this.m_newNodes.push(w.end),this.removeNodeFromHash(w.end),w.end.hash=0),w.start.pt.assign(u),w.end.pt.assign(p),w.start.bBigMove||=f,w.end.bBigMove||=P,w.start.bIsBreak||=d,w.end.bIsBreak||=c,w.start.weight=a,w.start.rank=o,w.end.weight=h,w.end.rank=g,w=E,V=s,k=e}else-1===k&&(k=e)}let A=w.getNextInChain();return this.postProcessResultPartsForCurves(e,F,t,A,n+1),u?3:2}intersectCurves(e,t){2!==this.parent.m_inputSegments.length&&(0,i.d)(""),this.parent.m_changed1=!1,this.parent.m_changed2=!1,this.parent.m_tolerance=e,this.m_hashTableOfEqualsSize=0,this.m_hashTableOfEquals=(0,l.D)(16);let r=n.Envelope2D.constructEmpty();for(let e=0;e<2;e++){let t=this.parent.allocResultSegmentFromSegment(this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex]),s=n.Envelope2D.constructEmpty();this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex].queryLooseEnvelope(s),r.mergeEnvelope2D(s);let i=this.parent.m_inputParts[e];this.addSegment(t,0,i.weightStart,i.rankStart,i.weightEnd,i.rankEnd,i.weightInterior,i.rankInterior,i.u.bBreakStart,i.u.bBreakEnd,i.segmentParentage)}r.inflateCoords(100*e,100*e),this.m_origin.assign(r.getLowerLeft()),this.m_cell.setCoords(2*e,2*e),this.m_pairs.push(_e(this.m_chainOrigin1.nextInChain,this.m_chainOrigin2.nextInChain,0,t));let s=0,a=!0;for(;this.m_pairs.length;){let t=this.m_pairs.at(-1);this.m_pairs.pop(),(0,i.g)(t.recursion>=0),(0,i.g)(t.recursion<=256),this.clusterNodes(e);let r=this.intersectCurvesHelper(t.edge1,t.edge2,e,t.bIsIntersecting,t.recursion);a&&(a=!1,s=r)}for(let e=0;e<2;e++){let t=0===e?this.parent.m_resultParts1:this.parent.m_resultParts2,r=0===e?this.m_chainOrigin1:this.m_chainOrigin2;for(let e=r.nextInChain;null!=e;e=e.getNextInChain())t.push(this.parent.newIntersectionPart_(e.segmentIndex,e.start.weight,e.start.rank,e.end.weight,e.end.rank,e.weight,e.rank,e.start.bIsBreak,e.end.bIsBreak,e.segmentParentage)),t.at(-1).u.bBigMoveStart=e.start.bBigMove,t.at(-1).u.bBigMoveEnd=e.end.bBigMove}return s}tryOverlapIntersectCurves(e,t,r,s){let n=this.parent.m_resultSegments[e.segmentIndex].get(),o=this.parent.m_resultSegments[t.segmentIndex].get(),m=n.getStartXY().equals(o.getStartXY())&&n.getEndXY().equals(o.getEndXY()),h=n.getStartXY().equals(o.getEndXY())&&n.getEndXY().equals(o.getStartXY());if(!m&&!h)return 0;let g=(0,a.$)(n,o,!0);if(0!==g&&(0,a.a0)(n,o)&&e.segmentParentage===t.segmentParentage){let e=!1;if(g>0)e=n.equals(o);else{(0,i.g)(-1===g);let t=new a.S({segment:o});t.get().reverse(),e=n.equals(t.get())}if(e)return 1}let u=r*le.c_smallToleranceFactor,_=!1;if(0===g){let e=[.5,.25,.75,.125,.375,.625,.875,.5625,.3125];for(let t=0,s=e.length;t<s;++t){let s=e[t],i=new l.P;n.queryCoord2D(s,i);let a=o.getClosestCoordinate(i,!1),m=new l.P;o.queryCoord2D(a,m);let h=l.P.distance(i,m);if(h>r)return 0;_||=h>u}for(let t=0,s=e.length;t<s;++t){let s=e[t],i=new l.P;o.queryCoord2D(s,i);let a=n.getClosestCoordinate(i,!1),m=new l.P;n.queryCoord2D(a,m);let h=l.P.distance(i,m);if(h>r)return 0;_||=h>u}}let p=e.rank,d=t.rank;return p===d&&(p*=le.c_maxGeometryTypeToRankDelta,d*=le.c_maxGeometryTypeToRankDelta,p+=de(n.getGeometryType(),n,!0),d+=de(o.getGeometryType(),o,!0)),p>d?(t.copyFromWhenOverlap(this,e,m),t.transferAttributes(this,n,m)):d>p?(e.copyFromWhenOverlap(this,t,m),e.transferAttributes(this,o,m)):e.segmentParentage<=t.segmentParentage?(e.weight+=t.weight,t.copyFromWhenOverlap(this,e,m),t.transferAttributes(this,n,m)):(t.weight=e.weight+t.weight,e.copyFromWhenOverlap(this,t,m),e.transferAttributes(this,o,m)),_?3:2}postProcessResultPartsForCurves(e,t,r,s,n){n===(0,l.Y)()&&(0,i.d)("curve_helper");for(let r=e;r!==t;r=r.getNextInChain())this.updateSegmentToNodes(r);for(let e=r;e!==s;e=e.getNextInChain())this.updateSegmentToNodes(e);for(let a=e;a!==t;a=a.getNextInChain()){let e=a.end.pt.sub(a.start.pt);for(let t=r;t!==s;t=t.getNextInChain()){let r=0;if(a.start.pt.equals(t.start.pt)&&a.end.pt.equals(t.end.pt)?r=1:a.start.pt.equals(t.end.pt)&&a.end.pt.equals(t.start.pt)&&(r=-1),!r){let r=+!!a.start.pt.equals(t.start.pt);if(r||(r=a.end.pt.equals(t.end.pt)?2:0,r||(r=a.end.pt.equals(t.start.pt)?3:0,r||=a.start.pt.equals(t.end.pt)?4:0)),r){let s,o=t.end.pt.sub(t.start.pt),l=e.dotProduct(o);switch(r){case 1:case 2:s=l>0;break;case 3:case 4:s=l<0;break;default:(0,i.d)("post_process_result_parts_for_curves_")}s&&this.m_pairs.push(_e(a,t,n,!1))}continue}let s=this.parent.m_resultSegments[a.segmentIndex],o=this.parent.m_resultSegments[t.segmentIndex],m=[.5,.25,.75];for(let e=0,t=m.length;e<t;++e){let t=m[e],i=new l.P;s.get().queryCoord2D(t,i);let n=o.get().getClosestCoordinate(i,!1),a=new l.P;if(o.get().queryCoord2D(n,a),l.P.distance(i,a)>this.parent.m_tolerance){r=0;break}}if(!r){this.m_pairs.push(_e(a,t,n,!1));continue}for(let e=0,t=m.length;e<t;++e){let t=m[e],i=new l.P;o.get().queryCoord2D(t,i);let n=s.get().getClosestCoordinate(i,!1),a=new l.P;if(s.get().queryCoord2D(n,a),l.P.distance(i,a)>this.parent.m_tolerance){r=0;break}}if(!r){this.m_pairs.push(_e(a,t,n,!1));continue}a.equalEdge=t,t.equalEdge=a;let h=a.rank,g=t.rank;h===g&&(h*=le.c_maxGeometryTypeToRankDelta,g*=le.c_maxGeometryTypeToRankDelta,h+=de(s.get().getGeometryType(),s.get(),!0),g+=de(o.get().getGeometryType(),o.get(),!0)),h>g||h===g&&a.segmentParentage<=t.segmentParentage?(s.copyTo(o,!1),t.segmentParentage=a.segmentParentage,-1===r&&o.get().reverse()):(o.copyTo(s,!1),a.segmentParentage=t.segmentParentage,-1===r&&s.get().reverse());break}}this.updateAttachedEdgesAfterNodeChange(e.start),t&&this.updateAttachedEdgesAfterNodeChange(t.start),this.updateAttachedEdgesAfterNodeChange(r.start),s&&this.updateAttachedEdgesAfterNodeChange(s.start)}processDoublyConnectedEdges(e,t,r,s){r===(0,l.Y)()&&(0,i.d)("curve_helper");let n=this.getSegment(e).get(),o=this.getSegment(t).get(),m=n.getStartXY().equals(o.getStartXY())&&n.getEndXY().equals(o.getEndXY())?1:n.getEndXY().equals(o.getStartXY())&&n.getStartXY().equals(o.getEndXY())?-1:0;if(0!==m){let i=new a.S;n.queryCut(0,.5,i),i.get().snapControlPoints(s*s);let l=new a.S;n.queryCut(.5,1,l),l.get().snapControlPoints(s*s),this.splitEdgeInPlace(e),e.end.pt=i.get().getEndXY(),e.segmentIndex=this.parent.allocResultSegmentFromBuffer(i),e.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l);let h=o.getClosestCoordinate(e.end.pt,!1);return Math.abs(h-.5)>.2&&(h=.5),o.queryCut(0,h,i),i.get().snapControlPoints(s*s),o.queryCut(h,1,l),l.get().snapControlPoints(s*s),this.splitEdgeInPlace(t),t.end.pt=i.get().getEndXY(),t.segmentIndex=this.parent.allocResultSegmentFromBuffer(i),t.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l),m>0?(this.m_pairs.push(_e(e,t,r,!1)),this.m_pairs.push(_e(e.getNextInChain(),t.getNextInChain(),r,!1))):(this.m_pairs.push(_e(e,t.getNextInChain(),r,!1)),this.m_pairs.push(_e(e.getNextInChain(),t,r,!1))),!0}return!1}newNode(e,t,r,s){let i=new ue;return this.m_newNodes.push(i),i.pt=e,i.rank=r,i.weight=t,i.bIsBreak=s,i}newEdge(e,t,r,s,i,n){let a=new ge;return a.start=e,a.end=t,e.nextInChain=a,t.prevInChain=a,a.segmentIndex=r,a.segmentParentage=n,a.rank=i,a.weight=s,a}splitEdgeInPlace(e){e.segmentIndex=-1;let t=new ge,r=new ue;this.m_newNodes.push(r),r.pt.setNAN(),r.nextInChain=t,r.prevInChain=e,r.prevInHash=null,r.nextInHash=null,r.prevEqual=null,r.nextEqual=null,r.weight=e.weight,r.rank=e.rank,r.bIsBreak=!1,r.bBigMove=!1,t.start=r,t.segmentIndex=-1,t.end=e.end,t.end.prevInChain=t,t.rank=e.rank,t.weight=e.weight,t.segmentParentage=e.segmentParentage,e.end=r,e.equalEdge&&(e.equalEdge.equalEdge=null),e.equalEdge=null}updateSegmentOnly(e,t){e.segmentIndex=t}updateAttachedEdgesAfterNodeChange(e){for(let t=e.equalListHead();null!==t;t=t.nextEqual)this.updateAttachedEdgesAfterNodeChangeImpl(t)}updateAttachedEdgesAfterNodeChangeImpl(e){let t=e.prevInChain;if(t&&t.hasSegment()){let r=this.getSegment(t).get();e.pt.equals(r.getEndXY())||(r.setCoordsForIntersector(t.start.pt,t.end.pt,!1),r.ensureXYMonotone())}let r=e.nextInChain;if(r&&r.hasSegment()){let t=this.getSegment(r).get();e.pt.equals(t.getStartXY())||(t.setCoordsForIntersector(r.start.pt,r.end.pt,!1),t.ensureXYMonotone())}}updateSegmentToNodes(e){let t=this.getSegment(e).get();(!e.start.pt.equals(t.getStartXY())||!e.end.pt.equals(t.getEndXY()))&&(t.setCoordsForIntersector(e.start.pt,e.end.pt,!1),t.ensureXYMonotone()),this.updateAttachedEdgesAfterNodeChange(e.start),this.updateAttachedEdgesAfterNodeChange(e.end)}getSegment(e){return this.parent.m_resultSegments[e.segmentIndex]}clusterNodes(e){let t=!1,r=[],s=[],i=[];for(let e=0,t=this.m_newNodes.length;e<t;e++){let r=this.m_newNodes[e];if(null===r)continue;let s=r;for(let i=e+1;i<t;i++){let e=this.m_newNodes[i];null!==e&&r.pt.equals(e.pt)&&(s.nextInHash=e,e.prevInHash=s,s=e,this.m_newNodes[i]=null)}}for(let n=0,a=this.m_newNodes.length;n<a;n++){let a=this.m_newNodes[n];if(null==a)continue;for(a.hash=this.calculateHash(a.pt);;){let n=(0,l.D)(4),o=this.hashTableBinsToCheck(a,n);for(let t=0;t<o;t++)if(null!==n[t])for(let o=n[t];null!==o;){let t=o.nextInHash;l.P.distance(a.pt,o.pt)<=e&&(r.push(o),this.removeNodeFromHash(o),o.hash=0,i.push(o),s.push(o)),o=t}let m=!1;for(let e of r)if(!a.pt.equals(e.pt)){let r=ie(a.pt,e.pt,a.weight,a.rank,e.weight,e.rank);a.pt.assign(r.pt),a.weight=r.weight,a.rank=r.rank,m=!0,t=!0}if(r.length=0,!m)break;a.hash=this.calculateHash(a.pt)}i.push(a),s.push(a);for(let e=a.nextInHash;null!==e;){e.prevInHash=null;let t=e.nextInHash;e.nextInHash=null,i.push(e),s.push(e),e=t}let o=a.hash,m=null,h=null;for(let e of s)a!==e&&(e.hash=o,e.pt.assign(a.pt),e.rank=a.rank,e.weight=a.weight),e.prevInHash=m,m&&(m.nextInHash=e),e.prevEqual=h,e.nextEqual=null,h&&(h.nextEqual=e),h=e,m=e;let g=o%this.m_hashTableOfEquals.length;m.nextInHash=this.m_hashTableOfEquals[g],null!==this.m_hashTableOfEquals[g]&&(this.m_hashTableOfEquals[g].prevInHash=m),this.m_hashTableOfEquals[g]=s[0],this.m_hashTableOfEqualsSize+=s.length,s.length=0,this.rehashIfNeeded()}if(this.m_newNodes.length=0,t)for(let e of i)this.updateAttachedEdgesAfterNodeChange(e)}rehashIfNeeded(){if(2*this.m_hashTableOfEqualsSize>this.m_hashTableOfEquals.length){let e=this.m_hashTableOfEquals;this.m_hashTableOfEquals=(0,l.D)(2*e.length),this.m_hashTableOfEqualsSize=0;for(let t of e){let e=t;for(;e;){let t=e.nextInHash;e.nextInHash=null,e.prevInHash=null,this.addNodeToHashImpl(e),e=t}}}}addNodeToHashImpl(e){let t=e.hash%this.m_hashTableOfEquals.length,r=this.m_hashTableOfEquals[t];e.nextInHash=r,null!==r&&(r.prevInHash=e),this.m_hashTableOfEquals[t]=e,this.m_hashTableOfEqualsSize++}removeNodeFromHash(e){let t=e.hash%this.m_hashTableOfEquals.length,r=e.prevInHash,s=e.nextInHash;r?r.nextInHash=s:this.m_hashTableOfEquals[t]=s,s&&(s.prevInHash=r),this.m_hashTableOfEqualsSize--,e.prevInHash=null,e.nextInHash=null}hashTableBinsToCheck(e,t){let r=(e.pt.x-this.m_origin.x)/this.m_cell.x,s=(e.pt.y-this.m_origin.y)/this.m_cell.y,i=(0,l.i)()-1,n=Math.round((0,l.s)(r,-i,i)),a=Math.round((0,l.s)(s,-i,i)),o=n|a<<32;o=(0,l.C)(o),t[0]=this.m_hashTableOfEquals[o%this.m_hashTableOfEquals.length];let m=n+1|a<<32;m=(0,l.C)(m);let h=1;t[1]=this.m_hashTableOfEquals[m%this.m_hashTableOfEquals.length],t[1]!==t[0]&&(h=2);let g=n+1|a+1<<32;g=(0,l.C)(g),t[h]=this.m_hashTableOfEquals[g%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}h++;let u=n|a+1<<32;u=(0,l.C)(u),t[h]=this.m_hashTableOfEquals[u%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}return h++,h}calculateHash(e){let t=(e.x-this.m_origin.x)/this.m_cell.x,r=(e.y-this.m_origin.y)/this.m_cell.y,s=(0,l.i)()-1,i=Math.round((0,l.s)(t,-s,s))|Math.round((0,l.s)(r,-s,s))<<32;return i=(0,l.C)(i),0===i&&(i=1),i}processSharpCorners(e,t,r,s){if(this.parent.m_param1.length=0,this.parent.m_param2.length=0,e.getStartXY().equals(t.getStartXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,0,0,r,2,i,n,s);if(o){this.parent.m_param1.push(0),this.parent.m_param2.push(0);for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return o+1}}if(e.getEndXY().equals(t.getEndXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,1,1,r,2,i,n,s);if(o){for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(1),o+1}}if(e.getStartXY().equals(t.getEndXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,0,1,r,2,i,n,s);if(o){this.parent.m_param1.push(0),this.parent.m_param2.push(1);for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return o+1}}if(e.getEndXY().equals(t.getStartXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,1,0,r,2,i,n,s);if(o){for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(0),o+1}}return 0}}function de(e,t,r){let s=0;switch(e){case i.G.enumLine:s=0;break;case i.G.enumBezier:s=2;break;case i.G.enumRationalBezier2:s=3;break;case i.G.enumBezier2:s=1;break;case i.G.enumEllipticArc:s=0===t.projectionBehavior()?5:4;break;default:(0,i.d)("")}return r?5-s:s}class ce extends ${m_parent;constructor(e){super(e.m_shape,e.m_tolerance,!1),this.m_parent=e}compare(e,t,r){if(this.m_bIntersectionDetected)return-1;let s=e.getElement(r),i=this.m_parent.getEdgeOriginVertices(t),n=this.m_parent.m_edgeVertices.getFirstElement(i),a=this.m_parent.getEdgeOriginVertices(s),o=this.m_parent.m_edgeVertices.getFirstElement(a);return this.m_currentNode=r,this.compareSegments(t,n,s,o)}}class fe extends ee{m_parent;constructor(e){super(e.m_shape,e.m_tolerance),this.m_parent=e}compare(e,t){if(this.m_bIntersectionDetected)return-1;let r=e.getElement(t),s=this.m_parent.getEdgeOriginVertices(r),i=this.m_parent.m_edgeVertices.getFirstElement(s);return this.m_currentNode=t,this.compareVertex(e,t,i)}}class xe extends o.F{m_shape;pt1=l.P.getNAN();pt2=l.P.getNAN();constructor(e){super(),this.m_shape=e}compare(e,t,r){this.m_shape.queryXY(t,this.pt1);let s=e.getElement(r);return this.m_shape.queryXY(s,this.pt2),this.pt1.compare(this.pt2)}}class Pe{m_shape;m_point=l.P.getNAN();m_pt=l.P.getNAN();constructor(e){this.m_shape=e}setPoint(e){this.m_point.setCoordsPoint2D(e)}compare(e,t){let r=e.getElement(t);return this.m_shape.queryXY(r,this.m_pt),this.m_point.compare(this.m_pt)}}class ye{m_shape=null;m_progressTracker=null;m_edges=new o.S(8);m_clusters=new o.S(5);m_clusterVertices=new Q(!1);m_edgeVertices=new Q(!1);m_helperPoint=new o.P;m_eventQ=new o.T;m_sweepStructure=new o.T;m_bComplications=!1;m_bTrackChanges;m_sweepComparator=null;m_tempEdgeBuffer=[];m_modifiedClusters=[];m_edgesToInsertInSweepStructure=[];m_prevNeighbour=-1;m_nextNeighbour=-1;m_bContinuingSegmentChainOptimization=!1;m_progressCounter=0;m_segmentIntersector=new le;m_segBuf1=new a.S;m_segBuf2=new a.S;m_sweepPoint=new l.P(0,0);m_tolerance=0;m_toleranceSqr=0;m_sweepPointCluster=-1;m_vertexClusterIndex=-1;m_bCracked=!1;m_bSweepPointClusterWasModified=!1;constructor(e,t){this.m_progressTracker=e,this.m_bTrackChanges=t}hadComplications(){return this.m_bComplications}sweep(e,t){let r=new m.T;r.setSwapCoordinates(),e.applyTransformation(r),this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t;let s=this.sweepImpl_();return e.applyTransformation(r),s||=(this.fillEventQueuePass2(),this.sweepImpl_()||s),this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_shape=null,this.m_bCracked}sweepVertical(e,t){this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bComplications=!1;let r=this.sweepImpl_();if(!this.m_bComplications){let s=e.filterClosePoints(t,!0,!1,this.m_bTrackChanges,-1);this.m_bComplications=1===s,r||=1===s}return-1!==this.m_vertexClusterIndex&&(this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_vertexClusterIndex=-1),this.m_shape=null,r}getEdgeCluster(e,t){return this.m_edges.getField(e,0+t)}setEdgeCluster_(e,t,r){this.m_edges.setField(e,0+t,r)}getEdgeOriginVertices(e){return this.m_edges.getField(e,2)}setEdgeOriginVertices_(e,t){this.m_edges.setField(e,2,t)}getNextEdgeEx(e,t){return this.m_edges.getField(e,3+t)}setNextEdgeEx_(e,t,r){this.m_edges.setField(e,3+t,r)}getEdgeSweepNode(e){return this.m_edges.getField(e,7)}setEdgeSweepNode_(e,t){this.m_edges.setField(e,7,t)}getNextEdge(e,t){let r=this.getEdgeEnd(e,t);return this.m_edges.getField(e,3+r)}setNextEdge_(e,t,r){let s=this.getEdgeEnd(e,t);this.m_edges.setField(e,3+s,r)}getPrevEdge(e,t){let r=this.getEdgeEnd(e,t);return this.m_edges.getField(e,5+r)}setPrevEdge_(e,t,r){let s=this.getEdgeEnd(e,t);this.m_edges.setField(e,5+s,r)}getClusterVertices(e){return this.m_clusters.getField(e,0)}setClusterVertices_(e,t){this.m_clusters.setField(e,0,t)}getClusterSweepEdgeList(e){return this.m_clusters.getField(e,2)}setClusterSweepEdgeList_(e,t){this.m_clusters.setField(e,2,t)}getClusterFirstEdge(e){return this.m_clusters.getField(e,1)}setClusterFirstEdge_(e,t){this.m_clusters.setField(e,1,t)}getClusterEventQNode(e){return this.m_clusters.getField(e,3)}setClusterEventQNode_(e,t){this.m_clusters.setField(e,3,t)}newCluster_(e){let t=this.m_clusters.newElement(),r=this.m_clusterVertices.createList();return this.setClusterVertices_(t,r),-1!==e&&(this.m_clusterVertices.addElement(r,e),this.m_shape.setUserIndex(e,this.m_vertexClusterIndex,t)),t}deleteCluster_(e){this.m_clusters.deleteElement(e)}addVertexToCluster_(e,t){let r=this.getClusterVertices(e);this.m_clusterVertices.addElement(r,t),this.m_shape.setUserIndex(t,this.m_vertexClusterIndex,e)}newEdge_(e){let t=this.m_edges.newElement(),r=this.m_edgeVertices.createList();return this.setEdgeOriginVertices_(t,r),-1!==e&&this.m_edgeVertices.addElement(r,e),t}addVertexToEdge_(e,t){let r=this.getEdgeOriginVertices(e);this.m_edgeVertices.addElement(r,t)}deleteEdge_(e){this.m_edges.deleteElement(e);let t=this.m_edgesToInsertInSweepStructure.findIndex(t=>t===e);t>=0&&(0,l.N)(this.m_edgesToInsertInSweepStructure,t)}addEdgeToCluster(e,t){-1===this.getEdgeCluster(e,0)?this.setEdgeCluster_(e,0,t):-1===this.getEdgeCluster(e,1)?this.setEdgeCluster_(e,1,t):(0,i.d)(""),this.addEdgeToClusterImpl_(e,t)}addEdgeToClusterImpl_(e,t){let r=this.getClusterFirstEdge(t);if(-1!==r){let s=this.getNextEdge(r,t);this.setPrevEdge_(s,t,e),this.setNextEdge_(e,t,s),this.setNextEdge_(r,t,e),this.setPrevEdge_(e,t,r)}else this.setPrevEdge_(e,t,e),this.setNextEdge_(e,t,e),this.setClusterFirstEdge_(t,e)}getEdgeEnd(e,t){return this.getEdgeCluster(e,0)===t?0:1}mergeClusters_(e,t){this.dbgCheckCluster_(e),this.dbgCheckCluster_(t);let r=this.getClusterEventQNode(t);-1!==r&&(this.m_eventQ.deleteNode(r),this.setClusterEventQNode_(t,-1));let s=this.getClusterFirstEdge(e),i=this.getClusterFirstEdge(t);if(-1!==i){let r=i,n=i,a=!1;do{this.dbgCheckEdge_(r),a=!1;let s=this.getEdgeEnd(r,t),o=this.getNextEdgeEx(r,s);if(this.getEdgeCluster(r,s+1&1)===e){this.disconnectEdge_(r);let e=this.getEdgeOriginVertices(r);if(this.m_edgeVertices.deleteList(e),this.deleteEdge_(r),r===o){i=-1;break}i===r&&(i=this.getClusterFirstEdge(t),n=o,a=!0)}r=o}while(r!==n||a);if(-1!==i){do{let s=this.getEdgeEnd(r,t),i=this.getNextEdgeEx(r,s);this.setEdgeCluster_(r,s,e),r=i}while(r!==n);if(s=this.getClusterFirstEdge(e),-1!==s){let t=this.getNextEdge(s,e),r=this.getNextEdge(i,e);t===s?(this.setClusterFirstEdge_(e,i),this.addEdgeToClusterImpl_(s,e),this.setClusterFirstEdge_(e,s)):r===i&&this.addEdgeToClusterImpl_(i,e),this.setNextEdge_(i,e,t),this.setPrevEdge_(t,e,i),this.setNextEdge_(s,e,r),this.setPrevEdge_(r,e,s)}else this.setClusterFirstEdge_(e,i)}}let n=this.getClusterVertices(e),a=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(a);-1!==t;t=this.m_clusterVertices.getNext(t)){let r=this.m_clusterVertices.getElement(t);this.m_shape.setUserIndex(r,this.m_vertexClusterIndex,e)}this.m_clusterVertices.concatenateLists(n,a),this.deleteCluster_(t),this.dbgCheckCluster_(e)}mergeEdges_(e,t){this.dbgCheckEdge_(e),this.dbgCheckEdge_(t);let r=this.getEdgeCluster(e,0),s=this.getEdgeCluster(e,1),i=this.getEdgeCluster(t,0),n=this.getEdgeCluster(t,1),a=this.getEdgeOriginVertices(e),o=this.getEdgeOriginVertices(t);if(this.m_edgeVertices.concatenateLists(a,o),t===this.getClusterFirstEdge(r)&&this.setClusterFirstEdge_(r,e),t===this.getClusterFirstEdge(s)&&this.setClusterFirstEdge_(s,e),this.disconnectEdge_(t),this.deleteEdge_(t),!(r===i&&s===n||s===i&&r===n)){let e=this.getClusterXY(r),t=this.getClusterXY(i);e.isEqualPoint2D(t)?(r!==i&&this.mergeClusters_(r,i),s!==n&&this.mergeClusters_(s,n)):(s!==i&&this.mergeClusters_(s,i),r!==n&&this.mergeClusters_(r,n))}this.dbgCheckEdge_(e)}disconnectEdge_(e){let t=this.getEdgeCluster(e,0),r=this.getEdgeCluster(e,1);this.disconnectEdgeFromCluster_(e,t),this.disconnectEdgeFromCluster_(e,r)}disconnectEdgeFromCluster_(e,t){let r=this.getNextEdge(e,t),s=this.getPrevEdge(e,t),i=this.getClusterFirstEdge(t);r===e?this.setClusterFirstEdge_(t,-1):(this.setNextEdge_(s,t,r),this.setPrevEdge_(r,t,s),i===e&&this.setClusterFirstEdge_(t,r))}applyIntersectorToEditShape_(e,t,r){let s=this.m_edgeVertices.getFirst(e),i=this.m_edgeVertices.getElement(s),n=this.getClusterFromVertex(i),a=this.m_shape.getNextVertex(i),o=this.getClusterFromVertex(a),l=this.m_shape.getXY(i),m=this.m_shape.getXY(a),h=!1,g=!1,u=t.getResultSegment(r,0).getStartXY(),_=t.getResultSegment(r,t.getResultSegmentCount(r)-1).getEndXY();l.equals(u)||(h=!0),m.equals(_)||(g=!0),this.m_shape.splitSegmentWithIntersector(i,t,r,!0,!0);let p=this.m_bTrackChanges&&t.getSegmentChanged(r);for(p&&this.m_shape.setGeometryModifiedWithVertex(i,!0),s=this.m_edgeVertices.getNext(s);-1!==s;s=this.m_edgeVertices.getNext(s)){let e=this.m_edgeVertices.getElement(s),i=this.getClusterFromVertex(e)===n;this.m_shape.splitSegmentWithIntersector(e,t,r,i,!0),p&&this.m_shape.setGeometryModifiedWithVertex(e,!0)}if(h&&this.updateClusterXY(!0,n,u,t.getResultSegmentStartPointWeight(r,0),t.getResultSegmentStartPointRank(r,0)),g){let e=t.getResultSegmentCount(r)-1;this.updateClusterXY(!0,o,_,t.getResultSegmentEndPointWeight(r,e),t.getResultSegmentEndPointRank(r,e))}}createEdgesAndClustersFromSplitEdge_(e,t,r){this.dbgCheckNewEdgesArray_();let s=this.getEdgeOriginVertices(e),i=this.getEdgeCluster(e,0),n=this.getEdgeCluster(e,1),a=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(a);let l=o.S.impossibleIndex3();this.setEdgeSweepNode_(a,l),this.m_tempEdgeBuffer.push(a),this.addEdgeToCluster(a,i);let m=t.getResultSegmentCount(r);for(let e=1;e<m;e++){let e=this.newCluster_(-1);this.m_modifiedClusters.push(e),this.m_tempEdgeBuffer.push(e),this.addEdgeToCluster(a,e);let t=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(t),this.setEdgeSweepNode_(t,l),this.m_tempEdgeBuffer.push(t),this.addEdgeToCluster(t,e),a=t}this.addEdgeToCluster(a,n);for(let e=this.m_edgeVertices.getFirst(s);-1!==e;e=this.m_edgeVertices.getNext(e)){let t=this.m_edgeVertices.getElement(e);if(this.getClusterFromVertex(t)===i){let e=0,r=this.m_tempEdgeBuffer.length;do{if(e>0){let r=this.m_tempEdgeBuffer[e-1];this.addVertexToCluster_(r,t)}let r=this.m_tempEdgeBuffer[e];e+=2,this.addVertexToEdge_(r,t),t=this.m_shape.getNextVertex(t)}while(e<r)}else{let e=this.m_tempEdgeBuffer.length-1;do{if(e<this.m_tempEdgeBuffer.length-2){let r=this.m_tempEdgeBuffer[e+1];this.addVertexToCluster_(r,t)}let r=this.m_tempEdgeBuffer[e];e-=2,this.addVertexToEdge_(r,t),t=this.m_shape.getNextVertex(t)}while(e>=0)}}this.m_tempEdgeBuffer.length=0,this.dbgCheckNewEdgesArray_()}getVertexFromClusterIndex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_vertexClusterIndex)}processSplitHelper1_(e,t,r){let s=this.getEdgeCluster(t,0),i=this.getClusterXY(s),n=this.getEdgeCluster(t,1),a=this.getClusterXY(n),l=r.getResultSegmentCount(e),m=r.getResultSegment(e,0),h=m.getStartXY();if(i.isEqualPoint2D(h)||(this.m_bComplications||i.compare(this.m_sweepPoint)*h.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(s,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(s)),!this.m_bComplications&&l>1){let e=i.compare(a),t=m.getEndXY();(i.compare(t)!==e||t.compare(a)!==e||t.compare(this.m_sweepPoint)<0)&&(this.m_bComplications=!0)}m=r.getResultSegment(e,l-1);let g=m.getEndXY();a.isEqualPoint2D(g)||(this.m_bComplications||a.compare(this.m_sweepPoint)*g.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(n,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(n)),this.m_tempEdgeBuffer.push(t);for(let e=0,r=this.m_tempEdgeBuffer.length;e<r;e++){let r=this.m_tempEdgeBuffer[e],s=this.getEdgeSweepNode(r);o.S.isValidElement(s)&&(this.m_sweepStructure.deleteNode(s),this.setEdgeSweepNode_(r,-1));let i=o.S.impossibleIndex3();r!==t&&this.getEdgeSweepNode(r)!==i&&(this.m_edgesToInsertInSweepStructure.push(r),this.setEdgeSweepNode_(r,i))}this.m_tempEdgeBuffer.length=0}checkAndFixIntersection_(e,t){let r=this.m_sweepStructure.getElement(e);return this.m_sweepComparator.compare(this.m_sweepStructure,r,t),!!this.m_sweepComparator.intersectionDetected()&&(this.m_sweepComparator.clearIntersectionDetectedFlag(),this.fixIntersection_(e,t),!0)}fixIntersection_(e,t){this.m_bCracked=!0;let r=this.m_sweepStructure.getElement(e),s=this.m_sweepStructure.getElement(t),i=null,n=null,a=this.getEdgeOriginVertices(r),o=this.m_edgeVertices.getFirstElement(a),l=this.getEdgeOriginVertices(s),m=this.m_edgeVertices.getFirstElement(l);this.m_shape.querySegment(o,this.m_segBuf1,!1,!1),i=this.m_segBuf1.get();let h=this.m_shape.getNextVertex(o),g=this.m_shape.getWeight(o),u=this.m_shape.getSegmentParentageBreakVertex(o),_=this.m_shape.getWeight(h),p=this.m_shape.getSegmentParentageBreakVertex(h),d=this.m_shape.getSegmentWeight(o),c=this.m_shape.getRank(o),f=this.m_shape.getRank(h),x=this.m_shape.getSegmentRank(o),P=this.m_shape.getSegmentParentage(o);this.m_shape.querySegment(m,this.m_segBuf2,!1,!1),n=this.m_segBuf2.get();let y=this.m_shape.getNextVertex(m),E=this.m_shape.getWeight(m),S=this.m_shape.getSegmentParentageBreakVertex(m),C=this.m_shape.getWeight(y),I=this.m_shape.getSegmentParentageBreakVertex(y),v=this.m_shape.getSegmentWeight(m),G=this.m_shape.getRank(m),w=this.m_shape.getRank(y),b=this.m_shape.getSegmentRank(m),T=this.m_shape.getSegmentParentage(m);this.m_segmentIntersector.pushSegment(i,g,c,_,f,d,x,u,p,P),this.m_segmentIntersector.pushSegment(n,E,G,C,w,v,b,S,I,T),3===this.m_segmentIntersector.intersect2D(this.m_tolerance,!0)&&(this.m_bComplications=!0),this.splitEdge_(r,s,-1,this.m_segmentIntersector),this.m_segmentIntersector.clear()}fixIntersectionPointSegment_(e,t){this.m_bCracked=!0;let r=this.m_sweepStructure.getElement(t),s=null,i=this.getEdgeOriginVertices(r),n=this.m_edgeVertices.getFirstElement(i);this.m_shape.querySegment(n,this.m_segBuf1,!1,!1),s=this.m_segBuf1.get();let a=this.m_shape.getNextVertex(n),o=this.m_shape.getWeight(n),l=this.m_shape.getSegmentParentageBreakVertex(n),m=this.m_shape.getWeight(a),h=this.m_shape.getSegmentParentageBreakVertex(a),g=this.m_shape.getSegmentWeight(n),u=this.m_shape.getRank(n),_=this.m_shape.getRank(a),p=this.m_shape.getSegmentRank(n),d=this.m_shape.getSegmentParentage(n),c=this.getClusterFirstVertex(e);this.m_segmentIntersector.pushSegment(s,o,u,m,_,g,p,l,h,d),this.m_shape.queryPoint(c,this.m_helperPoint);let f=this.m_shape.getWeight(c),x=this.m_shape.getRank(c);this.m_segmentIntersector.intersect2DEx(this.m_tolerance,this.m_helperPoint,x,f,!0),this.splitEdge_(r,-1,e,this.m_segmentIntersector),this.m_segmentIntersector.clear()}insertNewEdges_(){if(0===this.m_edgesToInsertInSweepStructure.length)return!0;this.dbgCheckNewEdgesArray_();let e=!0,t=0,r=this.m_edgesToInsertInSweepStructure.length,s=Math.max(2*r+200,this.m_sweepStructure.size()+200);for(;this.m_edgesToInsertInSweepStructure.length;){if(this.m_edgesToInsertInSweepStructure.length>Math.max(100,this.m_shape.getTotalPointCount())||t>s){this.m_edgesToInsertInSweepStructure.length=0,this.m_bComplications=!0,e=!1;break}let r=this.m_edgesToInsertInSweepStructure.at(-1);this.m_edgesToInsertInSweepStructure.pop(),this.setEdgeSweepNode_(r,-1);let i=this.isEdgeOnSweepLine_(r);o.S.isValidElement(i)?(this.insertNewEdgeToSweepStructure_(r,i),t++):i!==o.S.impossibleIndex2()&&(e=!1),this.m_bContinuingSegmentChainOptimization=!1}return e}insertNewEdgeToSweepStructure_(e,t){let r;if(this.m_bContinuingSegmentChainOptimization?(r=this.m_sweepStructure.addElementAtPosition(this.m_prevNeighbour,this.m_nextNeighbour,e,!0,!0),this.m_bContinuingSegmentChainOptimization=!1):r=this.m_sweepStructure.addUniqueElement(e),-1===r){let t=this.m_sweepStructure.getDuplicateElement(),r=this.m_sweepStructure.getElement(t);return this.mergeEdges_(r,e),!1}if(this.setEdgeSweepNode_(e,r),this.m_sweepComparator.intersectionDetected()){this.m_sweepComparator.clearIntersectionDetectedFlag();let e=this.m_sweepComparator.getLastComparedNode();return this.m_prevNeighbour===e&&(this.m_prevNeighbour=-1),this.m_nextNeighbour===e&&(this.m_nextNeighbour=-1),this.fixIntersection_(e,r),!0}return!1}isEdgeOnSweepLine_(e){let t=this.getEdgeCluster(e,0),r=this.getEdgeCluster(e,1),s=this.getClusterXY(t),i=this.getClusterXY(r);if(l.P.sqrDistance(s,i)<=this.m_toleranceSqr)return this.m_bComplications=!0,-1;let n=s.compare(this.m_sweepPoint),a=i.compare(this.m_sweepPoint);return n<=0&&a>0?r:a<=0&&n>0?t:n>0&&a>0?o.S.impossibleIndex2():-1}fillEventQueue(){let e=new o.a(0),t=this.m_shape.queryVertexIteratorOnSelection();for(let r=t.next();-1!==r;r=t.next())-1!==this.m_shape.getUserIndex(r,this.m_vertexClusterIndex)&&e.add(r);this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0),this.m_eventQ.clear(),this.m_eventQ.setCapacity(e.size()),this.m_eventQ.setComparator(new xe(this.m_shape));let r=l.P.getNAN();r.setNAN();let s=-1;for(let t=0,i=e.size();t<i;t++){let i=e.read(t);if(this.m_shape.getXY(i).isEqualPoint2D(r)){let e=this.m_shape.getUserIndex(i,this.m_vertexClusterIndex);this.mergeClusters_(s,e);continue}s=this.getClusterFromVertex(i),this.m_shape.queryXY(i,r);let n=this.m_eventQ.addBiggestElement(i);this.setClusterEventQNode_(s,n)}}fillEventQueuePass2(){let e=new o.a(0);for(let t=this.m_eventQ.getFirst();-1!==t;t=this.m_eventQ.getNext(t)){let r=this.m_eventQ.getElement(t);e.add(r)}this.m_eventQ.clear(),this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0);for(let t=0,r=e.size();t<r;t++){let r=e.read(t),s=this.getClusterFromVertex(r),i=this.m_eventQ.addBiggestElement(r);this.setClusterEventQNode_(s,i)}}getAffectedEdges(e,t){let r=this.getClusterFirstEdge(e);if(-1===r)return;let s=r;do{let r=this.getEdgeSweepNode(s);o.S.isValidElement(r)&&t.push(s),s=this.getNextEdge(s,e)}while(s!==r)}updateClusterXY(e,t,r,s,i){let n=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(n);-1!==t;t=this.m_clusterVertices.getNext(t)){let n=this.m_clusterVertices.getElement(t);this.m_shape.setXYMonotonicPoint2D(n,r),this.m_shape.setWeight(n,s),this.m_shape.setRank(n,i),e&&this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(n,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}}splitEdge_(e,t,r,s){this.dbgCheckEdge_(e),-1!==t&&this.dbgCheckEdge_(t),this.disconnectEdge_(e),-1!==t&&this.disconnectEdge_(t),this.processSplitHelper1_(0,e,s),-1!==t&&this.processSplitHelper1_(1,t,s),-1!==r&&s.getResultPointChanged()&&this.m_modifiedClusters.push(r);for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e],r=this.getClusterEventQNode(t);-1!==r&&(this.m_eventQ.deleteNode(r),this.setClusterEventQNode_(t,-1))}let i=this.getEdgeOriginVertices(e),n=-1===t?-1:this.getEdgeOriginVertices(t);if(this.applyIntersectorToEditShape_(i,s,0),-1!==n)this.applyIntersectorToEditShape_(n,s,1);else{let e=s.getResultPoint().getXY();this.updateClusterXY(s.getResultPointChanged(),r,e,s.getResultPointWeight(),s.getResultPointRank())}this.createEdgesAndClustersFromSplitEdge_(e,s,0),-1!==t&&this.createEdgesAndClustersFromSplitEdge_(t,s,1),this.m_edgeVertices.deleteList(i),this.deleteEdge_(e),-1!==t&&(this.m_edgeVertices.deleteList(n),this.deleteEdge_(t));for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e];t===this.m_sweepPointCluster&&(this.m_bSweepPointClusterWasModified=!0);let r=this.getClusterEventQNode(t);if(-1===r){let e=this.getClusterFirstVertex(t);if(r=this.m_eventQ.addUniqueElement(e),-1===r){let e=this.m_eventQ.getDuplicateElement(),r=this.m_eventQ.getElement(e),s=this.getClusterFromVertex(r);this.mergeClusters_(s,t)}else this.setClusterEventQNode_(t,r)}}this.m_modifiedClusters.length=0}getClusterXY(e){let t=this.getClusterFirstVertex(e);return this.m_shape.getXY(t)}getClusterFirstVertex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}dbgCheckEdge_(e){}dbgCheckCluster_(e){}dbgCheckNewEdgesArray_(){}dbgSaveSweepStructure_(e){}sweepImpl_(){this.progress_(!0),this.m_bSweepPointClusterWasModified=!1,this.m_sweepPointCluster=-1,null===this.m_sweepComparator&&(this.m_sweepStructure.disableBalancing(),this.m_sweepComparator=new ce(this),this.m_sweepStructure.setComparator(this.m_sweepComparator));let e=[],t=null,r=null;this.m_prevNeighbour=-1,this.m_nextNeighbour=-1,this.m_bContinuingSegmentChainOptimization=!1;let s=o.S.impossibleIndex2(),i=o.S.impossibleIndex3();for(let n=this.m_eventQ.getFirst();-1!==n;){this.progress_(),this.dbgCheckSweepStructure_(),this.m_bContinuingSegmentChainOptimization=!1,this.m_prevNeighbour=-1,this.m_nextNeighbour=-1;let a=this.m_eventQ.getElement(n);this.m_sweepPointCluster=this.getClusterFromVertex(a),this.m_shape.queryXY(a,this.m_sweepPoint),this.m_sweepComparator.setSweepY(this.m_sweepPoint.y,this.m_sweepPoint.x);let o=!1;{let t=this.getClusterFirstEdge(this.m_sweepPointCluster);if(o=-1===t,!o){let r=t;do{let t=this.getEdgeSweepNode(r);-1===t?(this.m_edgesToInsertInSweepStructure.push(r),this.setEdgeSweepNode_(r,i)):t!==i&&e.push(t),r=this.getNextEdge(r,this.m_sweepPointCluster)}while(r!==t)}}if(!this.m_sweepStructure.isAutoBalancing()&&(this.m_sweepStructure.getMaxDepthEver()>4||this.m_edgesToInsertInSweepStructure.length>10)&&this.m_sweepStructure.enableBalancing(),e.length>0){this.m_bContinuingSegmentChainOptimization=1===e.length&&1===this.m_edgesToInsertInSweepStructure.length;for(let t=0,r=e.length;t<r;t++){let r=this.m_sweepStructure.getElement(e[t]);this.setEdgeSweepNode_(r,s)}let t=s,r=s;for(let i=0,n=e.length;i<n;i++){let n=e[i];if(t===s){let e=this.m_sweepStructure.getPrev(n);if(-1!==e){let r=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(r)!==s&&(t=e)}else t=-1}if(r===s){let e=this.m_sweepStructure.getNext(n);if(-1!==e){let t=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(t)!==s&&(r=e)}else r=-1}if(t!==s&&r!==s)break}for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_sweepStructure.getElement(r);this.m_sweepStructure.deleteNode(r),this.setEdgeSweepNode_(s,-1)}e.length=0,this.m_prevNeighbour=t,this.m_nextNeighbour=r,-1!==t&&-1!==r?this.m_bContinuingSegmentChainOptimization||this.checkAndFixIntersection_(t,r):-1===t&&-1===r&&(this.m_bContinuingSegmentChainOptimization=!1)}else o&&(null===t&&(t=new fe(this)),t.setPoint(this.m_sweepPoint),this.m_sweepStructure.searchUpperBound(t),t.intersectionDetected()&&(t.clearIntersectionDetectedFlag(),this.fixIntersectionPointSegment_(this.m_sweepPointCluster,t.getCurrentNode())));let l=this.m_bContinuingSegmentChainOptimization;!this.insertNewEdges_()&&l&&-1!==this.m_prevNeighbour&&-1!==this.m_nextNeighbour&&this.checkAndFixIntersection_(this.m_prevNeighbour,this.m_nextNeighbour),this.m_bSweepPointClusterWasModified?(this.m_bSweepPointClusterWasModified=!1,null===r&&(r=new Pe(this.m_shape)),r.setPoint(this.m_sweepPoint),n=this.m_eventQ.searchUpperBound(r)):n=this.m_eventQ.getNext(n)}return this.m_bCracked}setEditShape_(e){this.m_shape=e,this.m_vertexClusterIndex=this.m_shape.createUserIndex(),this.m_edges.setCapacity(e.getSelectedCount()+32),this.m_clusters.setCapacity(e.getSelectedCount()),this.m_clusterVertices.reserveLists(e.getSelectedCount()),this.m_clusterVertices.reserveNodes(e.getSelectedCount()),this.m_edgeVertices.reserveLists(e.getSelectedCount()+32),this.m_edgeVertices.reserveNodes(e.getSelectedCount()+32);for(let t=this.m_shape.getFirstGeometry();-1!==t;t=this.m_shape.getNextGeometry(t))if((0,i.j)(this.m_shape.getGeometryType(t)))for(let r=this.m_shape.getFirstPath(t);-1!==r;r=this.m_shape.getNextPath(r)){let t=this.m_shape.getPathSize(r),s=this.m_shape.getFirstVertex(r);if(-1===s)continue;let i=this.m_shape.getNextVertex(s);if(-1===i||i===s)continue;let n=-1;e.selected(s)&&(n=this.newCluster_(s));let a=-1;-1!==n&&e.selected(i)&&(a=this.newEdge_(s),this.addEdgeToCluster(a,n));let o=a;for(let e=0,r=t-2;e<r;e++){let e=this.m_shape.getNextVertex(i),t=-1;if(this.m_shape.selected(i)){let r=this.newCluster_(i);-1!==o&&this.addEdgeToCluster(o,r),this.m_shape.selected(e)&&(t=this.newEdge_(i),this.addEdgeToCluster(t,r))}o=t,i=e}if(this.m_shape.isClosedPath(r)){let e=this.m_shape.getNextVertex(i);if(this.m_shape.selected(i)){let t=this.newCluster_(i);if(-1!==o&&this.addEdgeToCluster(o,t),this.m_shape.selected(e)){let e=this.newEdge_(i);this.addEdgeToCluster(e,t),this.addEdgeToCluster(e,n)}}}else{let e=-1;this.m_shape.selected(i)&&(e=this.newCluster_(i),-1!==o&&this.addEdgeToCluster(o,e))}}else for(let e=this.m_shape.getFirstPath(t);-1!==e;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let r=0,s=this.m_shape.getPathSize(e);r<s;r++)this.m_shape.selected(t)&&this.newCluster_(t),t=this.m_shape.getNextVertex(t)}this.fillEventQueue()}progress_(e=!1){}dbgCheckSweepStructure_(){}}function Ee(e,t,r){return{vertex0:e,vertex1:t,dir:r}}class Se{m_shape=null;m_progressTracker;m_spikes=[];m_points=new o.a(0);m_pointsIndex=-1;m_dissolvedEdges=0;constructor(e){this.m_progressTracker=e}executeImpl_(e,t){if(this.m_shape=e,e.getPathCount(t)<2&&e.getPointCount(t)<6)return;this.m_points.resize(0);for(let r=e.getFirstPath(t);-1!==r;r=e.getNextPath(r)){let t=e.getFirstVertex(r);for(let s=0,i=e.getPathSize(r);s<i;s++,t=e.getNextVertex(t))this.m_points.add(t)}this.m_pointsIndex=e.createUserIndex();for(let t=0,r=this.m_points.size();t<r;++t)e.setUserIndex(this.m_points.read(t),this.m_pointsIndex,t);e.sortVerticesSimpleByY(this.m_points,0,this.m_points.size());let r=this.m_points.read(0),s=e.getXY(r),n=1,a=0,o=[];for(let t=1;t<this.m_points.size();t++){let i=this.m_points.read(t);if(-1===i||-1===e.getUserIndex(i,this.m_pointsIndex))continue;let l=e.getXY(i);if(l.isEqualPoint2D(s))n++;else{if(n>1){for(let r=a;r<t;r++){let t=this.m_points.read(r);if(-1===e.getUserIndex(t,this.m_pointsIndex))continue;let i=e.getNextVertex(t),n=e.getPrevVertex(t);if(t!==i&&!e.isEqualXYPoint2D(i,s)){let e=Ee(t,i,1);o.push(e)}if(t!==n&&n!==i&&!e.isEqualXYPoint2D(n,s)){let e=Ee(t,n,-1);o.push(e)}}o.length>0&&this.processBunch_(o,s)}r=i,s.assign(l),n=1,a=t}}if(0===this.m_dissolvedEdges)return e.removeUserIndex(this.m_pointsIndex),void(this.m_pointsIndex=-1);let l=e.getPointCount(t);for(let t=0;t<this.m_points.size();t++){let r=this.m_points.read(t);if(-1===r)continue;if(-1!==e.getUserIndex(r,this.m_pointsIndex)){e.setUserIndex(r,this.m_pointsIndex,-1);continue}let s=e.getPathFromVertex(r);e.getFirstVertex(s)===r&&e.setFirstVertex(s,-1),e.freeVertex(r),this.m_points.write(t,-1),l--}let m=e.createPathUserIndex(),h=e.getPathCount(t);for(let r=0,s=this.m_points.size();r<s;++r){if(-1===this.m_points.read(r))continue;let s=this.m_points.read(r);if(-1!==e.getUserIndex(s,this.m_pointsIndex))continue;let n=e.getPathFromVertex(s),a=-1;if(2===e.getPathUserIndex(n,m)){n=-1;for(let t=e.getNextVertex(s);t!==s;t=e.getNextVertex(t)){let r=e.getPathFromVertex(t);if(2!==e.getPathUserIndex(r,m)){n=r,s=t;break}}-1===n&&(n=e.insertPath(t,-1),e.setClosedPath(n,!0),h++),(0,i.g)(-1!==n)}e.setPathUserIndex(n,m,2),a=e.getFirstVertex(n);let o=0,l=!1,g=s;do{a===g&&(l=!0),e.setUserIndex(g,this.m_pointsIndex,1);let t=e.getPathFromVertex(g);t!==n&&(2!==e.getPathUserIndex(t,m)&&(e.setPathUserIndex(t,m,1),e.setFirstVertex(t,-1)),e.setPathToVertex(g,n)),o++,g=e.getNextVertex(g)}while(g!==s);l||e.setFirstVertex(n,s),e.setPathSize(n,o)}for(let r=e.getFirstPath(t);-1!==r;){let t=e.getNextPath(r);(1===e.getPathUserIndex(r,m)||-1===e.getFirstVertex(r))&&(e.removePathOnly(r),h--),r=t}e.setGeometryVertexCount(t,l),e.setGeometryPathCount(t,h),e.removePathUserIndex(m),e.removeUserIndex(this.m_pointsIndex),this.m_pointsIndex=-1,e.dbgVerifyVertexCounts(),e.filterClosePoints(0,!0,!1,!1,t)}processBunch_(e,t){e.sort((e,r)=>{let s=this.m_shape.getXY(e.vertex1).sub(t),i=this.m_shape.getXY(r.vertex1).sub(t),n=l.P.compareVectors(s,i);return 0===n?e.dir<r.dir?-1:1:n});let r=0,s=this.m_shape.getXY(e[0].vertex1),i=1,n=this.m_shape.hasCurves();for(let t=1,a=e.length;t<a;t++){let o=this.m_shape.getXY(e[t].vertex1);if(!(o.isEqualPoint2D(s)&&(i++,t+1<a))){if(2===i){let t=e[r],s=e[r+1],i=t.dir;if(i!==s.dir){let e=!0;if(n&&(e=!this.m_shape.isCurve(1===t.dir?t.vertex0:t.vertex1)&&!this.m_shape.isCurve(1===s.dir?s.vertex0:s.vertex1)),e){if(1===i){let e=t.vertex0,r=s.vertex0;this.m_shape.setNextVertex(e,r),this.m_shape.setPrevVertex(r,e),this.m_shape.getPrevVertex(e)===r&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(r,this.m_pointsIndex,-1));let i=t.vertex1,n=s.vertex1;this.m_shape.setPrevVertex(i,n),this.m_shape.setNextVertex(n,i),this.m_shape.getNextVertex(i)===n&&(this.m_shape.setUserIndex(i,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}else{let e=t.vertex0,r=s.vertex0;this.m_shape.setPrevVertex(e,r),this.m_shape.setNextVertex(r,e),this.m_shape.getNextVertex(e)===r&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(r,this.m_pointsIndex,-1));let i=t.vertex1,n=s.vertex1;this.m_shape.setNextVertex(i,n),this.m_shape.setPrevVertex(n,i),this.m_shape.getPrevVertex(i)===n&&(this.m_shape.setUserIndex(i,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}this.m_dissolvedEdges+=2}}}s.assign(o),r=t,i=1}}e.length=0}}function Ce(e){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))if((0,i.j)(e.getGeometryType(t)))return!0;return!1}function Ie(e,t,r,s,i){if(!Ce(t))return!1;let n=new Ge(i);if(n.m_shape=t,n.m_tolerance=r,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==s,n.needsCrackingImpl_())return s&&s.assign(n.m_nonSimpleResult),!0;let a=new m.T;a.setSwapCoordinates(),t.applyTransformation(a),n=new Ge(i),n.m_shape=t,n.m_tolerance=r,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==s;let o=n.needsCrackingImpl_();return t.applyTransformation(a),!!o&&(s&&s.assign(n.m_nonSimpleResult),!0)}function ve(e,t){return{t:e,index:t}}class Ge{static s_bForceBruteForce=!0;m_shape=null;m_progressTracker=null;m_nonSimpleResult=new c;m_tolerance=0;m_sweepComparator=null;m_progressCounter=0;m_bTrackChanges=!1;m_bNeedsNonSimpleResult=!1;m_bAllowCoincident=!0;crackBruteForce_(){let e=this.crackBruteForceImpl_();if(!e&&this.m_shape.hasCurves()){let t=new m.T;t.setSwapCoordinates(),this.m_shape.applyTransformation(t),e=this.crackBruteForceImpl_(),this.m_shape.applyTransformation(t)}return e}crackBruteForceImpl_(){let e=!1,t=new a.S,r=new a.S,s=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=new o.P,h=new le,g=this.m_shape.getTotalPointCount(),u=g*g*2,_=this.m_shape.queryVertexIteratorOnSelection();for(let n=_.next();-1!==n;n=_.next()){let o=this.m_shape.getGeometryType(_.currentGeometry()),g=1,p=1,d=1,c=0,f=0,x=0,P=this.m_shape.getSegmentParentage(n),y=!1,E=!1,S=null,C=!1;if((0,i.f)(o))g=this.m_shape.getWeight(n),c=this.m_shape.getRank(n);else{if(S=this.getSegment_(n,t),null===S)continue;let e=this.m_shape.getVertexIndex(n);g=this.m_shape.getWeightWithIndex(e),c=this.m_shape.getRankWithIndex(e),d=this.m_shape.getSegmentWeightWithIndex(e),x=this.m_shape.getSegmentRankWithIndex(e),y=this.m_shape.getSegmentParentageBreakVertex(n);{let e=this.m_shape.getNextVertex(n);p=this.m_shape.getWeight(e),f=this.m_shape.getRank(e),E=this.m_shape.getSegmentParentageBreakVertex(e)}if(S.queryLooseEnvelope(s),s.inflateCoords(this.m_tolerance,this.m_tolerance),S.isDegenerate(this.m_tolerance)){if(!S.isDegenerate(0))continue;C=!0,S=null}}let I=new a.V({copy:_}),v=I.next();-1!==v&&(v=I.next());let G=0;for(;-1!==v;v=I.next()){if(0!==G){G--;continue}if(this.m_shape.getTotalPointCount()>u)return e;this.progress_();let o=this.m_shape.getGeometryType(I.currentGeometry()),w=null,b=!1,T=0,N=0,D=0,V=0,k=0,F=0,H=!1,A=!1,M=this.m_shape.getSegmentParentage(v);if((0,i.f)(o))T=this.m_shape.getWeight(v),V=this.m_shape.getRank(v);else{if(w=this.getSegment_(v,r),null===w)continue;let e=this.m_shape.getVertexIndex(v);T=this.m_shape.getWeightWithIndex(e),V=this.m_shape.getRankWithIndex(e),D=this.m_shape.getSegmentWeightWithIndex(e),F=this.m_shape.getSegmentRankWithIndex(e),H=this.m_shape.getSegmentParentageBreakVertex(v);{let e=this.m_shape.getNextVertex(v);N=this.m_shape.getWeight(e),k=this.m_shape.getRank(e),A=this.m_shape.getSegmentParentageBreakVertex(e)}if(w.queryLooseEnvelope(l),w.isDegenerate(this.m_tolerance)){if(!w.isDegenerate(0))continue;b=!0,w=null}}let U=0,q=0;if(null!==S&&null!==w)s.isIntersectingNe(l)&&0!==(0,a.T)(!0,!0,S,w,this.m_tolerance,!0)&&(h.pushSegment(S,g,c,p,f,d,x,y,E,P),h.pushSegment(w,T,V,N,k,D,F,H,A,M),h.intersect2D(this.m_tolerance,!0),e||=h.getSegmentChanged(0)||h.getSegmentChanged(1),U=h.getResultSegmentCount(0),q=h.getResultSegmentCount(1),U+q>0&&(this.m_shape.splitSegmentWithIntersector(n,h,0,!0,!0),this.m_shape.splitSegmentWithIntersector(v,h,1,!0,!0),this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(n,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(v,!0))),q>1&&(G+=q-1),h.clear());else if(null!==S){let t=this.m_shape.getXY(v);if(s.contains(t)){if(h.pushSegment(S,g,c,p,f,d,x,y,E,P),this.m_shape.queryPoint(v,m),h.intersect2DEx(this.m_tolerance,m,V,T,!1),e||=h.getSegmentChanged(0)||h.getResultPointChanged(),U=h.getResultSegmentCount(0),U>0)if(this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(n,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(v,!0)),this.m_shape.splitSegmentWithIntersector(n,h,0,!0,!0),b){let e=-1;for(let t=this.m_shape.getNextVertex(v);-1!==t&&t!==v&&(w=this.getSegment_(t,r),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=v;-1!==t&&(this.m_shape.setPoint(t,h.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(v,h.getResultPoint(),!0);h.clear()}}else{if(null===w)continue;{let t=this.m_shape.getXY(n);if(l.inflateCoords(this.m_tolerance,this.m_tolerance),l.contains(t)){if(h.pushSegment(w,T,V,N,k,D,F,H,A,M),this.m_shape.queryPoint(n,m),h.intersect2DEx(this.m_tolerance,m,c,g,!1),e||=h.getSegmentChanged(0)||h.getResultPointChanged(),q=h.getResultSegmentCount(0),q>0)if(this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(v,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(n,!0)),this.m_shape.splitSegmentWithIntersector(v,h,0,!0,!0),G+=q-1,C){let e=-1;for(let t=this.m_shape.getNextVertex(n);-1!==t&&t!==n&&(w=this.getSegment_(t,r),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=n;-1!==t&&(this.m_shape.setPoint(t,h.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(n,h.getResultPoint(),!0);h.clear()}}}if(U+q!==0&&0!==U){let e=!1;for(;S=this.getSegment_(n,t),null!=S&&(S.queryEnvelope(s),S.isDegenerate(this.m_tolerance));){if(!(U>1)){e=!0;break}n=_.next(),U--,(0,i.g)(-1!==n)}if(e)break}}}return e}m_sweepStructure=new o.T;crackerPlaneSweep_(){return this.planesweep_()}planesweep_(){return new ye(this.m_progressTracker,this.m_bTrackChanges).sweep(this.m_shape,this.m_tolerance)}needsCrackingImpl_(){let e=!1,t=new o.a(0);t.resize(this.m_shape.getSelectedCount());let r=this.m_shape.queryVertexIteratorOnSelection();for(let e=0,s=r.next();-1!==s;++e,s=r.next())t.write(e,s);this.m_shape.sortVerticesSimpleByY(t,0,t.size()),t.add(-1);let s=this.m_shape.createUserIndex(),n=this.m_shape.createUserIndex();this.m_sweepComparator=new $(this.m_shape,this.m_tolerance,!this.m_bAllowCoincident),this.m_sweepStructure.setComparator(this.m_sweepComparator);let a=null,m=[],h=[],g=0,u=new l.P;for(let r=t.read(g++);-1!==r;){this.m_shape.queryXY(r,u);let o=!1;do{let e=this.m_shape.getNextVertex(r),i=this.m_shape.getPrevVertex(r);o||=-1!==e||-1!==i,-1!==e&&!this.m_shape.selected(e)&&(e=-1),-1!==i&&!this.m_shape.selected(i)&&(i=-1),-1!==e&&this.m_shape.compareVerticesSimpleY(r,e)<0&&(h.push(r),h.push(e)),-1!==i&&this.m_shape.compareVerticesSimpleY(r,i)<0&&(h.push(i),h.push(i));let a=this.m_shape.getUserIndex(r,s);-1!==a&&(m.push(a),this.m_shape.setUserIndex(r,s,-1));let l=this.m_shape.getUserIndex(r,n);-1!==l&&(m.push(l),this.m_shape.setUserIndex(r,n,-1)),r=t.read(g++)}while(-1!==r&&this.m_shape.isEqualXYPoint2D(r,u));if(!o&&(null===a&&(a=new ee(this.m_shape,this.m_tolerance)),a.setPoint(u),this.m_sweepStructure.searchUpperBound(a),a.intersectionDetected())){e=!0,this.m_bNeedsNonSimpleResult&&((0,i.d)("needsCrackingIMpl_"),this.m_nonSimpleResult=new c(6,-1,-1));break}let _=1===m.length&&2===h.length;m.length>32&&(0,l.w)(m);let p=-1,d=-1;if(!_)for(let t=0,r=m.length;t<r;t++){let r=m[t],s=this.m_sweepStructure.getPrev(r);if(-1!==s&&-1===m.indexOf(s))if(-1===p)p=s;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new c(6,-1,-1)}let i=this.m_sweepStructure.getNext(r);if(-1!==i&&-1===m.indexOf(i))if(-1===d)d=i;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new c(6,-1,-1)}if(-1!==p&&-1!==d)break}if(e&&!this.m_bNeedsNonSimpleResult)break;if(this.m_sweepComparator.setSweepY(u.y,u.x),!_){for(let e=0,t=m.length;e<t;e++){let t=m[e];this.m_sweepStructure.deleteNode(t)}m.length=0}if(!_&&-1!==p&&-1!==d&&this.checkForIntersections_(p,d)){e=!0,this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult());break}for(let t=0,r=h.length;t<r;t+=2){let r,i=h[t],a=h[t+1];if(_?(r=this.m_sweepStructure.replaceElementAtPosition(m[0],i,!0,!0),m.length=0,_=!1):r=this.m_sweepStructure.addElement(i),this.m_sweepComparator.intersectionDetected()){this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult()),e=!0;break}-1===this.m_shape.getUserIndex(a,s)?this.m_shape.setUserIndex(a,s,r):this.m_shape.setUserIndex(a,n,r)}if(e)break;h.length=0}return this.m_shape.removeUserIndex(s),this.m_shape.removeUserIndex(n),e}checkForIntersections_(e,t){let r=this.m_sweepStructure.getElement(e);this.m_sweepComparator.compare(this.m_sweepStructure,r,t);let s=this.m_sweepComparator.intersectionDetected();return this.m_sweepComparator.clearIntersectionDetectedFlag(),s}getSegment_(e,t){return Ge.st_getSegment(this.m_shape,e,t)}static st_getSegment(e,t,r){return e.querySegment(t,r,!1,!1)?r.get():null}dbgPrintSweepEdge(e){}dbgPrintSweepStructure(){}dbgSaveSweepStructure(e=null){}dbgCheckSweepStructure(){}progress_(e=!1){this.m_progressCounter++}crackAWithBMultiPath_(e,t,r){let s=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(s);let m=n.Envelope2D.constructEmpty();if(t.queryLooseEnvelope(m),m.inflateCoords(r,r),!m.isIntersecting(s))return e;let h=e.getImpl(),g=h.getAccelerators(),u=null,_=null;g&&(_=g.getQuadTree()),function(e,t){let r=e.getPointCount();return!(r<16)&&2*r+Math.log(r)/Math.log(2)*1*t<1*r*t}(e,(0,i.v)(t))&&(u=(0,o.u)(h,m),_=u);let p=_?_.getIteratorForQT():null,d=t.querySegmentIterator(),c=e.querySegmentIterator(),f=(0,l.d)(15,NaN),x=[];for(;d.nextPath();)for(;d.hasNextSegment();){let e=d.nextSegment();if(_){p.resetIterator(e,r);for(let t=p.next();-1!==t;t=p.next()){this.progress_();let s=_.getElement(t);if(c.resetToVertex(s,-1),c.hasNextSegment()){let t=c.nextSegment().intersect(e,null,f,null,r);for(let e=0;e<t;e++){let t=f[e];if(0===t||1===t)continue;let r=ve(t,c.getStartPointIndex());x.push(r)}}}}else{let t=n.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(t),t.inflateCoords(r,r),!s.isIntersecting(t))continue;for(c.resetToFirstPath();c.nextPath();)for(;c.hasNextSegment();){let s=c.nextSegment(),i=n.Envelope2D.constructEmpty();if(s.queryLooseEnvelope(i),!i.isIntersecting(t))continue;let a=s.intersect(e,null,f,null,r);for(let e=0;e<a;e++){let t=f[e];if(0===t||1===t)continue;let r=ve(t,c.getStartPointIndex());x.push(r)}}}}if(0===x.length)return e;x.sort((e,t)=>e.index<t.index?-1:e.index>t.index?1:e.t<t.t?-1:+(e.t>t.t));let P=e.createInstance();for(P.getGeometryType()===i.G.enumPolygon&&P.setFillRule(e.getFillRule()),c.resetToFirstPath();c.nextPath()&&!c.hasNextSegment(););(0,i.g)(c.hasNextSegment());let y=c.nextSegment(),E=new a.S,S=-1;for(let e=0,t=x.length;e<t;){let r=x[e].index,s=e+1;for(;s<t&&x[s].index===r;)++s;for(;c.getStartPointIndex()<r;){this.progress_();let e=c.hasNextSegment(),t=c.getPathIndex();if((e||!c.isClosingSegment()||c.isCurve())&&((0,i.g)(null!==y),P.addSegment(y,S!==t)),S=t,!e){for(c.isPathClosed();c.nextPath()&&!c.hasNextSegment(););(0,i.g)(c.hasNextSegment())}y=c.nextSegment()}let n=0;for(let t=e;t<s;t++){let e=x[t].t;if(e===n)continue;(0,i.g)(null!==y),y.queryCut(n,e,E),n=e;let r=c.getPathIndex();P.addSegment(E.get(),S!==r),S=r}let a=c.hasNextSegment();if((a||!c.isClosingSegment()||c.isCurve())&&((0,i.g)(null!=y),y.queryCut(n,1,E),P.addSegment(E.get(),!1)),a)y=c.nextSegment();else{for(;c.nextPath()&&!c.hasNextSegment(););y=c.hasNextSegment()?c.nextSegment():null}e=s}if(null!==y){let e=c.getPathIndex();(c.hasNextSegment()||!c.isClosingSegment()||c.isCurve())&&P.addSegment(y,S!==e),S=e}let C=c.hasNextSegment();for(;;){if(!C){for(;c.nextPath()&&(C=c.hasNextSegment(),!C););if(!C)break}y=c.nextSegment();let e=c.getPathIndex();C=c.hasNextSegment(),(C||!c.isClosingSegment()||c.isCurve())&&P.addSegment(y,S!==e),S=e}return P}constructor(e){this.m_progressTracker=e}}class we{m_inputPoint;m_windnum;m_monotoneParts=(0,l.m)(a.S,16);m_xOrds=(0,l.d)(16,NaN);m_tolerance;m_toleranceSqr;m_miny;m_maxy;m_bAlternate;m_bTestBorder;m_bBreak;constructor(e,t){this.m_inputPoint=l.P.getNAN(),this.m_miny=0,this.m_maxy=0,this.m_windnum=0,this.m_bAlternate=e,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bTestBorder=t>0,this.m_bBreak=!1}_DoOne(e){if(!this.m_bTestBorder&&(this.m_bAlternate&&this.m_inputPoint.equals(e.getStartXY())||this.m_inputPoint.equals(e.getEndXY())))return void(this.m_bBreak=!0);if(e.getStartY()===this.m_inputPoint.y&&e.getStartY()===e.getEndY()){if(this.m_bAlternate&&!this.m_bTestBorder){let t=Math.min(e.getStartX(),e.getEndX()),r=Math.max(e.getStartX(),e.getEndX());this.m_inputPoint.x>t&&this.m_inputPoint.x<r&&(this.m_bBreak=!0)}return}let t=!1,r=Math.max(e.getStartX(),e.getEndX());if(this.m_inputPoint.x>r)t=!0;else if(this.m_inputPoint.x>=Math.min(e.getStartX(),e.getEndX())){let s=e.intersectionOfYMonotonicWithAxisX(this.m_inputPoint.y,r);t=!Number.isNaN(s)&&s<=this.m_inputPoint.x}if(t){if(this.m_inputPoint.y===e.getStartY()){if(this.m_inputPoint.y<e.getEndY())return}else if(this.m_inputPoint.y===e.getEndY()&&this.m_inputPoint.y<e.getStartY())return;this.m_bAlternate?this.m_windnum^=1:this.m_windnum+=e.getStartY()>e.getEndY()?1:-1}}_Result(){return!!this.m_windnum}testBorder(e){let t=e.getClosestCoordinate(this.m_inputPoint,!1),r=e.getCoord2D(t);return l.P.sqrDistance(r,this.m_inputPoint)<=this.m_toleranceSqr}setInputPoint(e){this.m_inputPoint.setCoordsPoint2D(e),this.m_miny=e.y-this.m_tolerance,this.m_maxy=e.y+this.m_tolerance}processSegment(e){let t=e.queryInterval(0,1);if(t.vmin>this.m_maxy||t.vmax<this.m_miny)return!1;if(this.m_bTestBorder&&this.testBorder(e))return!0;if(t.vmin>this.m_inputPoint.y||t.vmax<this.m_inputPoint.y)return!1;let r=0;if(e.isCurve()&&(0===this.m_monotoneParts.length&&(this.m_monotoneParts.length=128),r=e.getMonotonicParts(this.m_monotoneParts,!0),(0,i.g)(this.m_monotoneParts.length>=r)),r>0)for(let e=0;e<r;e++){let t=this.m_monotoneParts[e].get(),r=l.E.construct(t.getStartY(),t.getEndY());if(!(r.vmin>this.m_inputPoint.y||r.vmax<this.m_inputPoint.y)&&(this._DoOne(t),this.m_bBreak))return!0}else if(this._DoOne(e),this.m_bBreak)return!0;return!1}result(){return(0,i.g)(0),2}}function be(e,t,r){if(e.isEmpty())return 0;let s=n.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(s),s.inflateCoords(r,r),!s.contains(t))return 0;let a=e.getImpl().getAccelerators();if(a){a.getRasterizedGeometry()&&(0,i.g)(0);let s=a.getQuadTree();if(s)return function(e,t,r,s){let i=new n.Envelope2D;e.queryLooseEnvelope(i),i.inflateCoords(s,s);let a=0===e.getFillRule(),o=new we(a,s);o.setInputPoint(r);let l=i.clone();l.xmax=r.x+s,l.ymin=r.y-s,l.ymax=r.y+s;let m=e.getImpl().querySegmentIterator(),h=t.getIterator(l,s);for(let e=h.next();-1!==e;e=h.next())if(m.resetToVertex(t.getElement(e),-1),m.hasNextSegment()){let e=m.nextSegment();if(o.processSegment(e))return-1}return+!!o._Result()}(e,s,t,r)}return function(e,t,r){let s=0===e.getFillRule(),i=new we(s,r);i.setInputPoint(t);let n=e.getImpl().querySegmentIterator();for(;n.nextPath();)for(;n.hasNextSegment();){let e=n.nextSegment();if(i.processSegment(e))return-1}return+!!i._Result()}(e,t,r)}function Te(e,t){let r=e.getPointCount();return!(r<16)&&2*r+Math.log(r)/Math.log(2)*1*t<1*r*t}function Ne(e,t,r){let s=new Fe(r);return s.m_shape=e,s.m_geometry=t,s.m_sortedVertices=null,s.m_bFixSelfTangency=!1,s.fixRingOrientationForMp2sp_()}class De{m_shape;m_end1Nodes=[];m_end2Nodes=[];m_directions=[];m_firstFree;getDirection_(e){return this.m_shape.getNextVertex(this.getEnd1(e))===this.getEnd2(e)}getEnd_(e){let t=this.getEnd1(e),r=this.getEnd2(e);return this.m_shape.getNextVertex(t)===r?r:t}constructor(e){this.m_shape=e,this.m_firstFree=-1}getSegment(e){return this.m_shape.getSegment(this.getStart(e))}isBottomUp(e){let t=this.getEnd1(e),r=this.getEnd2(e);this.m_shape.getPrevVertex(t)===r&&(r=(0,l.c)(t,t=r));let s=l.P.getNAN(),n=l.P.getNAN();return this.m_shape.queryXY(t,s),this.m_shape.queryXY(r,n),(0,i.g)(!s.equals(n)),s.y<n.y}getStart(e){let t=this.getEnd1(e),r=this.getEnd2(e);return this.m_shape.getNextVertex(t)===r?t:r}getEnd1(e){return this.m_end1Nodes[e]}getEnd2(e){return this.m_end2Nodes[e]}freeEdge(e){this.m_end1Nodes[e]=this.m_firstFree,this.m_firstFree=e}newEdge(e){if(-1!==this.m_firstFree){let t=this.m_firstFree;return this.m_firstFree=this.m_end1Nodes[t],this.m_end1Nodes[t]=e,this.m_end2Nodes[t]=this.m_shape.getNextVertex(e),t}let t=this.m_end1Nodes.length;return this.m_end1Nodes.push(e),this.m_end2Nodes.push(this.m_shape.getNextVertex(e)),t}getShape(){return this.m_shape}getPath(e){return this.m_shape.getPathFromVertex(this.getEnd1(e))}}let Ve=class extends o.F{m_helper;m_line1=new a.L;m_line2=new a.L;m_leftElm=-1;m_leftx=0;m_seg1=null;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s,n=e.getElement(r),a=this.m_helper.m_edges;this.m_leftElm===t?s=this.m_leftx:(this.m_seg1=a.getSegment(t),this.m_seg1?s=this.m_seg1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(a.getShape().queryLineConnector(a.getStart(t),this.m_line1,!0),this.m_seg1=this.m_line1,s=this.m_line1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),this.m_leftx=s,this.m_leftElm=t);let o,l=a.getSegment(n);if(l?o=l.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(a.getShape().queryLineConnector(a.getStart(n),this.m_line2,!0),l=this.m_line2,o=this.m_line2.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),s===o){let e=a.isBottomUp(t),r=a.isBottomUp(n),m=e?this.m_seg1.getEndY():this.m_seg1.getStartY(),h=r?l.getEndY():l.getStartY(),g=Math.min(m,h),u=.5*(g+this.m_helper.m_yScanline);u===this.m_helper.m_yScanline&&(u=g),s=this.m_seg1.intersectionOfYMonotonicWithAxisX(u,0),o=l.intersectionOfYMonotonicWithAxisX(u,0),s===o&&(0,i.A)("")}return s<o?-1:+(s>o)}reset(){this.m_leftElm=-1}};class ke{m_sortedVertices;m_sortedVerticesArray;m_node=-1;m_index=0;constructor(e){this.m_sortedVertices=e.m_sortedVertices,this.m_sortedVerticesArray=e.m_sortedVerticesArray,this.m_sortedVertices&&(this.m_node=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList()))}next(){if(this.m_sortedVertices){let e=this.m_node;if(-1===e)return-1;let t=this.m_sortedVertices.getData(e);return this.m_node=this.m_sortedVertices.getNext(e),t}if(this.m_index<this.m_sortedVerticesArray.size()){let e=this.m_sortedVerticesArray.read(this.m_index);return this.m_index++,e}return-1}}class Fe{m_edges=null;m_sweepComparator;m_shape=null;m_AET=new o.T;m_yScanline=0;m_geometry=-1;m_unknownRingOrientationCount=-1;m_sortedVertices=null;m_sortedVerticesArray=null;m_unknownNodes=[];m_progressTracker;m_node1UserIndex=-1;m_node2UserIndex=-1;m_pathOrientationIndex=-1;m_pathParentageIndex=-1;m_pathParentsIndex=-1;m_progressCounter=0;m_bFixSelfTangency=!1;constructor(e){this.m_progressTracker=e,this.m_AET.disableBalancing(),this.m_sweepComparator=new Ve(this),this.m_AET.setComparator(this.m_sweepComparator)}fixRingOrientation_(){let e=this.fixRingOrientationImplMain_();return-1===this.m_pathOrientationIndex||this.fixRingOrientationImplSimplify_(),e}fixRingOrientationForMp2sp_(){return this.fixRingOrientationImplMain_(),-1===this.m_pathOrientationIndex?-1:this.fixRingOrientationImplMp2sp_()}processBunchForRingOrientationTest_(e){return this.processBunchForRingOrientationTestOddEven_(e)}processBunchForRingOrientationTestOddEven_(e){let t=!1;if(this.m_edges||=new De(this.m_shape),this.m_unknownNodes.length=0,this.processBunchForRingOrientationRemoveEdges_(e),!this.m_AET.isAutoBalancing()){let t=0;for(let r=0,s=e.length;r<s;r++)-1!==e[r]&&t++;(t>10||this.m_AET.getMaxDepthEver()>4)&&this.m_AET.enableBalancing()}for(let t=0,r=e.length;t<r;t++){let r=e[t];-1!==r&&this.insertEdge_(r,-1)}for(let e=0;e<this.m_unknownNodes.length&&this.m_unknownRingOrientationCount>0;e++){let r=this.m_unknownNodes[e],s=this.m_AET.getElement(r),n=this.m_edges.getPath(s),a=-1;if(0===this.m_shape.getPathUserIndex(n,this.m_pathOrientationIndex)){let e=this.m_AET.getPrev(r),s=r,n=!1;for(;e!==o.T.st_nullNode();){let t=this.m_AET.getElement(e),r=this.m_edges.getPath(t);if(0!==this.m_shape.getPathUserIndex(r,this.m_pathOrientationIndex)){a=r;break}s=e,e=this.m_AET.getPrev(e)}if(e===o.T.st_nullNode())n=!0,e=s;else{let t=this.m_AET.getElement(e);n=this.m_edges.isBottomUp(t),e=this.m_AET.getNext(e),n=!n}do{let r=this.m_AET.getElement(e),o=this.m_edges.getPath(r);if(0===this.m_shape.getPathUserIndex(o,this.m_pathOrientationIndex)){if(n!==this.m_edges.isBottomUp(r)){let e=this.m_shape.getFirstVertex(o);this.m_shape.reverseRingInternal(e),this.m_shape.setLastVertex(o,this.m_shape.getPrevVertex(e)),t=!0}if(this.m_shape.setPathUserIndex(o,this.m_pathOrientationIndex,n?3:2),!n){let e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex);2===e?(a=this.m_shape.getPathUserIndex(a,this.m_pathParentsIndex),e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex),(0,i.g)(3===e)):(0,i.g)(3===e);let t=this.m_shape.getPathUserIndex(a,this.m_pathParentageIndex);this.m_shape.setPathUserIndex(a,this.m_pathParentageIndex,o),this.m_shape.setPathUserIndex(o,this.m_pathParentageIndex,t),this.m_shape.setPathUserIndex(o,this.m_pathParentsIndex,a)}if(this.m_unknownRingOrientationCount--,!this.m_unknownRingOrientationCount)return t}a=o,s=e,e=this.m_AET.getNext(e),n=!n}while(s!==r)}}return t}processBunchForRingOrientationRemoveEdges_(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_shape.getUserIndex(r,this.m_node1UserIndex),i=this.m_shape.getUserIndex(r,this.m_node2UserIndex);if(-1!==s){let e=this.m_AET.getElement(s);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(r,this.m_node1UserIndex,-1)}if(-1!==i){let e=this.m_AET.getElement(i);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(r,this.m_node2UserIndex,-1)}let n=-1;-1!==s&&-1!==i?(this.m_AET.deleteNode(s),this.m_AET.deleteNode(i),e[t]=-1):n=-1===s?i:s,-1!==n&&(this.insertEdge_(r,n)||this.m_AET.deleteNode(n),e[t]=-1)}}dbgVerifyRingOrientation_(){}insertEdge_(e,t){let r=l.P.getNAN(),s=l.P.getNAN();this.m_shape.queryXY(e,r);let i=this.m_shape.getNextVertex(e);this.m_shape.queryXY(i,s);let n=!1;if(r.y<s.y){n=!0;let r,s=this.m_edges.newEdge(e);-1===t?r=this.m_AET.addElement(s):(r=t,this.m_AET.setElement(r,s)),-1===this.m_shape.getUserIndex(i,this.m_node1UserIndex)?this.m_shape.setUserIndex(i,this.m_node1UserIndex,r):this.m_shape.setUserIndex(i,this.m_node2UserIndex,r);let a=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(r)}let a=this.m_shape.getPrevVertex(e);if(this.m_shape.queryXY(a,s),r.y<s.y){n=!0;let r,s=this.m_edges.newEdge(a);-1===t?r=this.m_AET.addElement(s):(r=t,this.m_AET.setElement(r,s)),-1===this.m_shape.getUserIndex(a,this.m_node1UserIndex)?this.m_shape.setUserIndex(a,this.m_node1UserIndex,r):this.m_shape.setUserIndex(a,this.m_node2UserIndex,r);let i=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(i,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(r)}return n}fixRingSelfTangency_(){let e=[],t=[],r=-1,s=-1,n=new l.P,a=-1,o=-1,m=-1,h=new ke(this);for(let i=h.next();-1!==i;i=h.next()){let h=new l.P;this.m_shape.queryXY(i,h);let g=this.m_shape.getPathFromVertex(i);n.equals(h)&&o===g?(-1===s&&(r=this.m_shape.createPathUserIndex(),this.m_shape.fillPathUserIndexForGeometry(this.m_geometry,r,-1),s=this.m_shape.createUserIndex(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,s,-1)),-1===m&&(m=t.length,this.m_shape.setUserIndex(a,s,m),t.push(1),-1===this.m_shape.getPathUserIndex(g,r)&&(this.m_shape.setPathUserIndex(g,r,a),e.push(g))),this.m_shape.setUserIndex(i,s,m),t[t.length-1]++):(m=-1,n.assign(h)),a=i,o=g}if(0===e.length)return!1;(0,i.g)(-1!==r);for(let i=0,n=e.length;i<n;i++){let n=e[i],a=this.m_shape.getPathUserIndex(n,r),o=this.m_shape.getUserIndex(a,s),l=[],m=[];l.push(a),m.push(o);for(let e=this.m_shape.getNextVertex(a);e!==a;e=this.m_shape.getNextVertex(e)){let r=e,i=this.m_shape.getUserIndex(r,s);if(-1!==i){if(0===m.length){m.push(i),l.push(r);continue}if(m.at(-1)===i){let n=l.at(-1);this.m_shape.peelALoopIntoAPath(n,r),this.m_shape.setUserIndex(e,s,-1),t[i]--,1===t[i]&&(t[i]=0,m.pop(),l.pop()),a=n,e=n}else l.push(e),m.push(i)}}}return this.m_shape.removePathUserIndex(r),this.m_shape.removeUserIndex(s),this.m_shape.dbgVerifyVertexCounts(),!0}progress_(e=!1){}fixRingOrientationImplMain_(){let e={stack:[],error:void 0,hasError:!1};try{let t,r=!1,i=(0,s.mS)(e,(0,l.h)(()=>{this.m_sortedVerticesArray=null}),!1);if(null===this.m_sortedVertices){let e=this.m_shape.getPointCount(this.m_geometry);t=new o.a(0);for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e)){let r=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)t.add(r),r=this.m_shape.getNextVertex(r)}this.m_shape.sortVerticesSimpleByY(t,0,e),this.progress_(!0),this.m_sortedVerticesArray=t}else i.bForget=!0;if(this.m_bFixSelfTangency&&(r=this.fixRingSelfTangency_()),1===this.m_shape.getPathCount(this.m_geometry)){let e=this.m_shape.getFirstPath(this.m_geometry),t=this.m_shape.getRingArea(e);if(this.m_shape.setExterior(e,!0),t<0){let t=this.m_shape.getFirstVertex(e);return this.m_shape.reverseRingInternal(t),this.m_shape.setLastVertex(e,this.m_shape.getPrevVertex(t)),!0}return!1}this.m_shape.dbgVerifyCurves(),this.m_pathOrientationIndex=this.m_shape.createPathUserIndex(),this.m_pathParentageIndex=this.m_shape.createPathUserIndex(),this.m_pathParentsIndex=this.m_shape.createPathUserIndex();for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e))this.m_shape.setPathUserIndex(e,this.m_pathOrientationIndex,0),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,-1),this.m_shape.setPathUserIndex(e,this.m_pathParentsIndex,-1);let n=[];this.m_yScanline=NaN;let a=l.P.getNAN();this.m_unknownRingOrientationCount=this.m_shape.getPathCount(this.m_geometry),this.m_node1UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node1UserIndex,-1),this.m_node2UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node2UserIndex,-1);let m=new ke(this);for(let e=m.next();-1!==e&&(this.progress_(),this.m_shape.queryXY(e,a),a.y!==this.m_yScanline&&n.length&&(r=this.processBunchForRingOrientationTest_(n)||r,this.m_sweepComparator.reset(),n.length=0),n.push(e),this.m_yScanline=a.y,0!==this.m_unknownRingOrientationCount);e=m.next());return this.m_unknownRingOrientationCount>0&&(r=this.processBunchForRingOrientationTest_(n)||r,n.length=0),this.m_shape.removeUserIndex(this.m_node1UserIndex),this.m_shape.removeUserIndex(this.m_node2UserIndex),this.dbgVerifyRingOrientation_(),r}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}fixRingOrientationImplSimplify_(){let e=[];for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;)if(this.progress_(),3===this.m_shape.getPathUserIndex(t,this.m_pathOrientationIndex)){this.m_shape.setExterior(t,!0);for(let r=this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex);-1!==r;){let s=this.m_shape.getPathUserIndex(r,this.m_pathParentageIndex);e.push(r),this.m_shape.setExterior(r,!1),this.m_shape.setPathUserIndex(r,this.m_pathParentageIndex,t),r=s}let r=t,s=e.length;for(let e=this.m_shape.getNextPath(t);s>0&&-1!==e;e=this.m_shape.getNextPath(e),--s){if(this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex)!==t){r=-1;break}r=e}if(0!==s){r=t;for(let t=0,s=e.length;t<s;t++){let s=e[t];this.m_shape.setPathUserIndex(s,this.m_pathParentageIndex,o.G),this.m_shape.movePath(this.m_geometry,this.m_shape.getNextPath(r),s),r=s}}e.length=0,t=this.m_shape.getNextPath(r)}else t=this.m_shape.getNextPath(t);this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex)}fixRingOrientationImplMp2sp_(){let e=this.m_shape.createPathUserIndex(),t=0,r=[];for(let s=this.m_shape.getFirstPath(this.m_geometry);-1!==s;)if(this.progress_(),3===this.m_shape.getPathUserIndex(s,this.m_pathOrientationIndex)){this.m_shape.setExterior(s,!0),this.m_shape.setPathUserIndex(s,e,t),t++;for(let e=this.m_shape.getPathUserIndex(s,this.m_pathParentageIndex);-1!==e;){let t=this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex);r.push(e),this.m_shape.setExterior(e,!1),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,s),e=t}let i=s,n=r.length,a=t;for(let t=this.m_shape.getNextPath(s);n>0&&-1!==t;t=this.m_shape.getNextPath(t),--n){if(this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex)!==s){i=-1;break}i=t,this.m_shape.setPathUserIndex(t,e,-a),a++}if(0!==n){i=s,a=t;for(let t=0,s=r.length;t<s;t++){let s=r[t];this.m_shape.setPathUserIndex(s,e,-a),a++,this.m_shape.setPathUserIndex(s,this.m_pathParentageIndex,o.G)}i=s}t=a,r.length=0,s=this.m_shape.getNextPath(i)}else s=this.m_shape.getNextPath(s);return this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex),e}}function He(e,t,r,s,i,n){let a=new Ae(n);return a.m_shape=e,a.m_geometry=t,a.m_knownSimpleResult=r,a.m_bFixSelfTangency=s,a.m_polylineDegeneracies=i,a.m_bHasSegmentParentage=e.hasSegmentParentage(),a.m_bHasSegments=e.hasCurves(),a.simplify_()}class Ae{m_shape=null;m_progressTracker;m_geometry=-1;m_sortedVertices=new o.I;m_bunchEdgeEndPoints=[];m_bunchEdgeCenterPoints=[];m_bunchEdgeIndices=[];m_sorterSegmentBuffer1=null;m_sorterSegmentBuffer2=null;m_knownSimpleResult=-1;m_sortedVerticesListIndex=-1;m_polylineDegeneracies=-1;m_userIndexSortedIndexToVertex=-1;m_userIndexSortedAngleIndexToVertex=-1;m_nextVertexToProcess=-1;m_firstCoincidentVertex=-1;m_progressCounter=0;m_bFixSelfTangency=!1;m_bHasSegmentParentage=!1;m_bHasSegments=!1;constructor(e){this.m_progressTracker=e}compareAngles_(e,t){return this.m_bHasSegments?this.compareAnglesCurves_(e,t):this.compareAnglesLines_(e,t)}compareAnglesLines_(e,t){let r=this.m_bunchEdgeEndPoints[e],s=new l.P;this.m_shape.queryXY(r,s);let n=new l.P,a=this.m_bunchEdgeEndPoints[t];if(this.m_shape.queryXY(a,n),s.equals(n))return 0;let o=this.m_bunchEdgeCenterPoints[e],m=new l.P;this.m_shape.queryXY(o,m);let h=this.m_bunchEdgeCenterPoints[t],g=new l.P;this.m_shape.queryXY(h,g);let u=new l.P;u.setSub(s,m);let _=new l.P;return _.setSub(n,g),(u.isZero()||_.isZero())&&(0,i.A)(""),l.P.compareVectors(u,_)}compareAnglesCurves_(e,t){let r=this.m_bunchEdgeEndPoints[e],s=this.m_bunchEdgeEndPoints[t],i=this.m_bunchEdgeCenterPoints[e],n=this.m_bunchEdgeCenterPoints[t],o=this.m_shape.getNextVertex(i)===r,l=this.m_shape.getNextVertex(n)===s,m=o?this.m_shape.isCurve(i):this.m_shape.isCurve(r),h=l?this.m_shape.isCurve(n):this.m_shape.isCurve(s);return m||h?(this.m_sorterSegmentBuffer1||=new a.S,this.m_sorterSegmentBuffer2||=new a.S,o?this.m_shape.querySegment(i,this.m_sorterSegmentBuffer1,!1,!0):(this.m_shape.querySegment(r,this.m_sorterSegmentBuffer1,!1,!0),this.m_sorterSegmentBuffer1.get().reverse()),l?this.m_shape.querySegment(n,this.m_sorterSegmentBuffer2,!1,!0):(this.m_shape.querySegment(s,this.m_sorterSegmentBuffer2,!1,!0),this.m_sorterSegmentBuffer2.get().reverse()),(0,a.O)(this.m_sorterSegmentBuffer1.get(),this.m_sorterSegmentBuffer2.get())):this.compareAnglesLines_(e,t)}beforeRemoveVertex_(e,t){let r=this.m_shape.getUserIndex(e,this.m_userIndexSortedIndexToVertex);if(this.m_nextVertexToProcess===r&&(this.m_nextVertexToProcess=this.m_sortedVertices.getNext(this.m_nextVertexToProcess)),this.m_firstCoincidentVertex===r&&(this.m_firstCoincidentVertex=this.m_sortedVertices.getNext(this.m_firstCoincidentVertex)),this.m_sortedVertices.deleteElement(this.m_sortedVerticesListIndex,r),this.removeAngleSortInfo_(e),t){let t=this.m_shape.getPathFromVertex(e);if(-1!==t&&this.m_shape.getFirstVertex(t)===e){let r=this.m_shape.getNextVertex(e);if(r!==e){if(this.m_shape.getPathFromVertex(r)===t)return void this.m_shape.setFirstVertex(t,r);{let r=this.m_shape.getPrevVertex(e);if(r!==e&&this.m_shape.getPathFromVertex(r)===t)return void this.m_shape.setFirstVertex(t,r)}}this.m_shape.setFirstVertex(t,-1),this.m_shape.setLastVertex(t,-1)}}}processBunch_(){let e=!1,t=new l.P(0,0);for(;;){this.m_bunchEdgeEndPoints.length=0,this.m_bunchEdgeCenterPoints.length=0,this.m_bunchEdgeIndices.length=0;let r=this.m_firstCoincidentVertex,s=0,i=!0;for(;r!==this.m_nextVertexToProcess;){let e=this.m_sortedVertices.getData(r);i&&=(this.m_shape.queryXY(e,t),!1);let n=this.m_shape.getPrevVertex(e),a=this.m_shape.getNextVertex(e);this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex)!==o.G&&(this.m_bunchEdgeEndPoints.push(n),this.m_shape.setUserIndex(n,this.m_userIndexSortedAngleIndexToVertex,o.G),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(s++)),this.m_shape.getUserIndex(a,this.m_userIndexSortedAngleIndexToVertex)!==o.G&&(this.m_bunchEdgeEndPoints.push(a),this.m_shape.setUserIndex(a,this.m_userIndexSortedAngleIndexToVertex,o.G),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(s++)),r=this.m_sortedVertices.getNext(r)}if(this.m_bunchEdgeEndPoints.length<2){1===this.m_bunchEdgeEndPoints.length&&this.m_shape.setUserIndex(this.m_bunchEdgeEndPoints[0],this.m_userIndexSortedAngleIndexToVertex,-1);break}this.m_bunchEdgeIndices.sort((e,t)=>this.compareAngles_(e,t));for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e],r=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(r,this.m_userIndexSortedAngleIndexToVertex,e)}let n=this.processCrossOvers_(t);for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e];if(-1===t)continue;let r=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(r,this.m_userIndexSortedAngleIndexToVertex,-1)}if(!n)break;e=!0}return e}processCrossOvers_(e){let t=!1,r=!0;for(;r;){r=!1;let s=0;-1===this.m_bunchEdgeIndices[s]&&(s=this.getNextEdgeIndex_(s));let i=this.getNextEdgeIndex_(s);for(let n=0,a=this.m_bunchEdgeIndices.length;n<a&&-1!==s&&-1!==i&&s!==i;n++){let n=this.m_bunchEdgeIndices[s],a=this.m_bunchEdgeIndices[i],o=this.m_bunchEdgeEndPoints[n],l=this.m_bunchEdgeEndPoints[a],m=this.m_shape.getNextVertex(o),h=!1;this.m_shape.isEqualXYPoint2D(m,e)||(m=this.m_shape.getPrevVertex(o),h=!0);let g=this.m_shape.getNextVertex(l),u=!1;this.m_shape.isEqualXYPoint2D(g,e)||(g=this.m_shape.getPrevVertex(l),u=!0);let _=h?this.m_shape.getPrevVertex(m):this.m_shape.getNextVertex(m),p=u?this.m_shape.getPrevVertex(g):this.m_shape.getNextVertex(g),d=!1;(this.removeSpike_(m)||this.removeSpike_(g)||this.removeSpike_(o)||this.removeSpike_(l)||this.removeSpike_(_)||this.removeSpike_(p))&&(d=!0),m!==g&&(!d&&this.m_shape.isEqualXY(o,l)&&(d=this.resolveOverlap_(h,u,m,o,g,l)),!d&&this.m_shape.isEqualXY(_,p)&&(d=this.resolveOverlap_(!h,!u,m,_,g,p)),!d&&this.m_shape.isEqualXY(o,p)&&(d=this.resolveOverlap_(h,!u,m,o,g,p)),!d&&this.m_shape.isEqualXY(_,l)&&(d=this.resolveOverlap_(!h,u,m,_,g,l))),d&&(t=!0),r||=d,s=d?this.getNextEdgeIndex_(s):i,i=this.getNextEdgeIndex_(s)}}if(!t){let r=0;-1===this.m_bunchEdgeIndices[r]&&(r=this.getNextEdgeIndex_(r));let s=this.getNextEdgeIndex_(r);for(let i=0,n=this.m_bunchEdgeIndices.length;i<n&&-1!==r&&-1!==s&&r!==s;i++){let i=this.m_bunchEdgeIndices[r],n=this.m_bunchEdgeIndices[s],a=this.m_bunchEdgeEndPoints[i],o=this.m_bunchEdgeEndPoints[n],l=this.m_shape.getNextVertex(a);this.m_shape.isEqualXYPoint2D(l,e)||(l=this.m_shape.getPrevVertex(a));let m=this.m_shape.getNextVertex(o);this.m_shape.isEqualXYPoint2D(m,e)||(m=this.m_shape.getPrevVertex(o));let h=this.getDirection_(l,a),g=this.getDirection_(m,o),u=h?this.m_shape.getPrevVertex(l):this.m_shape.getNextVertex(l),_=g?this.m_shape.getPrevVertex(m):this.m_shape.getNextVertex(m),p=this.detectAndResolveCrossOver_(h,g,a,l,u,o,m,_);1!==p?0===p?(r=this.getNextEdgeIndex_(r),s=this.getNextEdgeIndex_(r)):(r=this.getPrevEdgeIndex_(r),s=this.getNextEdgeIndex_(r)):t=!0}}return t}simplify_(){this.m_shape.getGeometryType(this.m_geometry)===i.G.enumPolygon&&1===this.m_shape.getFillRule(this.m_geometry)&&new Ar(this.m_progressTracker).planarSimplifyNoCrackingAndCluster(this.m_bFixSelfTangency,this.m_shape,this.m_geometry,0);let e=!1;this.m_userIndexSortedIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=this.m_shape.createUserIndexUninitialized();let t=this.m_shape.getPointCount(this.m_geometry),r=new o.a(0);this.m_shape.dbgVerifyMonotone();for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,-1),r.add(t),t=this.m_shape.getNextVertex(t)}this.m_shape.sortVerticesSimpleByY(r,0,t),this.progress_(!0),this.m_userIndexSortedIndexToVertex=this.m_shape.createUserIndexUninitialized(),this.m_sortedVertices.reserveNodes(t),this.m_sortedVerticesListIndex=this.m_sortedVertices.createList(0);for(let e=0;e<t;e++){let t=r.read(e),s=this.m_sortedVertices.addElement(this.m_sortedVerticesListIndex,t);this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,s)}this.m_nextVertexToProcess=-1,this.cleanupSpikes_()&&(e=!0);let s=0,n=!1;do{n=!1,this.m_nextVertexToProcess=-1,this.m_firstCoincidentVertex=this.m_sortedVertices.getFirst(this.m_sortedVerticesListIndex);let t=new l.P(0,0);this.m_firstCoincidentVertex!==o.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(this.m_firstCoincidentVertex),t);let r=0,a=this.m_firstCoincidentVertex;for(;a!==o.I.st_nullNode()&&(a=this.m_sortedVertices.getNext(a),a!==o.I.st_nullNode());){this.progress_();let e=this.m_sortedVertices.getData(a),s=l.P.getNAN();if(this.m_shape.queryXY(e,s),t.equals(s))r++;else{if(r>0){this.m_nextVertexToProcess=a;let e=this.processBunch_();a=this.m_nextVertexToProcess,a!==o.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(a),s),e&&(n=!0)}t.setCoordsPoint2D(s),this.m_firstCoincidentVertex=a,r=0}}this.m_nextVertexToProcess=-1,r>0&&this.processBunch_()&&(n=!0),s++>10&&(0,i.d)(""),n&&this.fixOrphanVertices_(),this.cleanupSpikes_()&&(n=!0),e||=n}while(n);return this.m_shape.dbgVerifyMonotone(),this.m_shape.dbgVerifyCurves(),this.m_shape.removeUserIndex(this.m_userIndexSortedIndexToVertex),this.m_shape.removeUserIndex(this.m_userIndexSortedAngleIndexToVertex),e=function(e,t,r,s,i){let n=new Fe(i);return n.m_shape=e,n.m_geometry=t,n.m_sortedVertices=r,n.m_bFixSelfTangency=s,n.fixRingOrientation_()}(this.m_shape,this.m_geometry,this.m_sortedVertices,this.m_bFixSelfTangency,this.m_progressTracker)||e,this.m_shape.dbgVerifyCurves(),e}getDirection_(e,t){return this.m_shape.getNextVertex(t)!==e}detectAndResolveCrossOver_(e,t,r,s,i,n,a,o){if(s===a)return this.removeAngleSortInfo_(r),this.removeAngleSortInfo_(n),-1;let m=this.m_shape.getUserIndex(r,this.m_userIndexSortedAngleIndexToVertex),h=this.m_shape.getUserIndex(i,this.m_userIndexSortedAngleIndexToVertex),g=this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex),u=this.m_shape.getUserIndex(o,this.m_userIndexSortedAngleIndexToVertex),_=(0,l.d)(8,NaN),p=(0,l.d)(4,NaN);_[0]=0,p[0]=m,_[1]=0,p[1]=h,_[2]=1,p[2]=g,_[3]=1,p[3]=u;for(let e=1;e<4;e++){let t=p[e],r=_[e],s=e-1;for(;s>=0&&p[s]>t;)p[s+1]=p[s],_[s+1]=_[s],s--;p[s+1]=t,_[s+1]=r}let d=0;if(_[0]&&(d|=1),_[1]&&(d|=2),_[2]&&(d|=4),_[3]&&(d|=8),5!==d&&10!==d)return 0;if(e!==t&&(o=(0,l.c)(n,n=o)),e)this.m_shape.setNextVertex(o,s),this.m_shape.setPrevVertex(s,o),this.m_shape.setNextVertex(i,a),this.m_shape.setPrevVertex(a,i),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(a,!0));else{if(this.m_shape.setPrevVertex(o,s),this.m_shape.setNextVertex(s,o),this.m_shape.setPrevVertex(i,a),this.m_shape.setNextVertex(a,i),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(s),t=this.m_shape.getSegmentParentage(a);this.m_shape.setSegmentParentageAndBreak(s,t,!0),this.m_shape.setSegmentParentageAndBreak(a,e,!0)}if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(s),t=this.m_shape.getVertexIndex(a),r=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let i=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,i),this.m_shape.setSegmentToIndex(t,r)}}return 1}resolveOverlap_(e,t,r,s,i,n){return this.resolveOverlapOddEven_(e,t,r,s,i,n)}resolveOverlapOddEven_(e,t,r,s,i,n){if(e!==t){e||(i=(0,l.c)(r,r=i),n=(0,l.c)(s,s=n));let t=this.m_shape.getNextVertex(i),a=this.m_shape.getNextVertex(r);if(this.m_shape.setNextVertex(r,t),this.m_shape.setPrevVertex(t,r),this.m_shape.setNextVertex(i,a),this.m_shape.setPrevVertex(a,i),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(r),t=this.m_shape.getVertexIndex(i),s=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let n=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,n),this.m_shape.setSegmentToIndex(t,s)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(r),t=this.m_shape.getSegmentParentage(i);this.m_shape.setSegmentParentageAndBreak(r,t,!0),this.m_shape.setSegmentParentageAndBreak(i,e,!0),this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}this.removeSpike_(i)}else{let a=e?r:s,o=t?i:n,l=e?s:r,m=t?n:i,h=null;if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(m);h=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null);let t=this.m_shape.getVertexIndex(o);this.m_shape.setSegmentToIndex(t,null);let r=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(r,null)}let g=-1;this.m_bHasSegmentParentage&&(g=this.m_shape.getSegmentParentage(m));let u=!1;this.m_shape.setNextVertex(a,o),this.m_shape.setNextVertex(o,a),this.m_shape.setPrevVertex(l,m),this.m_shape.setPrevVertex(m,l);let _=m;for(;_!==o;){let e=this.m_shape.getPrevVertex(_),t=this.m_shape.getNextVertex(_);if(this.m_shape.setPrevVertex(_,t),this.m_shape.setNextVertex(_,e),u||=_===a,this.m_bHasSegments&&_!==a){let e=this.m_shape.getVertexIndex(t),r=h;h=this.m_shape.getSegmentFromIndex(e),null!==r&&r.reverse(),this.m_shape.setSegmentToIndex(e,r)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(t);this.m_shape.setSegmentParentagePreserveBreak(t,g),g=e}_=t}let p=null;if(!u){let e=this.m_shape.getPrevVertex(o),t=this.m_shape.getNextVertex(o);if(this.m_shape.setPrevVertex(o,t),this.m_shape.setNextVertex(o,e),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(o);p=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null)}}let d=-1,c=-1;if(this.m_bHasSegmentParentage&&(d=u?this.m_shape.getSegmentParentage(a):this.m_shape.getSegmentParentage(o),c=this.m_shape.getSegmentParentage(l)),this.transferVertexData_(o,a),this.beforeRemoveVertex_(o,!0),this.m_shape.removeVertexInternal(o,!0),this.removeAngleSortInfo_(a),this.transferVertexData_(m,l),this.beforeRemoveVertex_(m,!0),this.m_shape.removeVertexInternal(m,!0),this.removeAngleSortInfo_(l),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageAndBreak(a,d,!0),this.m_shape.setSegmentParentageAndBreak(l,c,!0)),p){let e=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(e,p)}}return!0}cleanupSpikes_(){let e=!1;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;){let r=this.m_shape.getNextPath(t),s=this.m_shape.getFirstVertex(t);for(let r=0,i=this.m_shape.getPathSize(t);r<i&&i>1;){this.progress_();let{v:n,bModified:a}=this.checkAndCleanupSpike_(t,s);if(-1===n)break;a?(e=!0,s=n,r=0,i=this.m_shape.getPathSize(t)):(s=n,r++)}t=r}return e}checkAndCleanupSpike_(e,t){let r={v:-1,bModified:!1},s=this.m_shape.getPrevVertex(t),i=this.m_shape.getNextVertex(t),n=-1,a=-1;for(;this.m_shape.isEqualXY(s,i)&&(n=s,a=i,i!==t);)s=this.m_shape.getPrevVertex(s),i=this.m_shape.getNextVertex(i);if(-1===n)return r.v=i,r;r.bModified=!0;for(let e=this.m_shape.getNextVertex(n);this.beforeRemoveVertex_(e,!1),e!==a;e=this.m_shape.getNextVertex(e));if(n===t)return-1===this.m_polylineDegeneracies?this.m_shape.removePath(e):this.m_shape.movePath(this.m_polylineDegeneracies,-1,e),r.v=-1,r;{let e=this.m_shape.peelALoopIntoAPath(n,a);-1===this.m_polylineDegeneracies?this.m_shape.removePath(e):this.m_shape.movePath(this.m_polylineDegeneracies,-1,e)}return r.v=n,r}removeSpike_(e){let t=this.m_shape.getPrevVertex(e),r=this.m_shape.getNextVertex(e),s=-1,i=-1;for(;this.m_shape.isEqualXY(t,r)&&(s=t,i=r,r!==e);)t=this.m_shape.getPrevVertex(t),r=this.m_shape.getNextVertex(r);if(-1===s)return!1;if(this.m_shape.peelALoop(s,i),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(i,!0)),this.removeAngleSortInfo_(s),-1===this.m_polylineDegeneracies)for(let e=this.m_shape.getNextVertex(i);;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!0),this.m_shape.setSegmentToIndex(this.m_shape.getVertexIndex(e),null),this.m_shape.removeVertexInternal(e,!1),e===i)break;e=t}else{for(let e=i;;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!1),e=t,e===i)break}this.m_shape.insertClosedPath(this.m_polylineDegeneracies,-1,i,i,[!1])}return!0}fixOrphanVertices_(){let e=0;for(let e=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==e;e=this.m_sortedVertices.getNext(e)){let t=this.m_sortedVertices.getData(e);this.m_shape.setPathToVertex(t,-1)}let t=0;for(let r=this.m_shape.getFirstPath(this.m_geometry);-1!==r;){let s=this.m_shape.getFirstVertex(r);if(-1===s||-1!==this.m_shape.getPathFromVertex(s)){let e=r;r=this.m_shape.getNextPath(r),this.m_shape.removePathOnly(e);continue}this.m_shape.setPathToVertex(s,r);let i=1;for(let e=this.m_shape.getNextVertex(s);e!==s;e=this.m_shape.getNextVertex(e))this.m_shape.setPathToVertex(e,r),i++;this.m_shape.setRingAreaValid(r,!1),this.m_shape.setPathSize(r,i),this.m_shape.setLastVertex(r,this.m_shape.getPrevVertex(s)),t+=i,e++,r=this.m_shape.getNextPath(r)}for(let r=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==r;r=this.m_sortedVertices.getNext(r)){let s=this.m_sortedVertices.getData(r);if(-1!==this.m_shape.getPathFromVertex(s))continue;let i=this.m_shape.insertClosedPath(this.m_geometry,-1,s,s,[!1]);t+=this.m_shape.getPathSize(i),e++}this.m_shape.setGeometryPathCount(this.m_geometry,e),this.m_shape.setGeometryVertexCount(this.m_geometry,t);let r=0;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))r+=this.m_shape.getPointCount(e);this.m_shape.setTotalPointCount(r)}getNextEdgeIndex_(e){if(-1===e)return-1;for(let t=0,r=this.m_bunchEdgeIndices.length-1;t<r;t++)if(e=(e+1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return-1}getPrevEdgeIndex_(e){if(-1===e)return-1;for(let t=0,r=this.m_bunchEdgeIndices.length-1;t<r;t++)if(e=(this.m_bunchEdgeIndices.length+e-1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return-1}transferVertexData_(e,t){let r=this.m_shape.getUserIndex(t,this.m_userIndexSortedIndexToVertex),s=this.m_shape.getUserIndex(t,this.m_userIndexSortedAngleIndexToVertex);this.m_shape.transferAllDataToTheVertex(e,t),this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,r),this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,s)}removeAngleSortInfo_(e){let t=this.m_shape.getUserIndex(e,this.m_userIndexSortedAngleIndexToVertex);-1!==t&&(this.m_bunchEdgeIndices[t]=-1,this.m_shape.setUserIndex(e,this.m_userIndexSortedAngleIndexToVertex,-1))}progress_(e=!1){}}function Me(e,t,r,s,m,h=!0){switch(Ue(s)){case 0:break;case 1:(0,i.a)("relation string length has to be 9 characters");break;default:(0,i.a)("relation string")}if(h){let i=function(e,t,r){return function(e){return"T*F**FFF*"===e}(e)?3:function(e){return"FF*FF****"===e}(e)?4:function(e,t,r){return!(0===t&&0===r||(2===t&&2===r?"F***T****"!==e:2!==t&&1!==t||0!==r||"F**T*****"!==e))}(e,t,r)?8:function(e,t,r){return t>r?"T*****T**"===e:1===t&&1===r&&"0********"===e}(e,t,r)?16:function(e){return"T**FF*FF*"===e}(e)?64:function(e){return"T*****FF*"===e}(e)?1:function(e,t,r){return t===r&&(1===t?"1*T***T**"===e:"T*T***T**"===e)}(e,t,r)?32:0}(s,e.getDimension(),t.getDimension());if(0!==i)return et(e,t,r,i,m)}let g=0;if("number"==typeof r)g=r;else{let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s);let i=n.Envelope2D.constructEmpty();t.queryEnvelope(i);let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:s}),a.mergeEnvelope2D(i),g=(0,o.d)(r,a,!1)}let u=Ze(e,g),_=Ze(t,g);if(u.isEmpty()||_.isEmpty())return function(e,t,r){let s=(0,l.d)(9,-1);if(e.isEmpty()&&t.isEmpty())return Le(s,r);let o,m=!1;e.isEmpty()?(o=t,m=!0):o=e,s[0]=-1,s[1]=-1,s[3]=-1,s[4]=-1,s[6]=-1,s[7]=-1,s[8]=2;let h=o.getGeometryType();if((0,i.j)(h))if(h===i.G.enumPolygon)if(0!==o.calculateArea2D())s[2]=2,s[5]=1;else{s[5]=-1;let e=n.Envelope2D.constructEmpty();o.queryEnvelope(e),s[2]=e.height()||e.width()?1:0}else s[2]=+(0!==o.calculateLength2D()),s[5]=(0,a.A)(o)?0:-1;else s[2]=0,s[5]=-1;return m&&je(s),Le(s,r)}(u,_,s);let p=u.getGeometryType(),d=_.getGeometryType(),c=!1;switch(p){case i.G.enumPolygon:switch(d){case i.G.enumPolygon:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaAreaPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaAreaDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPolyline:c=qe(u,_,g,s,m);break;case i.G.enumPoint:c=Ye(u,_,g,s);break;case i.G.enumMultiPoint:c=Be(u,_,g,s,m)}break;case i.G.enumPolyline:switch(d){case i.G.enumPolygon:c=qe(_,u,g,Ke(s),m);break;case i.G.enumPolyline:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setLineLinePredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.lineLineDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexA=l.m_topoGraph.createUserIndexForClusters(),l.m_clusterIndexB=l.m_topoGraph.createUserIndexForClusters(),ze(n,l.m_topoGraph,l.m_clusterIndexA),ze(m,l.m_topoGraph,l.m_clusterIndexB),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexA),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexB),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPoint:c=Xe(u,_,g,s,m);break;case i.G.enumMultiPoint:c=Oe(u,_,g,s,m)}break;case i.G.enumPoint:switch(d){case i.G.enumPolygon:c=Ye(_,u,g,Ke(s));break;case i.G.enumPolyline:c=Xe(_,u,g,Ke(s),m);break;case i.G.enumPoint:c=function(e,t,r,s){let i=e.getXY(),n=t.getXY(),a=(0,l.d)(9,-1);return l.P.sqrDistance(i,n)<=r*r?a[0]=0:(a[2]=0,a[6]=0),a[8]=2,Le(a,s)}(u,_,g,s);break;case i.G.enumMultiPoint:c=Re(_,u,g,Ke(s))}break;case i.G.enumMultiPoint:switch(d){case i.G.enumPolygon:c=Be(_,u,g,Ke(s),m);break;case i.G.enumPolyline:c=Oe(_,u,g,Ke(s),m);break;case i.G.enumMultiPoint:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setPointPointPredicates_();let m=new n.Envelope2D,h=new n.Envelope2D;e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.pointPointDisjointPredicates_(),g=!0),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPoint:c=Re(u,_,g,s)}break;default:c=!1}return c}function Ue(e){if(9!==e.length)return 1;for(let t=0;t<9;t++){let r=e[t];if("*"!==r&&"T"!==r&&"F"!==r&&"0"!==r&&"1"!==r&&"2"!==r)return 2}return 0}function qe(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaLinePredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaLineDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexB=l.m_topoGraph.createUserIndexForClusters(),ze(m,l.m_topoGraph,l.m_clusterIndexB),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexB),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Be(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaPointPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaPointDisjointPredicates_(e),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Oe(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setLinePointPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.linePointDisjointPredicates_(e),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexA=l.m_topoGraph.createUserIndexForClusters(),ze(n,l.m_topoGraph,l.m_clusterIndexA),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexA),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Ye(e,t,r,s,i){let a=new We;a.resetMatrix_(),a.setPredicates_(s),a.setAreaPointPredicates_();let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o);let l=t.getXY(),m=!1;if(it(l,o,r)&&(a.areaPointDisjointPredicates_(e),m=!0),!m){let t=tr(e,l,r);if(1===t)a.m_matrix[0]=0,a.m_matrix[2]=2,a.m_matrix[3]=-1,a.m_matrix[5]=1,a.m_matrix[6]=-1;else if(2===t)if(a.m_matrix[6]=-1,0!==e.calculateArea2D())a.m_matrix[0]=-1,a.m_matrix[3]=0,a.m_matrix[2]=2,a.m_matrix[5]=1;else{a.m_matrix[0]=0,a.m_matrix[3]=-1,a.m_matrix[5]=-1;let t=n.Envelope2D.constructEmpty();e.queryEnvelope(t),a.m_matrix[2]=t.height()||t.width()?1:-1}else a.areaPointDisjointPredicates_(e)}return Le(a.m_matrix,s)}function Xe(e,t,r,s,i){let o=new We;o.resetMatrix_(),o.setPredicates_(s),o.setLinePointPredicates_();let l=n.Envelope2D.constructEmpty();e.queryEnvelope(l);let m=!1;if(it(t.getXY(),l,r)&&(o.linePointDisjointPredicates_(e),m=!0),!m){let s=null,n=!1,l=!1;if((o.m_performPredicates[0]||o.m_performPredicates[6])&&(et(e,t,r,4,i)?(o.m_matrix[0]=-1,o.m_matrix[6]=0):(o.m_performPredicates[0]&&(s=(0,a.c)(e),l=!et(s,t,r,4,i),n=!0,o.m_matrix[0]=l?-1:0),o.m_matrix[6]=-1)),o.m_performPredicates[3]&&(null!==s&&s.isEmpty()?o.m_matrix[3]=-1:(n||=(s??=(0,a.c)(e),l=!et(s,t,r,4,i),!0),o.m_matrix[3]=l?0:-1)),o.m_performPredicates[5])if(null!==s&&s.isEmpty())o.m_matrix[5]=-1;else if(n&&!l)o.m_matrix[5]=0;else{null===s&&(s=(0,a.c)(e));let n=et(s,t,r,3,i);o.m_matrix[5]=n?-1:0}if(o.m_performPredicates[2])if(0!==e.calculateLength2D())o.m_matrix[2]=1;else{let s=new a.M({vd:e.getDescription()});s.addPoints(e,0,e.getPointCount());let n=et(s,t,r,3,i);o.m_matrix[2]=n?-1:0}}return Le(o.m_matrix,o.m_scl)}function Re(e,t,r,s,i){let a=new We;a.resetMatrix_(),a.setPredicates_(s),a.setPointPointPredicates_();let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o);let m=t.getXY(),h=new l.P,g=!1;if(it(m,o,r)&&(a.pointPointDisjointPredicates_(),g=!0),!g){let t=!1,s=!0,i=r*r;for(let r=0;r<e.getPointCount()&&(e.queryXY(r,h),l.P.sqrDistance(h,m)<=i?t=!0:s=!1,!t||s);r++);t?(a.m_matrix[0]=0,a.m_matrix[2]=s?-1:0,a.m_matrix[6]=-1):(a.m_matrix[0]=-1,a.m_matrix[2]=0,a.m_matrix[6]=0)}return Le(a.m_matrix,s)}function Le(e,t){for(let r=0;r<9;r++)switch(t[r]){case"T":if(-1===e[r])return!1;break;case"F":if(-1!==e[r])return!1;break;case"0":if(0!==e[r])return!1;break;case"1":if(1!==e[r])return!1;break;case"2":if(2!==e[r])return!1}return!0}function ze(e,t,r){let s=t.getGeometryID(e);for(let e=t.getFirstCluster();-1!==e;e=t.getNextCluster(e)){if(0===(t.getClusterParentage(e)&s))continue;let i=t.getClusterHalfEdge(e);if(-1===i){t.setClusterUserIndex(e,r,0);continue}let n=i,a=0;do{let e=n;0!==(t.getHalfEdgeParentage(e)&s)&&a++,n=t.getHalfEdgeNext(t.getHalfEdgeTwin(e))}while(n!==i);t.setClusterUserIndex(e,r,a)}}class We{m_clusterIndexA=-1;m_clusterIndexB=-1;m_visitedIndex=-1;m_topoGraph=new K;m_matrix=(0,l.d)(9,0);m_maxDim=(0,l.d)(9,0);m_performPredicates=(0,l.d)(9,!1);m_scl="";m_predicateCount=0;nullFunc(){return(0,i.d)("should not be called"),!1}m_predicatesHalfEdge=this.nullFunc;m_predicatesCluster=this.nullFunc;constructor(){}resetMatrix_(){this.m_matrix.fill(-2),this.m_maxDim.fill(-2)}setPredicates_(e){this.m_scl=e;for(let e=0;e<9;e++)"*"===this.m_scl[e]?this.m_performPredicates[e]=!1:(this.m_performPredicates[e]=!0,this.m_predicateCount++)}setRemainingPredicatesToFalse_(){for(let e=0;e<9;e++)this.m_performPredicates[e]&&-2===this.m_matrix[e]&&(this.m_matrix[e]=-1,this.m_performPredicates[e]=!1)}isPredicateKnown_(e){return-2!==this.m_matrix[e]&&!(-1!==this.m_matrix[e]&&"T"!==this.m_scl[e]&&"F"!==this.m_scl[e]&&this.m_matrix[e]<this.m_maxDim[e]||(this.m_performPredicates[e]=!1,this.m_predicateCount--,0))}setAreaAreaPredicates_(){this.m_predicatesHalfEdge=this.areaAreaPredicates_,this.m_maxDim[0]=2,this.m_maxDim[1]=1,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=1,this.m_maxDim[5]=1,this.m_maxDim[6]=2,this.m_maxDim[7]=1,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaLinePredicates_(){this.m_predicatesHalfEdge=this.areaLinePredicates_,this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=0,this.m_maxDim[5]=1,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLineLinePredicates_(){this.m_predicatesHalfEdge=this.lineLinePredicates_,this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=0,this.m_maxDim[5]=0,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaPointPredicates_(){this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=2,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLinePointPredicates_(){this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=0,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setPointPointPredicates_(){this.m_predicatesCluster=this.pointPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=0,this.m_maxDim[3]=-1,this.m_maxDim[4]=-1,this.m_maxDim[5]=-1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[3]&&(this.m_matrix[3]=-1,this.m_performPredicates[3]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[5]&&(this.m_matrix[5]=-1,this.m_performPredicates[5]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}areaAreaDisjointPredicates_(e,t){this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5]),this.areaGeomContainsOrDisjointPredicates_(t,this.m_performPredicates[6]?6:-1,this.m_scl[6],this.m_performPredicates[7]?7:-1,this.m_scl[7])}areaGeomContainsOrDisjointPredicates_(e,t,r,s,i){let a=-1!==t,o=-1!==s;if(a||o)if(("T"!==r&&"F"!==r&&a||"T"!==i&&"F"!==i&&o)&&0===e.calculateArea2D()){if(o&&(this.m_matrix[s]=-1),a){let r=n.Envelope2D.constructEmpty();e.queryEnvelope(r),this.m_matrix[t]=r.height()||r.width()?1:0}}else a&&(this.m_matrix[t]=2),o&&(this.m_matrix[s]=1)}areaAreaContainsPredicates_(e){this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[0]?0:-1,this.m_scl[0],this.m_performPredicates[1]?1:-1,this.m_scl[1])}areaAreaWithinPredicates_(e){this.areaAreaContainsPredicates_(e),je(this.m_matrix)}areaLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[6]){let e=this.m_scl[6],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!r}this.m_performPredicates[7]&&((0,a.A)(t)?this.m_matrix[7]=0:this.m_matrix[7]=-1),this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaLineContainsPredicates_(e,t){if(this.m_performPredicates[0]){let e=this.m_scl[0],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[0]=+!!r}this.m_performPredicates[1]&&((0,a.A)(t)?this.m_matrix[1]=0:this.m_matrix[1]=-1),this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1}areaPointDisjointPredicates_(e){this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_matrix[6]=0,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaPointContainsPredicates_(e){this.m_matrix[0]=0,this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1}lineLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],r="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!r}if(this.m_performPredicates[5]&&((0,a.A)(e)?this.m_matrix[5]=0:this.m_matrix[5]=-1),this.m_performPredicates[6]){let e=this.m_scl[6],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!r}this.m_performPredicates[7]&&((0,a.A)(t)?this.m_matrix[7]=0:this.m_matrix[7]=-1)}linePointDisjointPredicates_(e){if(this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],r="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!r}if(this.m_performPredicates[5]){let t=(0,a.A)(e);this.m_matrix[5]=t?0:-1}this.m_matrix[6]=0}pointPointDisjointPredicates_(){this.m_matrix[0]=-1,this.m_matrix[2]=0,this.m_matrix[6]=0}areaAreaPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorArea_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorAreaBoundaryArea_(e,t,1);let r=this.isPredicateKnown_(1);s&&=r}if(this.m_performPredicates[2]){this.interiorAreaExteriorArea_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.interiorAreaBoundaryArea_(e,r,3);let t=this.isPredicateKnown_(3);s&&=t}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryArea_(e,t,r);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorArea_(e,t,r,5);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.interiorAreaExteriorArea_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}if(this.m_performPredicates[7]){this.boundaryAreaExteriorArea_(e,r,t,7);let i=this.isPredicateKnown_(7);s&&=i}return s}areaLinePredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorLine_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(1);s&&=i}if(this.m_performPredicates[2]){this.interiorAreaExteriorLine_(e,t,r);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.boundaryAreaInteriorLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorLine_(e,t,r);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.exteriorAreaInteriorLine_(e,t);let r=this.isPredicateKnown_(6);s&&=r}if(this.m_performPredicates[7]){this.exteriorAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(7);s&&=i}return s}lineLinePredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorLineBoundaryLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB,1);let i=this.isPredicateKnown_(1);s&&=i}if(this.m_performPredicates[2]){this.interiorLineExteriorLine_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.interiorLineBoundaryLine_(e,r,t,this.m_clusterIndexB,this.m_clusterIndexA,3);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[4]){this.boundaryLineBoundaryLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryLineExteriorLine_(e,t,r,this.m_clusterIndexA,5);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.interiorLineExteriorLine_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}if(this.m_performPredicates[7]){this.boundaryLineExteriorLine_(e,r,t,this.m_clusterIndexB,7);let i=this.isPredicateKnown_(7);s&&=i}return s}areaPointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorPoint_(e,t);let r=this.isPredicateKnown_(0);s&&=r}if(this.m_performPredicates[2]){this.interiorAreaExteriorPoint_(e,t);let r=this.isPredicateKnown_(2);s&&=r}if(this.m_performPredicates[3]){this.boundaryAreaInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorPoint_(e,t);let r=this.isPredicateKnown_(5);s&&=r}if(this.m_performPredicates[6]){this.exteriorAreaInteriorPoint_(e,t);let r=this.isPredicateKnown_(6);s&&=r}return s}linePointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[2]){this.interiorLineExteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.boundaryLineInteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[5]){this.boundaryLineExteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.exteriorLineInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(6);s&&=i}return s}pointPointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorPointInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[2]){this.interiorPointExteriorPoint_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[6]){this.interiorPointExteriorPoint_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}return s}interiorAreaInteriorArea_(e,t,r){if(2===this.m_matrix[0])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!==(s&t)&&0!==(s&r)&&(this.m_matrix[0]=2)}interiorAreaBoundaryArea_(e,t,r){if(1===this.m_matrix[r])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e),i=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!==(s&t)&&0!==(i&t)&&(this.m_matrix[r]=1)}interiorAreaExteriorArea_(e,t,r,s){if(2===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!==(i&t)&&0===(i&r)&&(this.m_matrix[s]=2)}boundaryAreaBoundaryArea_(e,t,r){if(1===this.m_matrix[4])return;let s=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(s&t)||0===(s&r)){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let s=this.m_topoGraph.getHalfEdgeTo(e),i=this.m_topoGraph.getClusterParentage(s);if(0!==(i&t)&&0!==(i&r))return void(this.m_matrix[4]=0)}}else this.m_matrix[4]=1}boundaryAreaExteriorArea_(e,t,r,s){if(1===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e),n=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0===(i&r)&&0===(n&r)&&(this.m_matrix[s]=1)}interiorAreaInteriorLine_(e,t,r){if(1===this.m_matrix[0])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e),i=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!==(s&t)&&0!==(i&t)&&(this.m_matrix[0]=1)}interiorAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[1]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0===(n&t)&&0!==(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[1]=0)}}}interiorAreaExteriorLine_(e,t,r){2!==this.m_matrix[2]&&0!==(this.m_topoGraph.getHalfEdgeParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorLine_(e,t,r,s){if(1===this.m_matrix[3])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(i&t)||0===(i&r)){if(0!==this.m_matrix[3]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0!==(n&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2==0)return void(this.m_matrix[3]=0)}}}else this.m_matrix[3]=1}boundaryAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0!==(n&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[4]=0)}}}boundaryAreaExteriorLine_(e,t,r){if(1===this.m_matrix[5])return;let s=this.m_topoGraph.getHalfEdgeParentage(e);0!==(s&t)&&0===(s&r)&&(this.m_matrix[5]=1)}exteriorAreaInteriorLine_(e,t){if(1===this.m_matrix[6])return;let r=this.m_topoGraph.getHalfEdgeFaceParentage(e),s=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0===(r&t)&&0===(s&t)&&(this.m_matrix[6]=1)}exteriorAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[7]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0===(n&t)&&0===(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[7]=0)}}}interiorLineInteriorLine_(e,t,r,s,i){if(1===this.m_matrix[0])return;let n=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(n&t)||0===(n&r)){if(0!==this.m_matrix[0]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!==(a&t)&&0!==(a&r)){let e=this.m_topoGraph.getClusterUserIndex(n,s),t=this.m_topoGraph.getClusterUserIndex(n,i);if(e%2==0&&t%2==0)return void(this.m_matrix[0]=0)}}}else this.m_matrix[0]=1}interiorLineBoundaryLine_(e,t,r,s,i,n){if(0!==this.m_matrix[n]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let a=this.m_topoGraph.getHalfEdgeTo(e),o=this.m_topoGraph.getClusterParentage(a);if(0!==(o&t)&&0!==(o&r)){let e=this.m_topoGraph.getClusterUserIndex(a,s),t=this.m_topoGraph.getClusterUserIndex(a,i);if(e%2==0&&t%2!=0)return void(this.m_matrix[n]=0)}}}interiorLineExteriorLine_(e,t,r,s){if(1===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);0!==(i&t)&&0===(i&r)&&(this.m_matrix[s]=1)}boundaryLineBoundaryLine_(e,t,r,s,i){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!==(a&t)&&0!==(a&r)){let e=this.m_topoGraph.getClusterUserIndex(n,s),t=this.m_topoGraph.getClusterUserIndex(n,i);if(e%2!=0&&t%2!=0)return void(this.m_matrix[4]=0)}}}boundaryLineExteriorLine_(e,t,r,s,i){if(0!==this.m_matrix[i]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let t=this.m_topoGraph.getHalfEdgeTo(e);if(0===(this.m_topoGraph.getClusterParentage(t)&r)&&this.m_topoGraph.getClusterUserIndex(t,s)%2!=0)return void(this.m_matrix[i]=0)}}interiorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[0]&&0===(this.m_topoGraph.getClusterParentage(e)&t)){let r=this.m_topoGraph.getClusterChain(e);if(0!==(this.m_topoGraph.getChainParentage(r)&t))return void(this.m_matrix[0]=0)}}interiorAreaExteriorPoint_(e,t){2!==this.m_matrix[2]&&0!==(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorPoint_(e,t,r){if(0===this.m_matrix[3])return;let s=this.m_topoGraph.getClusterParentage(e);0===(s&t)||0===(s&r)||(this.m_matrix[3]=0)}boundaryAreaExteriorPoint_(e,t){1!==this.m_matrix[5]&&0!==(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[5]=1)}exteriorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[6]&&0===(this.m_topoGraph.getClusterParentage(e)&t)){let r=this.m_topoGraph.getClusterChain(e);if(0===(this.m_topoGraph.getChainParentage(r)&t))return void(this.m_matrix[6]=0)}}interiorLineInteriorPoint_(e,t,r,s){if(0===this.m_matrix[0])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0===(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2!=0||(this.m_matrix[0]=0)}interiorLineExteriorPoint_(e,t,r,s){if(1!==this.m_matrix[2]){if(-1!==this.m_topoGraph.getClusterHalfEdge(e))return void(this.m_matrix[2]=1);if(0!==this.m_matrix[2]&&0===(this.m_topoGraph.getClusterParentage(e)&r))return void(this.m_matrix[2]=0)}}boundaryLineInteriorPoint_(e,t,r,s){if(0===this.m_matrix[3])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0===(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2==0||(this.m_matrix[3]=0)}boundaryLineExteriorPoint_(e,t,r,s){if(0===this.m_matrix[5])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0!==(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2==0||(this.m_matrix[5]=0)}exteriorLineInteriorPoint_(e,t,r){if(0===this.m_matrix[6])return;let s=this.m_topoGraph.getClusterParentage(e);0!==(s&t)||0===(s&r)||(this.m_matrix[6]=0)}interiorPointInteriorPoint_(e,t,r){if(0===this.m_matrix[0])return;let s=this.m_topoGraph.getClusterParentage(e);0===(s&t)||0===(s&r)||(this.m_matrix[0]=0)}interiorPointExteriorPoint_(e,t,r,s){if(0===this.m_matrix[s])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0!==(i&r)||(this.m_matrix[s]=0)}computeMatrixTopoGraphHalfEdges_(e,t){let r=!1,s=this.m_topoGraph.getGeometryID(e),i=this.m_topoGraph.getGeometryID(t);this.m_visitedIndex=this.m_topoGraph.createUserIndexForHalfEdges();for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t){if(null!==this.m_predicatesCluster&&(r=this.m_predicatesCluster(e,s,i),r))break;continue}let n=t;do{let e=n;if(1!==this.m_topoGraph.getHalfEdgeUserIndex(e,this.m_visitedIndex))do{if(r=this.m_predicatesHalfEdge(e,s,i),r)break;this.m_topoGraph.setHalfEdgeUserIndex(e,this.m_visitedIndex,1),e=this.m_topoGraph.getHalfEdgeNext(e)}while(e!==n&&!r);if(r)break;n=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(e))}while(n!==t);if(r)break}r||this.setRemainingPredicatesToFalse_(),this.m_topoGraph.deleteUserIndexForHalfEdges(this.m_visitedIndex)}computeMatrixTopoGraphClusters_(e,t){let r=!1,s=this.m_topoGraph.getGeometryID(e),i=this.m_topoGraph.getGeometryID(t);for(let e=this.m_topoGraph.getFirstCluster();-1!==e&&(r=this.m_predicatesCluster(e,s,i),!r);e=this.m_topoGraph.getNextCluster(e));r||this.setRemainingPredicatesToFalse_()}setEditShape_(e,t){this.m_topoGraph.setEditShape(e,t)}setEditShapeCrackAndCluster_(e,t,r){let s=0;if(e.hasCurves()){let i=new dr,n=e.getEnvelope2D(r),a=ur(t.total(),n);s=pr(a,0),lr(e,a,t.total(),0,i,null,r),i.clearStitcher(e)}fr(e,t.add(s),r,!1,!1),e.filterClosePoints(0,!0,!0,!1,-1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,!1,-1,r);this.setEditShape_(e,r)}}function je(e){let t=e[1],r=e[2],s=e[5];e[1]=e[3],e[2]=e[6],e[5]=e[7],e[3]=t,e[6]=r,e[7]=s}function Ze(e,t,r){let s=e.getGeometryType();if((0,i.h)(s)){let t=new a.a({vd:e.getDescription()});return t.addSegment(e,!0),t}if(s===i.G.enumEnvelope){let r=e,s=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),s.height()<=t&&s.width()<=t){let t=new o.P({vd:e.getDescription()});return r.getCenter(t),t}if(s.height()<=t||s.width()<=t){let t=new a.a({vd:e.getDescription()}),s=new o.P;return r.queryCornerByVal(0,s),t.startPathPoint(s),r.queryCornerByVal(2,s),t.lineToPoint(s),t}let i=new a.P({vd:e.getDescription()});return i.addEnvelope(r,!1),i}return e}function Ke(e){return`${e[0]}${e[3]}${e[6]}${e[1]}${e[4]}${e[7]}${e[2]}${e[5]}${e[8]}`}class Qe{m_multiVertexImplA;m_multiVertexImplB;m_queryType;m_bPaths;m_bQuadTree;m_bDone=!1;m_bSwapElements;m_tolerance=0;m_pathIndex;m_pointIndex;m_elementHandle=-1;m_query=n.Envelope2D.constructEmpty();m_envInter=n.Envelope2D.constructEmpty();m_quadTree=null;m_qtIter;m_segIter;m_function;m_intersector=null;nullFunc(){return(0,i.d)("should not be called"),!1}constructor(e,t,r,s=!1){this.m_function=this.nullFunc;let a=e.getAccelerators(),l=null;null!=a&&(l=s?a.getQuadTreeForPaths():a.getQuadTree());let m=t.getAccelerators(),h=null;if(null!=m&&(h=s?m.getQuadTreeForPaths():m.getQuadTree()),null===l&&null===h&&!s){let s=e.getPointCount(),a=t.getPointCount();if(s>10&&a>10){let m=n.Envelope2D.constructEmpty(),g=n.Envelope2D.constructEmpty(),u=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(m),t.queryLooseEnvelope(g),m.inflateCoords(r,r),g.inflateCoords(r,r),u.setCoords({env2D:m}),u.intersect(g),s>=a?l=(0,i.j)(e.getGeometryType())?(0,o.u)(e,u):(0,o.v)(e,u):h=(0,i.j)(t.getGeometryType())?(0,o.u)(t,u):(0,o.v)(t,u)}}this.construct_(e,l,t,h,r,s)}next(){if(this.m_bQuadTree){if(this.m_bDone)return!1;for(;this.m_function(););return!this.m_bDone}return!!this.m_intersector&&this.m_intersector.next()}getRedElement(){return this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElement(this.m_elementHandle):(0,i.j)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_bSwapElements?this.m_intersector.getBlueElement(this.m_intersector.getHandleB()):this.m_intersector.getRedElement(this.m_intersector.getHandleA())}getBlueElement(){return this.m_bQuadTree?this.m_bSwapElements?(0,i.j)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_quadTree.getElement(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedElement(this.m_intersector.getHandleA()):this.m_intersector.getBlueElement(this.m_intersector.getHandleB())}getRedEnvelope(){return this.m_bPaths||(0,i.q)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_query:this.m_bSwapElements?this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB()):this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA())}getBlueEnvelope(){return this.m_bPaths||(0,i.q)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_query:this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA()):this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB())}construct_(e,t,r,s,a,l){let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(m),r.queryLooseEnvelope(h),m.inflateCoords(a,a),h.inflateCoords(a,a),this.m_envInter.setCoords({env2D:m}),this.m_envInter.intersect(h),this.m_multiVertexImplA=e,this.m_multiVertexImplB=r;let g=e.getGeometryType(),u=r.getGeometryType();this.m_bPaths=l,this.m_pathIndex=-1,this.m_pointIndex=-1,this.m_bSwapElements=!1,this.m_queryType=i.G.enumUnknown,this.m_bQuadTree=!1,null!==t&&(this.m_bDone=!1,this.m_tolerance=a,this.m_quadTree=t,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!0,(0,i.j)(u)?(this.m_queryType=u,this.m_function=this.nextPath_,l?this.m_pathIndex=r.getPathCount():this.m_segIter=r.querySegmentIterator()):(this.m_queryType=u,this.m_function=this.nextPoint_,this.m_pointIndex=r.getPointCount())),this.m_bQuadTree||null!==s&&(this.m_bDone=!1,this.m_tolerance=a,this.m_quadTree=s,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!1,(0,i.j)(g)?(this.m_queryType=g,this.m_function=this.nextPath_,l?this.m_pathIndex=e.getPathCount():this.m_segIter=e.querySegmentIterator()):(this.m_queryType=g,this.m_function=this.nextPoint_,this.m_pointIndex=e.getPointCount())),this.m_bQuadTree||(l&&(0,i.j)(g)&&(0,i.j)(u)?this.m_intersector=(0,o.z)(e,r,a):(0,i.j)(g)&&(0,i.j)(u)?(this.m_intersector=(0,o.w)(e,r,a),this.m_bSwapElements=!1):(0,i.j)(g)&&!(0,i.j)(u)?(this.m_intersector=(0,o.x)(e,r,a),this.m_bSwapElements=!1):!(0,i.j)(g)&&(0,i.j)(u)?(this.m_intersector=(0,o.x)(r,e,a),this.m_bSwapElements=!0):(this.m_intersector=(0,o.y)(e,r,a),this.m_bSwapElements=!1))}nextPath_(){return this.m_bPaths?-1===--this.m_pathIndex?(this.m_bDone=!0,!1):(this.m_bSwapElements?this.m_multiVertexImplB.queryPathEnvelope(this.m_pathIndex,this.m_query):this.m_multiVertexImplA.queryPathEnvelope(this.m_pathIndex,this.m_query),this.m_qtIter.resetIterator(this.m_query,this.m_tolerance),this.m_function=this.iterate_,!0):this.m_segIter.nextPath()?(this.m_function=this.nextSegment_,!0):(this.m_bDone=!0,!1)}nextSegment_(){if(!this.m_segIter.hasNextSegment())return this.m_function=this.nextPath_,!0;let e=this.m_segIter.nextSegment(),t=new n.Envelope2D;return e.queryLooseEnvelope(t),!t.isIntersecting(this.m_envInter)||(this.m_qtIter.resetIterator(e,this.m_tolerance),this.m_function=this.iterate_,!0)}nextPoint_(){if(-1===--this.m_pointIndex)return this.m_bDone=!0,!1;let e=new l.P;if(this.m_bSwapElements){let t=this.m_multiVertexImplB.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}else{let t=this.m_multiVertexImplA.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}return!this.m_envInter.contains(e)||(this.m_qtIter.resetIterator(n.Envelope2D.construct(e.x,e.y,e.x,e.y),this.m_tolerance),this.m_function=this.iterate_,!0)}iterate_(){return this.m_elementHandle=this.m_qtIter.next(),-1===this.m_elementHandle&&((0,i.j)(this.m_queryType)?(this.m_function=this.m_bPaths?this.nextPath_:this.nextSegment_,!0):(this.m_function=this.nextPoint_,!0))}}function Je(e){return 2===e?1:1===e?2:128===e?64:64===e?128:e}function $e(e,t,r){let s;if(e instanceof la||null===e){let i=n.Envelope2D.constructEmpty();i.setCoords({env2D:t}),i.mergeEnvelope2D(r),s=(0,o.d)(e,i,!1)}else s=e;return s}function et(e,t,r,s,m){if(e.isEmpty()||t.isEmpty())return 4===s;(0,i.c)(e),(0,i.c)(t);let g=e.getGeometryType(),u=t.getGeometryType();if(g===i.G.enumEnvelope){if(u===i.G.enumEnvelope)return function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return 4===s;let i=n.Envelope2D.constructEmpty();e.queryEnvelope(i);let a=n.Envelope2D.constructEmpty();t.queryEnvelope(a);let o=$e(r,i,a);switch(s){case 4:return rt(i,a,o);case 2:return Dt(a,i,o,!1);case 128:return Dt(a,i,o,!0);case 1:return Dt(i,a,o,!1);case 64:return Dt(i,a,o,!0);case 3:return Nt(i,a,o);case 8:return function(e,t,r){if(e.height()<=r||e.width()<=r||t.height()<=r||t.width()<=r)return!1;let s=new n.Envelope2D;return s.setCoords({env2D:e}),s.inflateCoords(-r,-r),s.intersect(t),!(!s.isEmpty()&&s.height()>r&&s.width()>r||(s.setCoords({env2D:e}),s.inflateCoords(r,r),s.intersect(t),s.isEmpty()))}(i,a,o);case 32:return function(e,t,r){if(e.height()<=r||e.width()<=r||t.height()<=r||t.width()<=r||Ft(e,t,r)||Ft(t,e,r))return!1;let s=new n.Envelope2D;return s.setCoords({env2D:e}),s.inflateCoords(-r,-r),s.intersect(t),!s.isEmpty()&&(s.height()>r||s.width()>r)}(i,a,o);case 16:return!1}return!1}(e,t,r,s);if(u===i.G.enumPoint)return tt(t,e,r,Je(s))}else if(g===i.G.enumPoint){if(u===i.G.enumEnvelope)return tt(e,t,r,s);if(u===i.G.enumPoint)return function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return 4===s;let i,a=e.getXY(),m=t.getXY();if(r instanceof la||null===r){let e=n.Envelope2D.constructEmpty();e.setCoords({pt:a}),e.merge(m),i=(0,o.d)(r,e,!1)}else i=r;switch(s){case 4:return function(e,t,r){return l.P.sqrDistance(e,t)>r*r}(a,m,i);case 2:case 128:return Tt(m,a,i);case 1:case 64:return Tt(a,m,i);case 3:return bt(a,m,i)}return!1}(e,t,r,s)}let _=n.Envelope2D.constructEmpty();e.queryEnvelope(_);let p=n.Envelope2D.constructEmpty();t.queryEnvelope(p);let d=$e(r,_,p);if(rt(_,p,d))return 4===s;let c=!1,f=null,x=null,P=null,y=null;switch((0,i.h)(g)?(f=new a.a({vd:e.getDescription()}),f.addSegment(e,!0),P=f,g=i.G.enumPolyline):P=e,(0,i.h)(u)?(x=new a.a({vd:t.getDescription()}),x.addSegment(t,!0),y=x,u=i.G.enumPolyline):y=t,g!==i.G.enumEnvelope&&u!==i.G.enumEnvelope?(P.getDimension()<y.getDimension()||g===i.G.enumPoint&&u===i.G.enumMultiPoint)&&(s=Je(s)):g!==i.G.enumPolygon&&u!==i.G.enumEnvelope&&(s=Je(s)),g){case i.G.enumPolygon:switch(u){case i.G.enumPolygon:c=function(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t,0,!0),1===Vt(e,t,r,!0)}(e,t,r);case 2:return dt(t,e,r,i);case 128:return ct(t,e,r);case 1:return dt(e,t,r,i);case 64:return ct(e,t,r);case 3:return pt(e,t,r,i);case 8:return function(e,t,r){return st(e,t),zt(e,t,r,null)}(e,t,r);case 32:return function(e,t,r,s){return st(e,t),Wt(e,t,r,s)}(e,t,r,i)}return!1}(P,y,d,s,m);break;case i.G.enumPolyline:c=nt(P,y,d,s,m);break;case i.G.enumPoint:c=at(P,y,d,s);break;case i.G.enumMultiPoint:c=ot(P,y,d,s);break;case i.G.enumEnvelope:c=lt(P,y,d,s,m)}break;case i.G.enumPolyline:switch(u){case i.G.enumPolygon:c=nt(y,P,d,s,m);break;case i.G.enumPolyline:c=function(e,t,r,s,i){switch(s){case 4:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl();return!new Qe(s,i,r,!0).next()||!Ot(e,t,r)}(e,t,r);case 2:return Et(t,e,r,i);case 128:return St(t,e,r,i);case 1:return Et(e,t,r,i);case 64:return St(e,t,r,i);case 3:return function(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Nt(i,a,r)&&(st(e,t),!!Mt(e,t,r)||(e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"**F**FFF*",s,!1):qt(e,t,r,!1)))}(e,t,r,i);case 8:return function(e,t,r,s){st(e,t);let i=[],o=Yt(e,t,r,i);if(-2===o){let i,a,o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),o.inflateCoords(1e3*r,1e3*r),l.inflateCoords(1e3*r,1e3*r),m.setCoords({env2D:o}),m.intersect(l),e.getPointCount()>10){if(i=(0,h.c)(e,m,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(a=(0,h.c)(t,m,r,0,s),a.isEmpty())return!1}else a=t;return Me(i,a,r,"F********",s,!1)}if(0!==o)return!1;let l=new a.M;for(let e=0;e<i.length;e+=2){let t=i[e],r=i[e+1];l.addXY(t,r)}let m=e.getBoundary(),g=t.getBoundary();return m.addPoints(g,0,g.getPointCount()),!m.isEmpty()&&It(m,l,r)}(e,t,r,i);case 32:return function(e,t,r,s){st(e,t);let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();e.queryEnvelope(i),t.queryEnvelope(a);let o=At(i,a,r),l=At(a,i,r),m=e.hasNonLinearSegments(),g=t.hasNonLinearSegments(),u=Yt(e,t,r,null);if(-1===u)return!1;if(1===u){if(o&&l)return!0;if(!m&&!g)return o&&!l?!Bt(t,e,r,!1):l&&!o?!Bt(e,t,r,!1):!Bt(e,t,r,!1)&&!Bt(t,e,r,!1)}let _=n.Envelope2D.constructEmpty(),p=n.Envelope2D.constructEmpty(),d=n.Envelope2D.constructEmpty();_.setCoords({env2D:i}),_.inflateCoords(1e3*r,1e3*r),p.setCoords({env2D:a}),p.inflateCoords(1e3*r,1e3*r),d.setCoords({env2D:_}),d.intersect(p);let c,f,x="";if(x+="1*",o){if(t.getPointCount()>10){if(f=(0,h.c)(t,d,r,0,s),f.isEmpty())return!1}else f=t;x+="****"}else f=t,x+="T***";if(l){if(e.getPointCount()>10){if(c=(0,h.c)(e,d,r,0,s),c.isEmpty())return!1}else c=e;x+="***"}else c=e,x+="T**";return Me(c,f,r,x,s,!1)}(e,t,r,i);case 16:return function(e,t,r,s){st(e,t);let i=[],o=Yt(e,t,r,i);if(-2===o){let i,a,o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),o.inflateCoords(1e3*r,1e3*r),l.inflateCoords(1e3*r,1e3*r),m.setCoords({env2D:o}),m.intersect(l),e.getPointCount()>10){if(i=(0,h.c)(e,m,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(a=(0,h.c)(t,m,r,0,s),a.isEmpty())return!1}else a=t;return Me(i,a,r,"0********",s,!1)}if(0!==o)return!1;let l=new a.M;for(let e=0;e<i.length;e+=2){let t=i[e],r=i[e+1];l.addXY(t,r)}let m=e.getBoundary(),g=t.getBoundary();return m.addPoints(g,0,g.getPointCount()),!!m.isEmpty()||!It(m,l,r)}(e,t,r,i)}return!1}(P,y,d,s,m);break;case i.G.enumPoint:c=mt(P,y,d,s);break;case i.G.enumMultiPoint:c=ht(P,y,d,s);break;case i.G.enumEnvelope:c=gt(P,y,d,s,m)}break;case i.G.enumPoint:switch(u){case i.G.enumPolygon:c=at(y,P,d,s);break;case i.G.enumPolyline:c=mt(y,P,d,s);break;case i.G.enumMultiPoint:c=ut(y,P,d,s)}break;case i.G.enumMultiPoint:switch(u){case i.G.enumPolygon:c=ot(y,P,d,s);break;case i.G.enumPolyline:c=ht(y,P,d,s);break;case i.G.enumMultiPoint:c=function(e,t,r,s){switch(s){case 4:return function(e,t,r){let s=e,i=t,n=new Qe(s,i,r,!1),a=r*r,o=new l.P,m=new l.P;for(;n.next();){let e=n.getRedElement(),t=n.getBlueElement();if(s.queryXY(e,o),i.queryXY(t,m),l.P.sqrDistance(o,m)<=a)return!1}return!0}(e,t,r);case 2:case 128:return It(t,e,r);case 1:case 64:return It(e,t,r);case 3:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!!Nt(s,i,r)&&(!!function(e,t,r){if(e.getPointCount()!==t.getPointCount())return!1;let s=new l.P,i=new l.P,n=!0,a=r*r;for(let r=0;r<e.getPointCount();r++)if(e.queryXY(r,s),t.queryXY(r,i),l.P.sqrDistance(s,i)>a){n=!1;break}return!!n}(e,t,r)||Ut(e,t,r,!1,!0,!1))}(e,t,r);case 32:return function(e,t,r){return Ut(e,t,r,!1,!1,!0)}(e,t,r)}return!1}(P,y,d,s);break;case i.G.enumPoint:c=ut(P,y,d,s);break;case i.G.enumEnvelope:c=_t(P,y,d,s)}break;case i.G.enumEnvelope:switch(u){case i.G.enumPolygon:c=lt(y,P,d,s,m);break;case i.G.enumPolyline:c=gt(y,P,d,s,m);break;case i.G.enumMultiPoint:c=_t(y,P,d,s)}}return c}function tt(e,t,r,s,i){if(e.isEmpty()||t.isEmpty())return 4===s;let a=e.getXY(),l=n.Envelope2D.constructEmpty();t.queryEnvelope(l);let m=function(e,t,r){let s;if(e instanceof la||null===e){let i=n.Envelope2D.constructEmpty();i.setCoords({pt:t}),i.mergeEnvelope2D(r),s=(0,o.d)(e,i,!1)}else s=e;return s}(r,a,l);switch(s){case 4:return it(a,l,m);case 2:case 128:return function(e,t,r){if(t.height()<=r||t.width()<=r)return!1;let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(-r,-r),s.containsExclusive(e)}(a,l,m);case 1:case 64:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D;return s.setCoords({pt:e}),Nt(s,t,r)}(a,l,m);case 8:return function(e,t,r){if(t.height()<=r||t.width()<=r)return!1;let s=new n.Envelope2D,i=new n.Envelope2D;return s.setCoords({env2D:t}),s.inflateCoords(r,r),!(!s.contains(e)||(i.setCoords({env2D:t}),i.inflateCoords(-r,-r),i.containsExclusive(e)))}(a,l,m)}return!1}function rt(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),!e.isIntersecting(s)}function st(e,t,r,s=!1){let n=e.getGeometryType(),a=t.getGeometryType();if((0,i.i)(n)){let t=e.getImpl().getAccelerators();if(null!==t){let e=t.getRasterizedGeometry();(0,i.g)(null===e)}}if((0,i.i)(a)){let e=t.getImpl().getAccelerators();if(null!==e){let t=e.getRasterizedGeometry();(0,i.g)(null===t)}}return 0}function it(e,t,r,s){let i=n.Envelope2D.constructEmpty();return i.setCoords({env2D:t}),i.inflateCoords(r,r),!i.contains(e)}function nt(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t,0,!0),1===Vt(e,t,r,!0)}(e,t,r);case 1:return function(e,t,r,s){let i=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(l),!!Ft(i,l,r)&&(st(e,t),function(e,t,r,s){let i=[!1],l=kt(e,t,r,i);if(i[0])return l;let m,g=n.Envelope2D.constructEmpty();if(t.queryEnvelope(g),g.inflateCoords(1e3*r,1e3*r),e.getPointCount()>10){if(m=(0,h.c)(e,g,r,0,s),m.isEmpty())return!1}else m=e;return function(e,t,r,s){let i=new We;i.resetMatrix_(),i.setPredicates_("T*****F**"),i.setAreaLinePredicates_();let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();e.queryEnvelope(l),t.queryEnvelope(m);let h=!1;if(rt(l,m,r)&&(i.areaLineDisjointPredicates_(e,t),h=!0),h||st(e,t),h)return Le(i.m_matrix,i.m_scl);let g=new a.E,u=g.addGeometry(e),_=g.addGeometry(t);return i.setEditShapeCrackAndCluster_(g,new o.C(r,0),s),0!==g.getPointCount(u)&&(i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape(),Le(i.m_matrix,i.m_scl))}(m,t,r,s)}(e,t,r,s))}(e,t,r,i);case 64:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!!Ft(s,i,r)&&(st(e,t),2===Vt(e,t,r,!1))}(e,t,r);case 8:return ft(e,t,r,i);case 16:return function(e,t,r){return st(e,t),function(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),o=i.querySegmentIterator(),m=a.querySegmentIterator(),g=(0,l.d)(2,NaN),u=(0,l.d)(2,NaN),_=new Qe(i,a,r),p=!1;for(;_.next();){let e=_.getRedElement(),t=_.getBlueElement();o.resetToVertex(e,-1),m.resetToVertex(t,-1);let s=o.nextSegment(),i=m.nextSegment(),n=0;if(Qt(s,i)?!p&&i.isIntersecting(s,r)&&(p=!0):n=i.intersect(s,null,u,g,r),2===n)p=!0;else if(n){let e=g[0],t=u[0];if(e>0&&e<1&&t>0&&t<1)return!0;p=!0}}if(!p)return!1;let d=n.Envelope2D.constructEmpty(),c=n.Envelope2D.constructEmpty(),f=n.Envelope2D.constructEmpty(),x=n.Envelope2D.constructEmpty(),P=n.Envelope2D.constructEmpty();if(e.queryEnvelope(d),t.queryEnvelope(c),At(c,d,r)){let i,n;if(f.setCoords({env2D:d}),f.inflateCoords(1e3*r,1e3*r),x.setCoords({env2D:c}),x.inflateCoords(1e3*r,1e3*r),P.setCoords({env2D:f}),P.intersect(x),e.getPointCount()>10){if(i=(0,h.c)(e,P,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(n=(0,h.c)(t,P,r,0,s),n.isEmpty())return!1}else n=t;return Me(i,n,r,"T********",s,!1)}return Me(e,t,r,"T*****T**",s,!1)}(e,t,r,null)}(e,t,r)}return!1}function at(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return 0===er(e,t,r)}(e,t,r);case 1:case 64:return function(e,t,r){return function(e,t,r){return 1===tr(e,t,r)}(e,t.getXY(),r)}(e,t,r);case 8:return function(e,t,r){return function(e,t,r){return 2===tr(e,t,r)}(e,t.getXY(),r)}(e,t,r)}return!1}function ot(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),1===function(e,t,r){let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s),s.inflateCoords(r,r);let i=new l.P,o=e.getImpl(),m=new a.P,h=e,g=!1,u=!1,_=!1;for(let n=0;n<t.getPointCount();n++){if(t.queryXY(n,i),s.contains(i)){let e=tr(h,i,r);if(1===e)return u=!0,4;if(2===e)return 4;_=!0}else _=!0;g||=(!Te(e,t.getPointCount()-1)||null!==o.getAccelerators()&&null!=o.getAccelerators().getQuadTree()?h=e:(e.copyTo(m),m.getImpl().buildQuadTreeAccelerator(1),h=m),!0)}return u?_?4:2:1}(e,t,r)}(e,t,r);case 1:return xt(e,t,r,!1);case 64:return xt(e,t,r,!0);case 8:return function(e,t,r){st(e,t);let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s),s.inflateCoords(r,r);let i=new l.P,o=!1,m=e.getImpl(),h=new a.P,g=e,u=!1;for(let n=0;n<t.getPointCount();n++){if(t.queryXY(n,i),s.contains(i)){let e=tr(g,i,r);if(2===e)o=!0;else if(1===e)return!1}u||=(!Te(e,t.getPointCount()-1)||null!==m.getAccelerators()&&null!==m.getAccelerators().getQuadTree()?g=e:(e.copyTo(h),h.getImpl().buildQuadTreeAccelerator(1),g=h),!0)}return!!o}(e,t,r);case 16:return function(e,t,r){st(e,t);let s=new n.Envelope2D,i=new n.Envelope2D,o=new n.Envelope2D;e.queryEnvelope(s),t.queryEnvelope(o),i.setCoords({env2D:s}),i.inflateCoords(r,r);let m=!1,h=!1,g=new l.P,u=e.getImpl(),_=new a.P,p=e,d=!1;for(let s=0;s<t.getPointCount();s++){if(t.queryXY(s,g),i.contains(g)){let e=tr(p,g,r);0===e?h=!0:1===e&&(m=!0)}else h=!0;if(m&&h)return!0;d||=(!Te(e,t.getPointCount()-1)||null!==u.getAccelerators()&&null!==u.getAccelerators().getQuadTree()?p=e:(e.copyTo(_),_.getImpl().buildQuadTreeAccelerator(1),p=_),!0)}return!1}(e,t,r)}return!1}function lt(e,t,r,s,i){if(function(e,t,r){st(e,t);let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!Ft(i,s,r)&&0===tr(e,i.getLowerLeft(),0)&&!i.contains(e.getXY(0))&&!Lt(e,i,r)}(e,t,r))return 4===s;if(4===s)return!1;switch(s){case 2:return Pt(e,t,r,!1);case 128:return Pt(e,t,r,!0);case 1:return yt(e,t,r,!1,i);case 64:return yt(e,t,r,!0,i);case 3:return function(e,t,r,s){let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),!Nt(i,o,r))return!1;let l=new a.P;return l.addEnvelope(t,!1),pt(e,l,r,s)}(e,t,r,i);case 8:return function(e,t,r,s){st(e,t);let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),Ft(o,i,r)||o.height()<=r||o.width()<=r)return!1;let l=new a.P;return l.addEnvelope(t,!1),zt(e,l,r,s)}(e,t,r,i);case 32:return function(e,t,r,s){st(e,t);let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),Ft(o,i,r)||o.height()<=r||o.width()<=r)return!1;let l=new a.P;return l.addEnvelope(t,!1),Wt(e,l,r,s)}(e,t,r,i);case 16:return!1}return!1}function mt(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),!Rt(e,t.getXY(),r)}(e,t,r);case 1:case 64:return function(e,t,r){return st(e,t),function(e,t,r){return Rt(e,t,r)&&!Kt(e,t,r)}(e,t.getXY(),r)}(e,t,r);case 8:return function(e,t,r){return st(e,t),Kt(e,t.getXY(),r)}(e,t,r)}return!1}function ht(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),!Xt(e,t,r,!1)}(e,t,r);case 1:case 64:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),t.queryEnvelope(i),!Ft(s,i,r))return!1;st(e,t);let a=Xt(e,t,r,!0);if(!a)return a;let o=e.getBoundary();return o.isEmpty()?a:!It(o,t,r)}(e,t,r);case 8:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl(),n=new a.M,o=new Qe(s,i,r,!1),l=s.querySegmentIterator(),m=!1;for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();l.resetToVertex(e,-1);let s=l.nextSegment(),a=i.getXY(t);s.isIntersectingPoint(a,r)&&(m=!0,n.addPoint2D(a))}if(!m)return!1;let h=e.getBoundary();return!h.isEmpty()&&It(h,n,r)}(e,t,r);case 16:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl(),n=i.getPointCount(),o=(0,l.d)(n,!1),m=new Qe(s,i,r,!1),h=s.querySegmentIterator(),g=!1;for(;m.next();){let e=m.getRedElement(),t=m.getBlueElement();h.resetToVertex(e,-1);let s=h.nextSegment(),n=i.getXY(t);s.isIntersectingPoint(n,r)&&(g=!0,o[t]=!0)}if(!g)return!1;let u=!1;for(let e=0;e<n;e++)if(!o[e]){u=!0;break}if(!u)return!1;let _=e.getBoundary();if(_.isEmpty())return!0;let p=new a.M;for(let e=0;e<n;e++)o[e]&&p.addPoint2D(i.getXY(e));return!It(_,p,r)}(e,t,r)}return!1}function gt(e,t,r,s,o){if(function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();e.queryEnvelope(s),t.queryEnvelope(i);let a=function(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:e}),s.inflateCoords(r,r),s.containsEnvelope(t)?1073741824:s.isIntersecting(t)?e.isIntersecting(t)?e.xmin<t.xmin&&t.xmax<e.xmax?t.ymin<e.ymin&&t.ymax>e.ymax?0:1073741824:e.ymin<t.ymin&&t.ymax<e.ymax?t.xmin<e.xmin&&t.xmax>e.xmax?0:1073741824:0:0:4}(i,s,r);return 0===a?!Lt(e,i,r):4===a}(e,t,r))return 4===s;if(4===s)return!1;switch(s){case 2:return Ct(e,t,r,!1);case 128:return Ct(e,t,r,!0);case 1:case 64:case 32:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;return e.queryEnvelope(s),t.queryEnvelope(i),!(i.height()>r&&i.width()>r)&&Nt(s,i,r)}(e,t,r);case 8:return function(e,t,r,s){let o=new n.Envelope2D,m=new n.Envelope2D;if(e.queryEnvelope(o),t.queryEnvelope(m),m.height()<=r||m.width()<=r)return!1;let h=new n.Envelope2D,g=new n.Envelope2D;if(h.setCoords({env2D:m}),g.setCoords({env2D:m}),h.inflateCoords(r,r),g.inflateCoords(-r,-r),g.containsEnvelope(o)||!o.isIntersecting(h))return!1;let u=e.getImpl().querySegmentIterator();u.stripAttributes();let _=e.getImpl().getAccelerators(),p=null,d=null;null!==_&&(p=_.getQuadTree(),null!==p&&(d=p.getIterator(m,r))),d||u.nextPath()||(0,i.d)("relational_operations");let c=!1,f=null,x=new l.P,P=new l.P,y=e.hasNonLinearSegments(),E=!1;for(;;){if(null!==d){let e=d.next();if(-1===e)break;u.resetToVertex(p.getElement(e),-1),f=u.nextSegment()}else{for(;!u.hasNextSegment()&&u.nextPath(););if(!u.hasNextSegment())break;f=u.nextSegment()}if(y&&f.getGeometryType()!==i.G.enumLine){let e=new n.Envelope2D;if(f.queryEnvelope(e),g.containsEnvelope(e))return!1;if(h.isIntersecting(e)){E=!0;break}}else{x.assign(f.getStartXY()),P.assign(f.getEndXY());let e=g.clipLine(x,P);if(0!==e)return!1;c||(e=h.clipLine(x,P),0!==e&&(c=!0))}}if(!E)return c;let S=new a.P;return S.addEnvelope(m,!1),ft(S,e,r,s)}(e,t,r,o);case 16:return function(e,t,r){let s=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(s),t.queryEnvelope(o),o.height()<=r||o.width()<=r)return!1;let m=new n.Envelope2D;if(m.setCoords({env2D:o}),m.inflateCoords(r,r),m.containsEnvelope(s))return!1;let h=new n.Envelope2D;if(h.setCoords({env2D:o}),h.inflateCoords(-r,-r),!h.isIntersecting(s))return!1;let g=e.getImpl().querySegmentIterator();g.stripAttributes();let u=e.getImpl().getAccelerators(),_=null,p=null;if(null!==u&&(_=u.getQuadTree(),null!==_&&(p=_.getIterator(o,r))),!p){let e=g.nextPath();(0,i.g)(e)}let d=!1,c=null,f=new l.P,x=new l.P,P=null,y=null,E=null,S=null;for(e.hasNonLinearSegments()&&(P=new a.L,y=new a.L,E=new a.L,S=new a.L,h.querySide(0,P),h.querySide(1,y),h.querySide(2,E),h.querySide(3,S));;){if(null!==p){let e=p.next();if(-1===e)break;g.resetToVertex(_.getElement(e),-1),c=g.nextSegment()}else{for(;!g.hasNextSegment()&&g.nextPath(););if(!g.hasNextSegment())break;c=g.nextSegment()}if(c.getGeometryType()===i.G.enumLine){if(f.assign(c.getStartXY()),x.assign(c.getEndXY()),0!==h.clipLine(f,x)){d=!0;break}}else{if(P.isIntersecting(c,r)){d=!0;break}if(y.isIntersecting(c,r)){d=!0;break}if(E.isIntersecting(c,r)){d=!0;break}if(S.isIntersecting(c,r)){d=!0;break}}}return d&&!0}(e,t,r)}return!1}function ut(e,t,r,s,i){switch(s){case 4:return Gt(e,t,r);case 2:case 128:return function(e,t,r){return vt(e,t,r)}(e,t,r);case 1:case 64:return function(e,t,r){return!Gt(e,t,r)}(e,t,r);case 3:return vt(e,t,r)}return!1}function _t(e,t,r,s,i){switch(s){case 4:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),t.queryEnvelope(i),Ft(i,s,r))return!1;let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:i}),a.inflateCoords(r,r);let o=new l.P;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,o),a.contains(o))return!1;return!0}(e,t,r);case 2:return wt(e,t,r,!1);case 128:return wt(e,t,r,!0);case 1:case 64:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;return e.queryEnvelope(s),t.queryEnvelope(i),!(i.height()>r||i.width()>r)&&Nt(s,i,r)}(e,t,r);case 8:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D,a=new n.Envelope2D;if(t.queryEnvelope(s),s.height()<=r||s.width()<=r)return!1;i.setCoords({env2D:s}),a.setCoords({env2D:s}),i.inflateCoords(r,r),a.inflateCoords(-r,-r);let o=new l.P,m=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,o),i.contains(o)){if(a.containsExclusive(o))return!1;m=!0}return m}(e,t,r);case 16:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;if(e.queryEnvelope(s),t.queryEnvelope(i),Ft(i,s,r)||i.height()<=r||i.width()<=r)return!1;let a=new n.Envelope2D,o=new n.Envelope2D;a.setCoords({env2D:i}),a.inflateCoords(-r,-r),o.setCoords({env2D:i}),o.inflateCoords(r,r);let m=new l.P,h=!1,g=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,m),!h&&a.containsExclusive(m)&&(h=!0),!g&&!o.contains(m)&&(g=!0),h&&g)return!0;return!1}(e,t,r)}return!1}function pt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();if(e.queryEnvelope(i),t.queryEnvelope(a),!Nt(i,a,r))return!1;if(st(e,t),Mt(e,t,r))return!0;let o=e.calculateLength2D(),l=t.calculateLength2D(),m=Math.max(e.getPointCount(),t.getPointCount());return!(Math.abs(o-l)>4*m*r)&&(e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"**F**FFF*",s,!1):qt(e,t,r,!0))}function dt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),jt(e,t,r,s))}function ct(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),2===Vt(e,t,r,!1))}function ft(e,t,r,s){return st(e,t),function(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),o=i.querySegmentIterator(),m=a.querySegmentIterator(),g=(0,l.d)(2,NaN),u=(0,l.d)(2,NaN),_=new Qe(i,a,r),p=!1;for(;_.next();){let e=_.getRedElement(),t=_.getBlueElement();o.resetToVertex(e,-1),m.resetToVertex(t,-1);let s=o.nextSegment(),i=m.nextSegment(),n=0;if(Qt(s,i)?!p&&i.isIntersecting(s,r)&&(p=!0):n=i.intersect(s,null,u,g,r),2===n)p=!0;else if(n){let e=g[0],t=u[0];if(e>0&&e<1&&t>0&&t<1)return!1;p=!0}}if(!p)return!1;let d,c,f=n.Envelope2D.constructEmpty(),x=n.Envelope2D.constructEmpty(),P=n.Envelope2D.constructEmpty();if(e.queryEnvelope(f),t.queryEnvelope(x),f.inflateCoords(1e3*r,1e3*r),x.inflateCoords(1e3*r,1e3*r),P.setCoords({env2D:f}),P.intersect(x),e.getPointCount()>10){if(d=(0,h.c)(e,P,r,0,s),d.isEmpty())return!1}else d=e;if(t.getPointCount()>10){if(c=(0,h.c)(t,P,r,0,s),c.isEmpty())return!1}else c=t;return Me(d,c,r,"F********",s,!1)}(e,t,r,s)}function xt(e,t,r,s,i){let o=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(m),!Ft(o,m,r))return!1;st(e,t);let h=!1,g=new l.P,u=e.getImpl(),_=new a.P,p=e,d=!1;for(let i=0;i<t.getPointCount();i++){if(t.queryXY(i,g),!o.contains(g))return!1;let n=tr(p,g,r);if(1===n)h=!0;else if(0===n)return!1;if(s&&2===n)return!1;d||=(!Te(e,t.getPointCount()-1)||null!==u.getAccelerators()&&null!==u.getAccelerators().getQuadTree()?p=e:(e.copyTo(_),_.getImpl().buildQuadTreeAccelerator(1),p=_),!0)}return h}function Pt(e,t,r,s,i){let a=n.Envelope2D.constructEmpty(),o=n.Envelope2D.constructEmpty();return e.queryEnvelope(a),t.queryEnvelope(o),s?Ht(o,a,r):Ft(o,a,r)}function yt(e,t,r,s,i){let o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),!Ft(o,l,r))return!1;st(e,t);let m=new a.P;return m.addEnvelope(t,!1),s?2===Vt(e,m,r,!1):jt(e,m,r,i)}function Et(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"******FF*",s,!1):Bt(t,e,r,!1))}function St(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),Me(e,t,r,"T**FF*FF*",s,!1))}function Ct(e,t,r,s,o){let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(l),t.queryEnvelope(m),m.height()<=r||m.width()<=r)return!1;if(s)return Ht(m,l,r);if(!Ft(m,l,r))return!1;let h=n.Envelope2D.constructEmpty();h.setCoords({env2D:m}),h.inflateCoords(-r,-r);let g=n.Envelope2D.constructEmpty();if(g.setCoords({env2D:m}),g.inflateCoords(r,r),h.containsEnvelope(l))return!0;let u=e.getImpl().querySegmentIterator();u.stripAttributes(),u.nextPath()||(0,i.d)("relational_operations");let _,p,d,c,f,x,P=!1,y=e.hasNonLinearSegments();for(y&&(d=new a.L,c=new a.L,f=new a.L,x=new a.L,h.querySide(0,d),h.querySide(1,c),h.querySide(2,f),h.querySide(3,x));;){for(;!u.hasNextSegment()&&u.nextPath(););if(!u.hasNextSegment())break;let e=u.nextSegment();if(y&&e.getGeometryType()!==i.G.enumLine){if(e.isIntersecting(d,r)){P=!0;break}if(e.isIntersecting(c,r)){P=!0;break}if(e.isIntersecting(f,r)){P=!0;break}if(e.isIntersecting(x,r)){P=!0;break}}else if(_=e.getStartXY(),p=e.getEndXY(),0!==h.clipLine(_,p)){P=!0;break}}return P}function It(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&Ut(t,e,r,!0,!1,!1)}function vt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),Nt(i,a,r)}function Gt(e,t,r,s){return Zt(e,t.getXY(),r)}function wt(e,t,r,s,i){let a=n.Envelope2D.constructEmpty(),o=n.Envelope2D.constructEmpty();if(e.queryEnvelope(a),t.queryEnvelope(o),o.height()<=r||o.width()<=r)return!1;if(s)return Ht(o,a,r);if(!Ft(o,a,r))return!1;let m=!1,h=n.Envelope2D.constructEmpty(),g=n.Envelope2D.constructEmpty();h.setCoords({env2D:o}),g.setCoords({env2D:o}),h.inflateCoords(-r,-r),g.inflateCoords(r,r);let u=new l.P;for(let t=0;t<e.getPointCount();t++){if(e.queryXY(t,u),!g.contains(u))return!1;h.containsExclusive(u)&&(m=!0)}return m}function bt(e,t,r,s){return l.P.sqrDistance(e,t)<=r*r}function Tt(e,t,r,s){return bt(e,t,r)}function Nt(e,t,r,s){return Ft(e,t,r)&&Ft(t,e,r)}function Dt(e,t,r,s,i){if(e.height()<=r||e.width()<=r)return!1;if(s)return Ht(e,t,r);if(!Ft(e,t,r))return!1;let a=n.Envelope2D.constructEmpty();return a.setCoords({env2D:e}),a.inflateCoords(-r,-r),a.intersect(t),!a.isEmpty()}function Vt(e,t,r,s,o){let m=new l.P,h=new l.P,g=n.Envelope2D.constructEmpty(),u=n.Envelope2D.constructEmpty(),_=e.getImpl(),p=t.getImpl(),d=p.getGeometryType(),c=new Qe(_,p,r,!0);if(!c.next())return 1;if(Ot(e,t,r))return s?4:0;let f=new a.P,x=e,P=new a.P,y=null;d===i.G.enumPolygon&&(y=t);let E=d===i.G.enumPolygon?(0,l.d)(_.getPathCount(),!1):[],S=(0,l.d)(p.getPathCount(),!1),C=!1,I=!1,v=!1,G=!1,w=!1,b=!1;do{if(v&&w||G&&b||v&&G)break;let n=c.getRedElement(),a=c.getBlueElement();if(!S[a]&&(h.assign(t.getXY(t.getPathStart(a))),g.setCoords({env2D:c.getRedEnvelope()}),g.inflateCoords(r,r),g.contains(h))){if(0!==tr(x,h,0)){if(G=!0,s)return 4}else b=!0;S[a]=!0}if(d===i.G.enumPolygon&&!E[n]&&(m.assign(e.getXY(e.getPathStart(n))),u.setCoords({env2D:c.getBlueEnvelope()}),u.inflateCoords(r,r),u.contains(m))){if(0!==tr(y,m,0)){if(v=!0,s)return 4}else w=!0;E[n]=!0}if(C||=(!Te(e,t.getPathCount()-1)||null!==_.getAccelerators()&&null!==_.getAccelerators().getQuadTree()?x=e:(e.copyTo(f),f.getImpl().buildQuadTreeAccelerator(1),x=f),!0),d===i.G.enumPolygon&&!I){let r=t;!Te(r,e.getPathCount()-1)||null!==p.getAccelerators()&&null!==p.getAccelerators().getQuadTree()?y=t:(r.copyTo(P),P.getImpl().buildQuadTreeAccelerator(1),y=P),I=!0}}while(c.next());if(!v&&!G)return 1;if(!w||!b){if(d===i.G.enumPolygon)for(let e=0,t=_.getPathCount();e<t;e++)if(!E[e]){w=!0;break}for(let e=0,t=p.getPathCount();e<t;e++)if(!S[e]){b=!0;break}}return v&&w||G&&b||v&&G?4:G?2:3}function kt(e,t,r,s,o){s[0]=!1;let l=e.getImpl(),m=t.getImpl(),h=l.querySegmentIterator(),g=m.querySegmentIterator(),u=[0,0],_=[0,0],p=new Qe(l,m,r),d=!1;for(;p.next();){let e=p.getRedElement(),t=p.getBlueElement();h.resetToVertex(e,-1),g.resetToVertex(t,-1);let i=h.nextSegment(),n=g.nextSegment(),a=0;if(Qt(i,n)?!d&&n.isIntersecting(i,r)&&(d=!0):a=n.intersect(i,null,_,u,r),0!==a&&(d=!0,1===a)){let e=u[0],t=_[0];if(e>0&&e<1&&t>0&&t<1)return s[0]=!0,!1}}if(!d){s[0]=!0;let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o),o.inflateCoords(r,r);let h=new a.P,g=e,u=!1;for(let r=0,s=t.getPathCount();r<s;r++)if(t.getPathSize(r)>0){let s=n.Envelope2D.constructEmpty();if(t.queryPathEnvelope(r,s),!o.isIntersecting(s))return!1;{let e=be(g,t.getXY(t.getPathStart(r)),0);if((0,i.g)(-1!==e),0===e)return!1}u||=(!Te(e,t.getPathCount()-1)||null!==l.getAccelerators()&&null!==l.getAccelerators().getQuadTree()?g=e:(e.copyTo(h),h.getImpl().buildQuadTreeAccelerator(1),g=h),!0)}if(1===e.getPathCount()||t.getGeometryType()===i.G.enumPolyline)return!0;let _=t,p=n.Envelope2D.constructEmpty();_.queryEnvelope(p),p.inflateCoords(r,r);let d=new a.P,c=_,f=!1;for(let t=0,r=e.getPathCount();t<r;t++)if(e.getPathSize(t)>0){let r=n.Envelope2D.constructEmpty();if(e.queryPathEnvelope(t,r),p.isIntersecting(r)){let r=be(c,e.getXY(e.getPathStart(t)),0);if((0,i.g)(-1!==r),1===r)return!1}f||=(!Te(_,e.getPathCount()-1)||null!==m.getAccelerators()&&null!==m.getAccelerators().getQuadTree()?c=_:(_.copyTo(d),d.getImpl().buildQuadTreeAccelerator(1),c=d),!0)}return!0}return!1}function Ft(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:e}),s.inflateCoords(r,r),s.containsEnvelope(t)}function Ht(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),e.containsExclusiveEnvelope(s)}function At(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),!(s.contains(e.getLowerLeft())&&s.contains(e.getLowerRight())&&s.contains(e.getUpperLeft())&&s.contains(e.getUpperRight()))}function Mt(e,t,r,s){if(e.getPathCount()!==t.getPathCount()||e.getPointCount()!==t.getPointCount())return!1;if(e.hasNonLinearSegments()||t.hasNonLinearSegments())return e.equals(t);let i=new l.P,n=new l.P,a=!0,o=r*r;for(let r=0;r<e.getPathCount();r++){if(e.getPathEnd(r)!==t.getPathEnd(r)){a=!1;break}for(let s=e.getPathStart(r);s<t.getPathEnd(r);s++)if(e.queryXY(s,i),t.queryXY(s,n),l.P.sqrDistance(i,n)>o){a=!1;break}if(!a)break}return!!a}function Ut(e,t,r,s,i,n,a){let o=e.getImpl(),m=t.getImpl(),h=o.getPointCount(),g=m.getPointCount(),u=(0,l.d)(h,!1),_=i||n?(0,l.d)(g,!1):[],p=r*r,d=new Qe(o,m,r);for(;d.next();){let e=d.getRedElement(),t=d.getBlueElement(),r=o.getXY(e),s=m.getXY(t);l.P.sqrDistance(r,s)<=p&&(u[e]=!0,(i||n)&&(_[t]=!0))}let c=!1,f=!1;for(let e=0;e<h;e++){let t=u[e];if(c||=!t,f||=t,(i||s)&&c)return!1}if(s)return!0;let x=!1,P=!1;for(let e=0;e<g;e++){let t=_[e];if(x||=!t,P||=t,i&&x)return!1}return!!i||c&&f&&x&&P}function qt(e,t,r,s){return Bt(e,t,r,s)&&Bt(t,e,r,s)}function Bt(e,t,r,s){if((0,i.p)(e),(0,i.p)(t),t.isEmpty())return!1;let a,m=!0,h=(0,l.d)(2,NaN),g=(0,l.d)(2,NaN),u=[],_=new $t,p=n.Envelope2D.constructEmpty(),d=n.Envelope2D.constructEmpty(),c=n.Envelope2D.constructEmpty();e.queryEnvelope(p),t.queryEnvelope(d),p.inflateCoords(r,r),d.inflateCoords(r,r),c.setCoords({env2D:p}),c.intersect(d);let f=e.getImpl().querySegmentIterator(),x=t.getImpl().querySegmentIterator(),P=t.getImpl().getAccelerators(),y=null,E=null,S=null,C=null;if(null!==P&&(y=P.getQuadTree(),E=P.getQuadTreeForPaths(),null!==E&&(C=E.getIteratorForQT())),null===y){let r=e.getPointCount(),s=t.getPointCount();r>10&&s>10&&(y=(0,o.u)(t.getImpl(),c))}for(null!==y&&(S=y.getIteratorForQT());f.nextPath();)for(;f.hasNextSegment();){let e=f.nextSegment();if(e.queryEnvelope(p),!p.isIntersecting(c))return m=!1,!1;if(null!==C&&(C.resetIterator(p,r),-1===C.next()))continue;let t=0,n=null;if(null!=S)S.resetIterator(e,r);else if(x.resetToFirstPath(),!x.nextPath())return m=!1,!1;do{if(t=0,null!==S){let s=S.next();if(-1===s)return m=!1,!1;x.resetToVertex(y.getElement(s),-1),n=x.nextSegment(),t=e.intersect(n,null,h,g,r)}else{for(;!x.hasNextSegment();)if(!x.nextPath())return m=!1,!1;n=x.nextSegment(),n.queryEnvelope(d),d.inflateCoords(r,r),p.isIntersecting(d)&&(t=e.intersect(n,null,h,g,r))}}while(2!==t||0!==h[0]||s&&!(g[0]<=g[1]));let l=NaN,P=!1;do{let s=!1;if(1===h[1]){if(!f.hasNextSegment()){P=!0;break}e=f.nextSegment(),s=!0}if(1===g[1]&&g[0]<=g[1]){if(-1===l||(l=1,!x.hasNextSegment()))break;n=x.nextSegment(),s=!0}if(0===g[1]&&g[0]>g[1]){if(1===l)break;if(Number.isNaN(l)){if(!x.hasPreviousSegment())break;x.previousSegment(),l=-1}if(!x.hasPreviousSegment())break;n=x.previousSegment(),s=!0}if(!s)break;t=e.intersect(n,null,h,g,r)}while(2===t&&(!s||g[0]<=g[1]));if(P)continue;let E=e.calculateLength2D();e.queryEnvelope(p),u.length=0,_.m_overlapEvents.length=0;let I=!1,v=!1,G=0,w=(0,o.d)(null,p,!0);for(null===S?(x.resetToFirstPath(),x.nextPath()||(0,i.d)("relational_operations")):S.resetIterator(e,r);;){if(t=0,null!==S){let s=S.next();if(-1===s)break;x.resetToVertex(y.getElement(s),-1),n=x.nextSegment(),t=e.intersect(n,null,h,g,r)}else{for(;!x.hasNextSegment()&&x.nextPath(););if(!x.hasNextSegment())break;n=x.nextSegment(),n.queryEnvelope(d),d.inflateCoords(r,r),p.isIntersecting(d)&&(t=e.intersect(n,null,h,g,r))}if(2===t&&(!s||g[0]<=g[1])){let e=f.getStartPointIndex(),t=f.getPathIndex(),s=x.getStartPointIndex(),i=x.getPathIndex();if(a=Jt(e,t,h[0],h[1],s,i,g[0],g[1]),_.m_overlapEvents.push(a),u.push(u.length),!(I||a.m_scalarA0<G&&a.m_scalarA1<G))if(0===G&&E*(a.m_scalarA0-G)>r)I=!0;else if(0!==G&&E*(a.m_scalarA0-G)>w)I=!0;else if(G=a.m_scalarA1,E*(1-G)<=r||1===G){v=!0;break}}}if(!v){if(!I)return m=!1,!1;u.length>1&&u.sort((e,t)=>_.compareOverlapEvents(e,t)),G=0;for(let e=0;e<_.m_overlapEvents.length;e++)if(a=_.m_overlapEvents[u[e]],!(a.m_scalarA0<G&&a.m_scalarA1<G)){if(0===G&&E*(a.m_scalarA0-G)>r||0!==G&&E*(a.m_scalarA0-G)>w)return m=!1,!1;if(G=a.m_scalarA1,E*(1-G)<=r||1===G)break}if(E*(1-G)>r)return m=!1,!1;u.length=0,_.m_overlapEvents.length=0}}return m}function Ot(e,t,r){let s=e.getImpl(),i=t.getImpl(),n=s.querySegmentIterator(),a=i.querySegmentIterator(),o=new Qe(s,i,r);for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();n.resetToVertex(e,-1),a.resetToVertex(t,-1);let s=n.nextSegment();if(a.nextSegment().isIntersecting(s,r))return!0}return!1}function Yt(e,t,r,s){let i=e.getImpl(),n=t.getImpl(),a=i.querySegmentIterator(),o=n.querySegmentIterator(),m=(0,l.d)(2,NaN),h=new Qe(i,n,r),g=!1,u=-1;for(;h.next();){let e=h.getRedElement(),t=h.getBlueElement();a.resetToVertex(e,-1),o.resetToVertex(t,-1);let i=a.nextSegment(),n=o.nextSegment(),_=0;if(Qt(i,n)){if(n.isIntersecting(i,r))return-2}else _=i.intersect(n,null,m,null,r);if(_)if(2===_){let e=i.calculateLength2D(),t=m[0];if(e*(m[1]-t)>r)return u=1,u;g=!0}else if(u=0,s){let e=m[0],t=new l.P;i.queryCoord2D(e,t),s.push(t.x),s.push(t.y)}}return g?-2:u}function Xt(e,t,r,s){let i=e.getImpl(),n=t,a=n.getPointCount(),o=s?(0,l.d)(a,!1):[],m=new Qe(i,n,r,!1),h=i.querySegmentIterator();for(;m.next();){let e=m.getRedElement(),t=m.getBlueElement();h.resetToVertex(e,-1);let i=h.nextSegment(),a=n.getXY(t);if(i.isIntersectingPoint(a,r)){if(!s)return!0;o[t]=!0}}if(!s)return!1;for(let e=0;e<a;e++)if(!o[e])return!1;return!0}function Rt(e,t,r){let s=new l.P,i=r*r,a=e.querySegmentIterator(),o=e.getImpl().getAccelerators();if(null!==o){let e=o.getQuadTree();if(null!==e){let o=n.Envelope2D.constructEmpty();o.setCoords({pt:t});let m=e.getIterator(o,r);for(let r=m.next();-1!==r;r=m.next())if(a.resetToVertex(e.getElement(r),-1),a.hasNextSegment()){let e=a.nextSegment(),r=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(r,s),l.P.sqrDistance(t,s)<=i)return!0}return!1}}let m=n.Envelope2D.constructEmpty();for(;a.nextPath();)for(;a.hasNextSegment();){let e=a.nextSegment();if(e.queryEnvelope(m),m.inflateCoords(r,r),!m.contains(t))continue;let n=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(n,s),l.P.sqrDistance(t,s)<=i)return!0}return!1}function Lt(e,t,r,s){let o=e.querySegmentIterator(),m=e.getImpl().getAccelerators(),h=e.hasNonLinearSegments(),g=null,u=null,_=null,p=null;if(null!==m){let e=m.getQuadTree();if(null!==e){let s=e.getIterator(t,r);h&&(g=new a.L,u=new a.L,_=new a.L,p=new a.L,t.querySide(0,g),t.querySide(1,u),t.querySide(2,_),t.querySide(3,p));let l=n.Envelope2D.constructEmpty();l.setCoords({env2D:t}),l.inflateCoords(r,r);for(let n=s.next();-1!==n;n=s.next())if(o.resetToVertex(e.getElement(n),-1),o.hasNextSegment()){let e=o.nextSegment();if(e.getGeometryType()===i.G.enumLine){let t=e.getStartXY(),r=e.getEndXY();if(l.clipLine(t,r))return!0;continue}if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(g,r)||e.isIntersecting(u,r)||e.isIntersecting(_,r)||e.isIntersecting(p,r))return!0}return!1}}if(h){g=new a.L,u=new a.L,_=new a.L,p=new a.L,t.querySide(0,g),t.querySide(1,u),t.querySide(2,_),t.querySide(3,p);let s=e.querySegmentIterator();for(;s.nextPath();)for(;s.hasNextSegment();){let e=s.nextSegment();if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(g,r)||e.isIntersecting(u,r)||e.isIntersecting(_,r)||e.isIntersecting(p,r))return!0}}else{let s=n.Envelope2D.constructEmpty();s.setCoords({env2D:t}),s.inflateCoords(r,r);let i=e.getImpl(),a=i.getAttributeStreamRef(0),o=new l.P;for(let e=0,t=i.getPathCount();e<t;e++){let t=!0,r=new l.P,n=new l.P,m=new l.P,h=i.getPathStart(e),g=new l.P;for(let l=h,u=i.getPathEnd(e);l<u;l++)if(t)a.queryPoint2D(2*l,r),g.assign(r),t=!1;else{if(a.queryPoint2D(2*l,o),n.setCoordsPoint2D(r),m.setCoordsPoint2D(o),s.clipLine(n,m))return!0;r.assign(o)}if(i.isClosedPath(e)&&!t&&(n.setCoordsPoint2D(r),m.setCoordsPoint2D(g),s.clipLine(n,m)))return!0}}return!1}function zt(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),m=[0],g=(0,o.q)(i.getIsSimple(0,m))&&(0,o.q)(a.getIsSimple(0,m)),u=i.querySegmentIterator(),_=a.querySegmentIterator(),p=(0,l.d)(2,0),d=(0,l.d)(2,0),c=new Qe(i,a,r),f=!1;for(;c.next();){let e=c.getRedElement(),t=c.getBlueElement();u.resetToVertex(e,-1),_.resetToVertex(t,-1);let s=u.nextSegment(),i=_.nextSegment(),n=0;if(Qt(s,i)){if(i.isIntersecting(s,r)){f=!0;break}}else n=i.intersect(s,null,d,p,r);if(2===n){let e=p[0],t=p[1],i=s.calculateLength2D();if(g&&(t-e)*i>r)return!1;f=!0}else if(n){let e=p[0],t=d[0];if(e>0&&e<1&&t>0&&t<1)return!1;f=!0}}if(!f)return!1;let x,P,y=n.Envelope2D.constructEmpty(),E=n.Envelope2D.constructEmpty(),S=n.Envelope2D.constructEmpty();if(e.queryEnvelope(y),t.queryEnvelope(E),y.inflateCoords(1e3*r,1e3*r),E.inflateCoords(1e3*r,1e3*r),S.setCoords({env2D:y}),S.intersect(E),e.getPointCount()>10){if(x=(0,h.c)(e,S,r,0,s),x.isEmpty())return!1}else x=e;if(t.getPointCount()>10){if(P=(0,h.c)(t,S,r,0,s),P.isEmpty())return!1}else P=t;return Me(x,P,r,"F********",s,!1)}function Wt(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),m=[0],g=(0,o.q)(i.getIsSimple(0,m))&&(0,o.q)(a.getIsSimple(0,m)),u=n.Envelope2D.constructEmpty(),_=n.Envelope2D.constructEmpty(),p=n.Envelope2D.constructEmpty();e.queryEnvelope(u),t.queryEnvelope(_);let d=!1,c=At(u,_,r),f=At(_,u,r),x=i.querySegmentIterator(),P=a.querySegmentIterator(),y=(0,l.d)(2,NaN),E=(0,l.d)(2,NaN),S=new Qe(i,a,r);for(;S.next();){let e=S.getRedElement(),t=S.getBlueElement();x.resetToVertex(e,-1),P.resetToVertex(t,-1);let s=x.nextSegment(),i=P.nextSegment(),n=0;if(Qt(s,i)){if(i.isIntersecting(s,r))break}else n=i.intersect(s,null,E,y,r);if(2===n){let e=y[0],t=y[1],i=s.calculateLength2D();if(g&&(t-e)*i>r&&(d=!0,c&&f))return!0}else if(n){let e=y[0],t=E[0];if(e>0&&e<1&&t>0&&t<1)return!0}}let C=n.Envelope2D.constructEmpty(),I=n.Envelope2D.constructEmpty();C.setCoords({env2D:u}),C.inflateCoords(1e3*r,1e3*r),I.setCoords({env2D:_}),I.inflateCoords(1e3*r,1e3*r),p.setCoords({env2D:C}),p.intersect(I);let v,G,w="";if(w+=d?"**":"T*",c){if(t.getPointCount()>10){if(G=(0,h.c)(t,p,r,0,s),G.isEmpty())return!1}else G=t;w+="****"}else G=t,w+="T***";if(f){if(e.getPointCount()>10){if(v=(0,h.c)(e,p,r,0,s),v.isEmpty())return!1}else v=e;w+="***"}else v=e,w+="T**";return Me(v,G,r,w,s,!1)}function jt(e,t,r,s){let i=[!1],l=kt(e,t,r,i);if(i[0])return l;let m,g=n.Envelope2D.constructEmpty();if(t.queryEnvelope(g),g.inflateCoords(1e3*r,1e3*r),e.getPointCount()>10){if(m=(0,h.c)(e,g,r,0,s),m.isEmpty())return!1}else m=e;return function(e,t,r,s){let i=new We;i.resetMatrix_(),i.setPredicates_("T*****F**"),i.setAreaAreaPredicates_();let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();e.queryEnvelope(l),t.queryEnvelope(m);let h=!1;if(rt(l,m,r)&&(i.areaAreaDisjointPredicates_(e,t),h=!0),h||st(e,t),h)return Le(i.m_matrix,i.m_scl);let g=new a.E,u=g.addGeometry(e),_=g.addGeometry(t),p=null,d=0;if(e.hasNonLinearSegments()||t.hasNonLinearSegments()){p=new dr;let e=ur(r,g.getEnvelope2D(s));d=pr(e,0),lr(g,e,r,0,p,null,s)}fr(g,new o.C(r,0).add(d),s,!1,!1);let c=g.getGeometry(_).getBoundary();if(g.filterClosePoints(0,!0,!0,!1,-1),He(g,u,-1,!1,-1,s),0===g.getPointCount(u))return!1;He(g,_,-1,!1,-1,s),i.setEditShape_(g,s);let f=0===g.getPointCount(_);if(!f){i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape();let e=Le(i.m_matrix,i.m_scl);if(!e)return e}let x=g.getGeometry(u);return g=new a.E,u=g.addGeometry(x),_=g.addGeometry(c),i.setEditShape_(g,s),i.m_predicateCount=0,i.resetMatrix_(),i.setPredicates_(f?"T*****F**":"******F**"),i.setAreaLinePredicates_(),i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape(),Le(i.m_matrix,i.m_scl)}(m,t,r,s)}function Zt(e,t,r,s){let i=new l.P,n=r*r;for(let r=0;r<e.getPointCount();r++)if(e.queryXY(r,i),l.P.sqrDistance(i,t)<=n)return!1;return!0}function Kt(e,t,r){let s=e.getBoundary();return!s.isEmpty()&&!Zt(s,t,r)}function Qt(e,t){return e.getGeometryType()!==i.G.enumLine||t.getGeometryType()!==i.G.enumLine}function Jt(e,t,r,s,i,n,a,o){return{m_ivertexA:e,m_ipathA:t,m_scalarA0:r,m_scalarA1:s,m_ivertexB:i,m_ipathB:n,m_scalarB0:a,m_scalarB1:o}}class $t{m_overlapEvents=[];compareOverlapEvents(e,t){let r=this.m_overlapEvents[e],s=this.m_overlapEvents[t];return r.m_ipathA<s.m_ipathA||r.m_ipathA===s.m_ipathA&&(r.m_ivertexA<s.m_ivertexA||r.m_ivertexA===s.m_ivertexA&&(r.m_scalarA0<s.m_scalarA0||r.m_scalarA0===s.m_scalarA0&&(r.m_scalarA1<s.m_scalarA1||r.m_scalarA1===s.m_scalarA1&&r.m_ivertexB<s.m_ivertexB)))?-1:1}}function er(e,t,r){let s=function(e,t,r){return t.isEmpty()?0:be(e,t.getXY(),r)}(e,t,r);return s?1===s?1:2:0}function tr(e,t,r){let s=be(e,t,r);return s?1===s?1:2:0}function rr(e,t,r,s,a){if(e.getGeometryType()===i.G.enumPolygon)!function(e,t,r,s,i){for(let n=0;n<r;n++)i[n]=tr(e,t[n],s)}(e,t,r,s,a);else if(e.getGeometryType()===i.G.enumEnvelope){let i=n.Envelope2D.constructEmpty();e.queryEnvelope(i),function(e,t,r,s,i){if(e.isEmpty()){for(let e=0;e<r;e++)i[e]=0;return}let n=e.clone();n.inflateCoords(.5*-s,.5*-s);let a=e.clone();a.inflateCoords(.5*s,.5*s);for(let e=0;e<r;e++)n.contains(t[e])?i[e]=1:a.contains(t[e])?i[e]=2:i[e]=0}(i,t,r,s,a)}else(0,i.q)("")}function sr(e,t,r,s,a){let l=e.getGeometryType();l===i.G.enumPolyline?function(e,t,r,s,a){let l=e.getImpl(),m=l.getAccelerators(),h=null;m&&(h=m.getRasterizedGeometry());let g=r;for(let e=0;e<r;e++)a[e]=1,h&&(0,i.g)(0);if(g){if(m){let e=null;null!==m&&null!==m.getQuadTree()&&(e=m.getQuadTree());let i=l.getPointCount();if(null===e&&i>20&&i*r>4*i+Math.log(i)*r&&(e=(0,o.u)(l)),e){let i=null,o=l.querySegmentIterator(),m=new n.Envelope2D;for(let n=0;n<r&&g;n++)if(1===a[n]){m.setCoords(t[n]),null===i?i=e.getIterator(m,s):i.resetIterator(m,s);let r=-1;for(let l=i.next();-1!==l;l=i.next()){if(o.resetToVertex(e.getElement(l),r),r=o.getPathIndex(),o.nextSegment().isIntersectingPoint(t[n],s)){a[n]=2,g--;break}a[n]=0}}return}}let e=l.querySegmentIterator();for(;e.nextPath()&&g;)for(;e.hasNextSegment()&&g;){let i=e.nextSegment();for(let e=0;e<r&&g;e++)1===a[e]&&i.isIntersectingPoint(t[e],s)&&(a[e]=2,g--)}}for(let e=0;e<r;e++)1===a[e]&&(a[e]=0)}(e,t,r,s,a):(0,i.h)(l)?(0,i.g)(0):(0,i.q)("")}function ir(e){if(e.isEmpty())return 0;switch(e.getGeometryType()){case i.G.enumMultiPoint:return e.getImpl().getPointCount();case i.G.enumPolyline:return e.getImpl().getPathCount();case i.G.enumPolygon:return e.getImpl().getOGCPolygonCount();case i.G.enumGeometryCollection:return e.getGeometryCount()}return 1}function nr(){return Number.isNaN(this.radius.value())}function ar(e,t,r,s){return{pt:e.clone(),t,err:r,checkCount:s}}class or{m_left;m_eps;m_tolerance;m_circleCheckCounter;m_bReversedLeft;m_leftArc;m_tracker;m_trackerCounter;constructor(e,t,r,s,i){this.m_left=e,this.m_tracker=i,this.m_eps=r,this.m_trackerCounter=0,this.m_tolerance=s,this.m_circleCheckCounter=0,this.m_bReversedLeft=!1,this.m_leftArc={ptStart:new l.P,ptEnd:new l.P,center:new a.Z,radius:new l.Z,fcenter:new a.Y,fradius2:new l.M,maxError:NaN,isLine:nr}}closeToCircularArc(e,t,r,s,i,n){if(this.m_circleCheckCounter++,n.maxError=0,!or.checkSweepAngle(e,t))return!1;if(n.ptStart.setCoordsPoint2D(r),n.ptEnd.setCoordsPoint2D(i),e.isCircular()){let t=e;return n.fradius2=l.M.constructDouble(t.getSemiMajorAxis()).mulDouble(t.getSemiMajorAxis()),n.radius.set(t.getSemiMajorAxis()),n.fcenter.assignPoint2D(t.getCenter()),n.center.set(t.getCenter()),!0}let o=n.ptEnd.sub(n.ptStart).clone();if(o.leftPerpendicularThis(),o.normalize(),Math.abs(o.dotProduct(s.sub(n.ptStart)))<=this.m_eps)return!!this.confirmIsLine(n,o)&&(n.radius.set(NaN),n.center.setCoords(0,0),!0);{let r=n.ptEnd.sub(n.ptStart),i=s.sub(n.ptStart),a=r.crossProduct(i);if(0===a)return!1;let o=.5*r.sqrLength(),l=.5*i.sqrLength(),m=o*i.y-l*r.y;m/=a;let h=r.x*l-i.x*o;h/=a;let g=Math.sqrt(m*m+h*h);if(2**-52*4*g>this.m_eps)return!1;let u=m+n.ptStart.x,_=h+n.ptStart.y;n.radius.set(g),n.center.setCoords(u,_);let p=this.maxCircleApproximationError(e,t,n);if(p>this.m_eps)return n.maxError=p,!1}let m=(new a.Y).assignPoint2D(n.ptStart),h=(new a.Y).assignPoint2D(n.ptEnd).sub(m),g=(new a.Y).assignPoint2D(s).sub(m),u=h.crossProduct(g);if(u.isZero())return!1;let _=h.sqrLength().mulDouble(.5),p=g.sqrLength().mulDouble(.5),d=_.mul(g.y).sub(p.mul(h.y)),c=h.x.mul(p).sub(g.x.mul(_)),f=d.mul(d).add(c.mul(c)),x=u.clone();x.invertThis(),n.fradius2=f.mul(x).mul(x),n.fcenter.setCoords(d.mul(x).add(m.x),c.mul(x).add(m.y)),n.center.setWithEps(n.fcenter.asPoint2D()),n.radius.setWithEps(Math.sqrt(n.fradius2.toDouble()));let P=a.Z.constructPoint2D(n.ptStart).subE(n.center),y=a.Z.constructPoint2D(n.ptEnd).subE(n.center);if(!P.dotProduct(y).gt(l.T))return!1;let E=this.maxCircleApproximationError(e,t,n);return n.maxError=E,E<=this.m_eps}static checkSweepAngle(e,t){if(e.getGeometryType()===i.G.enumEllipticArc){let r=e,s=(0,a._)(r,t.vmin),i=(0,a._)(r,t.vmax);return!(Math.abs(i-s)>.5*l.l)}return!0}confirmIsLine(e,t){let r=e.ptEnd.sub(e.ptStart);return!(Math.abs(t.dotProduct(r.mul(.25)))>this.m_eps||Math.abs(t.dotProduct(r.mul(.75)))>this.m_eps)}maxCircleApproximationError(e,t,r){let s,n,a=[.25,.75],o=[.1,.25,.75,.9];e.getGeometryType()===i.G.enumEllipticArc?(s=a,n=a.length):(s=o,n=o.length);let m=0;for(let i=0;i<n;++i){let n=new l.P;e.queryCoord2D((0,l.r)(t.vmin,t.vmax,s[i]),n);let a=n.sub(r.center.value()).length(),o=Math.abs(a-r.radius.value());o>m&&(m=o)}return m}approximateWithCirclesImpl(e,t){let r=1;t&&t.push(0);let s,i=(0,l.d)(9,NaN);e?s=this.m_left.getMonotonicPartParams(i.length,i):(i[0]=0,i[1]=1,s=2);let n=[],a=[],o=new l.P(0,0);for(let e=1;e<s;e++){let s=new l.E(i[e-1],i[e]);for(this.m_bReversedLeft=!or.goodOrientation(this.m_left,s),this.m_bReversedLeft?(n.push(ar(o,s.vmin,0,0)),n.push(ar(o,s.vmax,0,0))):(n.push(ar(o,s.vmax,0,0)),n.push(ar(o,s.vmin,0,0))),n[0].pt=this.m_left.getCoord2D(n[0].t),n[1].pt=this.m_left.getCoord2D(n[1].t);n.length>1;){this.progress_();let e=n.at(-1),s=e.checkCount,i=e.err,o=e.pt.clone(),m=e.t,h=n[n.length-2].t,g=.5*(m+h),u=this.m_left.getCoord2D(g);if(i<=this.m_eps||s>=5){let e=new l.E;if(e.setCoords(m,h),this.closeToCircularArc(this.m_left,e,o,u,n[n.length-2].pt,this.m_leftArc)){t&&(this.m_bReversedLeft?a.push(m):t.push(h)),r++,n.pop();continue}s=0,i=this.m_leftArc.maxError}e.t=g,e.pt.setCoordsPoint2D(u),i*=.125,s++,e.err=i,e.checkCount=s,n.push(ar(o,m,i,s))}this.m_bReversedLeft&&t&&(t.length+=a.length,(0,l.b)(t,a.reverse(),t.length-a.length,0,a.length),a.length=0),n.length=0}return r}approximateWithCirclesImplPolyline(e){let t=new a.a,r=[];if(!this.approximateWithCirclesImpl(!0,r))return t;let s=0,i=this.m_left.getStartXY();t.startPath(i);for(let n=1;n<r.length;++n)if(e)t.lineTo(this.m_left.getCoord2D(r[n]));else{let e=new l.P;this.m_left.queryCoord2D(r[n],e);let o=new l.P;this.m_left.queryCoord2D(.5*(r[n]+s),o);let m=new a.l;m.constructCircularArcThreePoint(i,e,o),t.addSegment(m,!1),i.assign(e),s=r[n]}return t}static goodOrientation(e,t){let r=e.getCoord2D(t.vmin),s=e.getCoord2D(t.vmax);return r.compare(s)<0}progress_(e=!1){}}function lr(e,t,r,s,i,n,a){(function(e,t,r,s,i,n){e.hasCurves()?(e.setCurveStitcherPointer(s),s.m_impl=new cr(n,!1,null),s.m_impl.buildMonotonicCurveParentage(e,t,r,i)):s.m_impl=null})(e,t,r,i,n,a),Pr(e,r,a)}function mr(e,t,r,s){if(!(0,i.j)(e.getGeometryType()))return e;let n=e.getImpl();if(!n.hasNonLinearSegments())return e;let l=e.createInstance();l.getGeometryType()===i.G.enumPolygon&&l.setFillRule(e.getFillRule()),new a.E;let m=new o.P,h=new a.S,g=[],u=[],_=[],p=e.getDescription().getAttributeCount()>1,d=n.querySegmentIterator();for(;d.nextPath();){let e=!0;for(;d.hasNextSegment();){let s=d.isClosingSegment(),n=d.nextSegment();if(!n.isCurve()){l.addSegment(n,e,s),e=!1;continue}let o,c=!1;switch(n.getGeometryType()){case i.G.enumEllipticArc:case i.G.enumRationalBezier2:o=(0,a.H)(n,t,r,!0,!0,u,_,g),c=!0;break;default:o=(0,a.F)(n,t,r,!0,!0,u,g)}let f=c?2:3;u[1].isNAN()?(h.createLine(),h.get().construct(u[0],u[f])):c?(h.createQuadraticRationalBezier(),h.get().constructArrayWeights(u,_)):(h.createCubicBezier(),h.get().constructPoints(u)),p&&e&&(n.queryCoord(g[0],m),h.get().setStart(m)),p&&(n.queryCoord(g[1],m),h.get().setEnd(m)),l.addSegment(h.get(),e,s&&1===o),e=!1;for(let e=1,t=o,r=f;e<t;++e,r+=f)u[r+1].isNAN()?(h.createLine(),h.get().construct(u[r],u[r+f])):c?(h.createQuadraticRationalBezier(),h.get().constructArrayWeights(u.slice(r),_.slice(r))):(h.createCubicBezier(),h.get().constructPoints(u.slice(r))),p&&(n.queryCoord(g[e+1],m),h.get().setEnd(m)),l.addSegment(h.get(),!1,s&&e+1===t)}}return l}function hr(e,t,r,s,i,n,a,o){e.hasCurves()?(e.setCurveStitcherPointer(n),n.m_impl=new cr(o,!0,i),n.m_impl.buildMonotonicCurveParentage(e,t,r,a),Pr(e,r,o)):n.m_impl=null}function gr(e){if(!e.hasSegmentParentage())return;let t=e.queryVertexIteratorOnSelection();for(let r=t.next();-1!==r;r=t.next())if(!e.getSegmentParentageBreakVertex(r)){e.getPathFromVertex(r);let t=e.getPrevVertex(r),s=-1===t?-1:e.getSegmentParentage(t),i=e.getSegmentParentage(r);-1!==i&&-1!==s&&i!==s&&e.setSegmentParentageBreakVertex(r,!0)}}function ur(e,t){return t||=n.Envelope2D.constructEmpty(),function(e,t){let r=t.isEmpty()?e:(0,o.c)(null,t,!0).total();return r>e&&(r=e),.125*r}(e,t)}function _r(e,t){return.125*e}function pr(e,t){return 3*e+3*t}class dr{m_impl=null;stitchCurves(e,t,r,s){this.m_impl&&(this.m_impl.stitchCurves(e,t,r),s&&this.clearStitcher(e))}clearStitcher(e){this.m_impl&&=(this.m_impl.clearStitcher(e),null)}getOriginalVertexIndex(e,t){return this.m_impl.getOriginalVertexIndex(e,t)}getOriginalSegmentTypeInfo(e){return this.m_impl.getOriginalSegmentTypeInfo(e)}}class cr{constructor(e,t,r){this.m_progressTracker=e,this.m_nsr=r,this.m_tolerance=0,this.m_originalVertexIndex=-1,this.m_type=1,this.m_progressCounter=0,this.m_bIsSimple=t,this.m_densificationDeviation=NaN,this.m_maxSegmentsPerCurve=-1}buildMonotonicCurveParentage(e,t,r,s){if(!e.hasCurves())return;(0,i.g)(!e.hasSegmentParentage()),this.m_originalPlanarSegments.length=0,this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex()),this.m_tolerance=r;let n=new o.P,l=new a.S,m=[],h=[],g=[];for(let s=e.getFirstGeometry();-1!==s;s=e.getNextGeometry(s))for(let o=e.getFirstPath(s);-1!==o;o=e.getNextPath(o)){let s=e.getPathSize(o),u=e.getFirstVertex(o),_=0,p=-1;for(let d=0;d<s;d++){let f=e.getNextVertex(u);if(!e.querySegment(u,l,!0,!1)){u=f;continue}if(0===_){p=e.getVertexIndex(u);let t=cr.regularizeCurve(e,l.get(),u,r);if(t>=0){this.m_nsr&&0===this.m_nsr.m_reason&&this.m_nsr.assign(new c(13,p,-1)),_=t,s=e.getPathSize(o),f=e.getNextVertex(u);let r=e.querySegment(u,l,!0,!1);(0,i.g)(r)}}else _--;let x=e.getVertexIndex(u);-1!==this.m_originalVertexIndex&&e.setUserIndex(u,this.m_originalVertexIndex,p),e.setSegmentToIndex(x,null);let P,y=!1;switch(l.get().getGeometryType()){case i.G.enumEllipticArc:case i.G.enumRationalBezier2:P=(0,a.H)(l.get(),t,r,!1,!0,h,g,m),y=!0;break;default:{let e=!this.m_bIsSimple||!l.get().isMonotoneQuickAndDirty();P=(0,a.F)(l.get(),t,r,e,!1,h,m)}}let E=this.m_originalPlanarSegments.length;if(e.setSegmentParentageAndBreak(u,E,!0),!h[1].isNAN()){let t=null;t=y?new a.Q({points:h,weights:g}):new a.I({cp:h}),t.snapControlPoints(r*r),e.setSegmentToIndex(x,t)}let S=y?2:3;for(let t=1,s=P,i=S;t<s;++t,i+=S){l.get().queryCoord(m[t],n);let s=e.insertVertex(o,f,n);if(-1!==this.m_originalVertexIndex&&e.setUserIndex(s,this.m_originalVertexIndex,p),!h[i+1].isNAN())if(y){let t=new a.Q({points:h.slice(i),weights:g.slice(i)});t.snapControlPoints(r*r),e.setSegmentToIndex(e.getVertexIndex(s),t)}else{let t=new a.I({cp:h.slice(i)});t.snapControlPoints(r*r),e.setSegmentToIndex(e.getVertexIndex(s),t)}e.setSegmentParentageAndBreak(s,E,!1)}P>1&&(d+=P-1,s=e.getPathSize(o)),this.m_originalPlanarSegments.push(l.releaseSegment()),u=f}}}buildLinearSegmentParentage(e,t,r,s,n){if(this.m_type=0,this.m_densificationDeviation=t,this.m_maxSegmentsPerCurve=s,!e.hasCurves())return;(0,i.g)(!e.hasSegmentParentage()),this.m_tolerance=r,this.m_originalPlanarSegments=[],this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex());let l=new o.P,m=new a.S,h=new a.D(0,t,0,this.m_progressTracker,!1,s),g=[];for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))for(let s=e.getFirstPath(t);-1!==s;s=e.getNextPath(s)){let t=e.getPathSize(s),n=e.getFirstVertex(s);for(let a=0;a<t;a++){let a=e.getNextVertex(n);if(!e.querySegment(n,m,!0,!1)){n=a;continue}if(cr.regularizeCurve(e,m.get(),n,r)>=0){t=e.getPathSize(s),a=e.getNextVertex(n);let r=e.querySegment(n,m,!0,!1);(0,i.g)(r)}let o=e.getVertexIndex(n);-1!==this.m_originalVertexIndex&&e.setUserIndex(n,this.m_originalVertexIndex,o),e.setSegmentToIndex(o,null),g.length=0,h.densifySegment(m.get(),g),this.progress_();let u=this.m_originalPlanarSegments.length;e.setSegmentParentageAndBreak(n,u,!0);for(let t=1,r=g.length-1;t<r;++t){m.get().queryCoord(g[t],l);let r=e.insertVertex(s,a,l);e.setSegmentParentageAndBreak(r,u,!1),-1!==this.m_originalVertexIndex&&e.setUserIndex(r,this.m_originalVertexIndex,o)}this.m_originalPlanarSegments.push(m.releaseSegment()),n=a}}e.clearSegments()}stitchCurves(e,t,r){cr.st_stitchCurvesImpl(this,e,t,r,!1)}clearStitcher(e){this.m_originalPlanarSegments.length=0,-1!==this.m_originalVertexIndex&&(e.removeUserIndex(this.m_originalVertexIndex),this.m_originalVertexIndex=-1),e.deleteSegmentParentage()}static st_verifyParentage(e){cr.st_stitchCurvesImpl(null,e,-1,0,!0)}getOriginalVertexIndex(e,t){return-1===this.m_originalVertexIndex||-1===t?-1:e.getUserIndex(t,this.m_originalVertexIndex)}getOriginalSegmentTypeInfo(e){if(-1!==e){let t=this.m_originalPlanarSegments[e];switch(t.getGeometryType()){case i.G.enumEllipticArc:return 0===t.projectionBehavior()?0:1;case i.G.enumBezier:return 2;case i.G.enumBezier2:return 3;case i.G.enumLine:return-1;case i.G.enumRationalBezier2:return 4;default:(0,i.t)("")}}return-1}m_originalPlanarSegments=[];m_progressTracker=null;m_nsr=null;m_tolerance;m_densificationDeviation;m_maxSegmentsPerCurve;m_originalVertexIndex;m_type;m_progressCounter;m_bIsSimple;progress_(e=!1){this.m_progressCounter++}processSpanSmartTe_(e,t,r,s,n,a,o){if(t===r&&0===s)return(0,i.g)(-1===e.getNextVertex(t)),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let m=e.getNextVertex(t),h=e.getXY(t),g=e.getXY(r),u=0;{let t=2,n=h;for(let s=m;s!==r;s=e.getNextVertex(s)){let r=e.getXY(s);u+=l.P.distance(r,n),n=r,t++}u+=l.P.distance(g,n),(0,i.g)(t===s)}if(null===n)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(m,r);let _,p=o,d=n.getClosestCoordinate(h,!1),c=n.getClosestCoordinate(g,!1),f=n.calculateLength2D(),x=n.tToLength(d),P=n.tToLength(c),y=Math.abs(x)>10*p&&Math.abs(x-f)>10*p,E=Math.abs(P)>10*p&&Math.abs(P-f)>10*p,S=e=>{let t=e.calculateLength2D();return Math.abs(t-u)>Math.max(.2*u,4*p)?null:e},C=n.isClosed();if(!C){let e=l.P.distance(n.getStartXY(),n.getEndXY());e<=p&&f>5*e&&(C=!0)}if(C){let a,o,m=new l.P;if(2===s)m=l.P.lerp(h,g,.5),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a);else{let r=e.getNextNthVertex(t,(s-1)/2);m=e.getXY(r),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a);let i=Math.abs(o)>10*p&&Math.abs(o-f)>10*p;if(!i&&(s-1>=4&&(r=e.getNextNthVertex(t,(s-1)/4),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a),i=Math.abs(o)>10*p&&Math.abs(o-f)>10*p),!i))return}let u=!1,C=x===P;if(C){let r=2,i=4;s-1<=4&&(r=1,i=2);let a=h,o=e.getXY(e.getNextNthVertex(t,r)),m=e.getXY(e.getNextNthVertex(t,i));u=-l.P.orientationNonRobust(a,o,m)*(0,l.e)(n.calculateArea2DHelper())>0}else E?y?u=o>x:o<P?(x=0,d=0):(x=f,d=1):o>x?(P=f,c=1):(P=0,c=0);if(C)_=n.clone(),_.dropAllAttributes(),u||_.reverse(),(0,i.g)(h.equals(g));else{let e=!1;d>c&&(e=!0,[d,c]=[c,d]),_=n.cut(d,c,!0),_.getDescription().getAttributeCount(),e&&_.reverse()}_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}else if(y||E){if((!y||!E)&&l.P.distance(n.getStartXY(),n.getEndXY())<10*p){let s=[(0,l.o)(d,c),(0,l.o)(d,c),(0,l.o)(d,c)];y?(s[1].second=0,s[2].second=1):(s[1].first=1,s[2].first=0);let i=[null,null,null],a=[0,0,0],o=Number.MAX_VALUE,m=0;for(let e=0;e<3;e++){let t=!1;if(s[e].first>s[e].second){t=!0;let r=s[e].first;s[e].first=s[e].second,s[e].second=r}i[e]=n.cut(s[e].first,s[e].second,!0),i[e].dropAllAttributes(),t&&i[e].reverse(),i[e].setCoordsForIntersector(h,g,!1),a[e]=i[e].calculateLength2D();let r=Math.abs(u-a[e]);r<o&&(o=r,m=e)}return _=i[m],_=S(_),void(_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_)))}let s=!1;d>c&&(s=!0,[d,c]=[c,d]),_=n.cut(d,c,!0),_.dropAllAttributes(),s&&_.reverse(),_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}else{if(_=n.clone(),_.dropAllAttributes(),x>P&&_.reverse(),u<Math.max(.75*f,f-this.m_densificationDeviation*(s-1))){let e=d>c?c:d,t=_.tToLength(e)+u,r=_.lengthToT(t);r=(0,l.s)(r,e,1),_=_.cut(e,r,!0)}_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}}processSpanCurves_(e,t,r,s,n,a,o){if(t===r&&0===s)return(0,i.g)(-1===e.getNextVertex(t)),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let l=e.getNextVertex(t);{let t=2;for(let s=l;s!==r;s=e.getNextVertex(s))t++;(0,i.g)(t===s)}if(null===n)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(l,r);let m=e.getXY(t),h=e.getXY(r);if(n.isClosed()){if(m.isEqualPoint2D(h)&&m.isEqualPoint2D(n.getStartXY())){let i;if(i=this.verifySegmentFitnessCurves(e,t,r,s,n,a,o)){let s=n.clone();return s.dropAllAttributes(),i<0&&s.reverse(),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),s)}}}else if(m.isEqualPoint2D(n.getStartXY())){if(h.isEqualPoint2D(n.getEndXY())){let l=n.clone();l.dropAllAttributes();let m=this.verifySegmentFitnessCurves(e,t,r,s,l,a,o);if(m)return(0,i.g)(m>0),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),l)}}else if(h.isEqualPoint2D(n.getStartXY())&&m.isEqualPoint2D(n.getEndXY())){let l=n.getReversed();l.dropAllAttributes();let m=this.verifySegmentFitnessCurves(e,t,r,s,l,a,o);if(m)return(0,i.g)(m>0),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),l)}this.processSpanSplitSegmentCurves(e,t,r,s,n,a,o)}processSpan_(e,t,r,s,i,n,a){0!==this.m_type?this.processSpanCurves_(e,t,r,s,i,n,a):this.processSpanSmartTe_(e,t,r,s,i,n,a)}processSpanSplitSegmentCurves(e,t,r,s,i,n,a){if(i.isLine()||this.fitSegmentToSpanCurves(e,t,r,s,i,n,a))return;let o=a*a,m=s,h=t,g=e.getXY(t),u=i.getClosestCoordinate(g,!1),_=i.getCoord2D(u),p=!1,d=l.P.sqrDistance(g,_);if(d>o){let s=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,i,n,a),s===r)return;h=s,p=!0,--m}let c=r,f=e.getXY(r);u=i.getClosestCoordinate(f,!1);let x=i.getCoord2D(u),P=!1,y=l.P.sqrDistance(f,x);if(y>o){let t=e.getPrevVertex(r);if(this.approximateSpanSectionCurves(e,t,i,n,a),t===h)return;c=t,P=!0,--m}if((p||P)&&this.fitSegmentToSpanCurves(e,h,c,m,i,n,a))return;let E=!1;if(!p&&d>0){let r=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,i,n,a),r===c)return;h=r,p=!0,E=!0,--m}if(!P&&y>0){let t=e.getPrevVertex(r);if(this.approximateSpanSectionCurves(e,t,i,n,a),t===h)return;c=t,P=!0,E=!0,--m}if(E&&this.fitSegmentToSpanCurves(e,h,c,m,i,n,a))return;let S=h;for(;;){let t=e.getNextVertex(S);if(this.approximateSpanSectionCurves(e,S,i,n,a),S=t,S===c)return}}fitSegmentToSpanCurves(e,t,r,s,i,n,o){let m=[];m.push(e.getXY(t));let h=t,g=new a.S;for(;;){e.querySegment(h,g,!1,!0);let t=[.1,.25,.4,.5,.6,.75,.9,1],i=0;for(let e of t)(2===s||1&i)&&m.push(g.get().getCoord2D(e)),i++;if(h=e.getNextVertex(h),h===r)break}let u=(()=>{let e=m[0].compare(m.at(-1));if(0===e){let t=new l.K(0);(function(e,t,r){if(r.reset(),t<3)return;let s=e[0].clone(),i=s.x,n=s.y,a=e[1].clone(),o=new l.P;for(let i=2;i<t;i++)o.assign(e[i]),r.pe((o.x-s.x)*(a.y-n)),s.assign(a),a.assign(o);r.pe((i-s.x)*(a.y-n))})(m,m.length,t),e=t.getResult()>=0?-1:1}return e>0})();u&&m.reverse();let _=i.clone();if(_.dropAllAttributes(),u&&_.reverse(),_.setSegmentFromCoordsForStitcher(m,m.length),u&&_.reverse(),_.snapControlPoints(this.m_tolerance*this.m_tolerance),this.verifySegmentFitnessCurves(e,t,r,s,_,n,o)){this.removeSpanBetween(e,t,r);let s=e.getVertexIndex(t);return e.setSegmentToIndex(s,_),!0}return!1}approximateSpanSectionCurves(e,t,r,s,n){let m=new a.S;if(!e.querySegment(t,m,!0,!1))return;let h=r.getGeometryType();if(h!==m.get().getGeometryType()){if(h===i.G.enumEllipticArc){if(m.get().getGeometryType()!==i.G.enumRationalBezier2)return;if(0===r.projectionBehavior()){let r=[];!function(e,t,r,s,i){let n=(0,a.U)(t),o=Math.max(4*n,r);new or(t,null,o,NaN,i).approximateWithCirclesImpl(!1,s)}(0,m.get(),n,r,this.m_progressTracker);let s=e.getNextVertex(t),i=e.getPathFromVertex(t),h=new o.P,g=t;for(let t=1,n=r.length;t<n;t++){let n=r[t],o=m.get().getCoord2D(r[t-1]),u=m.get().getCoord2D((0,l.r)(r[t-1],n,.5));m.get().queryCoord(n,h);let _=h.getXY(),p=new a.l;p.constructCircularArcThreePoint(o,_,u);let d=-1;n<1&&(d=e.insertVertex(i,s,h)),e.setSegmentToIndex(e.getVertexIndex(g),p),g=d}return}{let r=(0,l.m)(l.P,3);m.get().queryControlPoints(r);let s=[0,0,0];m.get().queryWeights(s);let i=(0,a.J)(s),n=new a.l;return(0,a.K)(r,i*i,null,!1,n),void e.setSegmentToIndex(e.getVertexIndex(t),n)}}(0,i.d)("approximate_span_section_")}}verifySegmentFitnessCurves(e,t,r,s,i,n,o){let m=e.getXY(t),h=e.getXY(r);if(!m.isEqualPoint2D(i.getStartXY())||!h.isEqualPoint2D(i.getEndXY()))return 0;let g=0;if(i.isClosed()){let e=i.getCoord2D(.1).sub(m);g=i.getCoord2D(.7).sub(m).crossProduct(e)>=0?1:-1}let u=(0,l.d)(a.N.s_maxMonotonicPartParams,NaN),_=i.getMonotonicPartParams(u.length,u);_--;let p=new a.L,d=[1,.5,.75,.25],c=0,f=t,x=m.clone();for(;;){let t=e.getNextVertex(f),s=e.getSegment(f);null===s&&(e.queryLineConnector(f,p,!0),s=p);for(let e=+(t===r);e<d.length;e++){let t=s.getCoord2D(d[e]);if(!i.isCloserThanDistance(t,l.E.unit(),o))return 0}if(_>1)for(let e=1;e<_;){let t=i.getCoord2D(u[e]);s.isCloserThanDistance(t,l.E.unit(),o)?(u[_-1]=(0,l.c)(u[e],u[e]=u[_-1]),_--):e++}if(g){let e=s.getCoord2D(.25);c+=e.sub(m).crossProduct(x.sub(m)),x.assign(e),e.assign(s.getCoord2D(.75)),c+=e.sub(m).crossProduct(x.sub(m)),x.assign(e)}if(f=t,f===r)return _>1?0:g?c<0?-g:g:1}}removeSpanBetween(e,t,r){e.setSegmentToIndex(e.getVertexIndex(t),null);let s=e.getNextVertex(t);s!==r&&e.removeVertices(s,r)}static st_stitchCurvesImpl(e,t,r,s,n){if(!t.hasSegmentParentage())return;gr(t);let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;)if((0,i.m)(t.getGeometryType(a))){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r),o=t.isClosedPath(r);o&&(a+=1);let l=t.getFirstVertex(r),m=t.getSegmentParentage(l);if(o){if(-1!==m&&!t.getSegmentParentageBreakVertex(l)){let e=t.getPrevVertex(l),r=l;for(let s=0;;s++){let n=t.getSegmentParentage(e);if(m!==n){(0,i.g)(-1===n);break}if(l=e,t.getSegmentParentageBreakVertex(e))break;if(e===r){l=r,t.setSegmentParentageBreakVertex(l,!0);break}e=t.getPrevVertex(e),(0,i.g)(s<a)}}}else(0,i.g)(-1===m||t.getSegmentParentageBreakVertex(l));let h=l;for(let r=0;r<a&&-1!==h;){let o=t.getSegmentParentage(h);if(-1===o){if(r++,h=t.getNextVertex(h),h===l)break;continue}let m=0,g=-1,u=h;m=1;let _=t.getNextVertex(u);for(;r<a&&-1!==_;){r++,g=_,m++;let e=t.getSegmentParentage(_);if(-1===e||t.getSegmentParentageBreakVertex(_))break;(0,i.g)(e===o),_=t.getNextVertex(_)}if(-1===g){(0,i.g)(0);break}if(!n){let r=e.m_originalPlanarSegments[o];e.processSpan_(t,u,g,m,r,o,s)}if(h=g,h===l)break}}if(-1!==r)break;a=t.getNextGeometry(a)}else a=-1===r?t.getNextGeometry(a):-1}static st_stitchCurvesFromLinesImpl(e,t,r,s,n){let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r);t.isClosedPath(r)&&(a+=1);let o=!0,l=!1,m=t.getFirstVertex(r),h=m;for(let r=0;r<a&&-1!==h;){let g=t.getSegmentParentage(h);if(-1===g||o){o=!1,r++,h=t.getNextVertex(h),l=!0;continue}let u,_,p=0;if(l?(u=t.getPrevVertex(h),_=h,(0,i.g)(-1!==u),(0,i.g)(_!==u),(0,i.g)(-1===t.getSegmentParentage(u)||m===u)):(u=h,_=t.getNextVertex(u),r++,(0,i.g)(-1!==_),(0,i.g)(_!==u),g=t.getSegmentParentage(_)),p=2,l=!1,-1===g||t.getSegmentParentageBreakVertex(_)){h=_;continue}let d=t.getNextVertex(_);for(r++;r<a&&-1!==d;){_=d,p++;let e=t.getSegmentParentage(d);if(-1===e||t.getSegmentParentageBreakVertex(d))break;(0,i.g)(e===g),r++,d=t.getNextVertex(d)}if(!n){let r=e.m_originalPlanarSegments[g];e.processSpan_(t,u,_,p,r,g,s)}h=_}}if(-1!==r)break;a=t.getNextGeometry(a)}}static st_stitchCurvesFromCurvesImpl(e,t,r,s,n){let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;)if((0,i.m)(t.getGeometryType(a))){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r),o=t.isClosedPath(r);o&&(a+=1);let l=t.getFirstVertex(r);if(o){if(-1!==t.getSegmentParentage(l)){let e=l;for(let s=0;!t.getSegmentParentageBreakVertex(e);s++){if(s===a){l=t.getFirstVertex(r),t.setSegmentParentageBreakVertex(e,!0);break}e=t.getPrevVertex(e)}}}else(0,i.g)(-1===t.getSegmentParentage(l)||t.getSegmentParentageBreakVertex(l));let m=l;for(let r=0;r<a&&-1!==m;){let o=t.getSegmentParentage(m);if(-1===o){r++,m=t.getNextVertex(m);continue}let l=0,h=-1,g=m;l=1;let u=t.getNextVertex(g);for(;r<a&&-1!==u;){r++,h=u,l++;let e=t.getSegmentParentage(u);if(-1===e||t.getSegmentParentageBreakVertex(u))break;(0,i.g)(e===o),u=t.getNextVertex(u)}if(-1===h)break;if(!n){let r=e.m_originalPlanarSegments[o];e.processSpan_(t,g,h,l,r,o,s)}m=h}}if(-1!==r)break;a=t.getNextGeometry(a)}else a=-1===r?t.getNextGeometry(a):-1}static regularizeCurve(e,t,r,s){let i=t.snapControlPoints(s*s);if(i){let s=e.getVertexIndex(r),i=t.clone();e.setSegmentToIndex(s,i)}if(t.getGeometryType()===a.I.type){let n=[],a=t.calculateSpecialPointsForCracking(s,n);if(a>0){let o=[];if(a>1)for(let e=0;e<a;e++)if(o.push(t.getCoord2D(n[e])),e>0){let t=(Math.abs(o[e].x)+Math.abs(o[e].y))*(0,l.g)(),r=l.P.distance(o[e-1],o[e]);if(r<t&&r>0){let t=new l.P;(0,l.J)(o[e-1],o[e],.5,t),o[e-1]=t,o[e]=t}}e.splitSegment(r,n,a),i=e.snapControlPoints(r,a+1,s*s)||i;for(let t=0;t<a;t++)r=e.getNextVertex(r),e.setSegmentParentageBreakVertex(r,!0);return a}}return i?0:-1}}function fr(e,t,r,s,i){return new Er(e,r,t,s,i).do_()}function xr(e,t,r=1,s=1,i=1,n=1){if(s>n)return e;if(n>s)return t;let a=new o.P;return function(e,t,r,s,i,n,a,o,l){let m=e.equals(t);if(s>n)return a.assignCopy(e),l[0]=s,o[0]=r,m;if(n>s)return a=t,l[0]=n,o[0]=i,m;a.assignCopy(e);let h=ie(e.getXY(),t.getXY(),r,s,i,n);a.setXY(h.pt),o[0]=h.weight,l[0]=h.rank}(e,t,r,s,i,n,a,[0],[0]),a}function Pr(e,t,r){return Er.fixCurveTwoPointLoops(e,t,r)}function yr(e){return(0,o.f)(e)}class Er{m_shape;m_progressTracker;m_tolerance;m_bFilterDegenerateSegments;m_bTrackChanges;m_progressCounter;constructor(e,t,r,s,i){this.m_shape=e,this.m_progressTracker=t,this.m_tolerance=r,this.m_bFilterDegenerateSegments=s,this.m_bTrackChanges=i,this.m_progressCounter=0}do_(){let e=new o.C(this.m_tolerance.tolerance,this.m_tolerance.resolution),t=yr(e),r=(0,o.n)(e),s=1.00001*r;r*=1.000001;let n=!1,a=this.m_shape.getTotalPointCount()+10>30?1e3:(this.m_shape.getTotalPointCount()+10)*(this.m_shape.getTotalPointCount()+10),m=this.m_shape.hasPointFeatures();for(let e=0;;e++){this.m_shape.dbgCheckSelection(),e>a&&(0,i.d)("crack_and_cluster_iteration_exceeded"),this.m_shape.dbgVerifyMonotone();let o=-1;0===e&&(o=this.firstCrack_(),n||=o>0);let l=this.cluster_(t);if(this.m_shape.dbgVerifyMonotone(),n||=l,this.m_bFilterDegenerateSegments){let e=0!==this.m_shape.filterClosePoints(t,!0,!1,this.m_bTrackChanges,-1);n||=e,this.m_shape.dbgVerifyMonotone()}let h=this.m_shape.snapControlPointsOnSelection(s*s);n||=h,this.m_shape.dbgCheckSelection();let g=!1;if((0===e&&-1===o||m||Ie(!0,this.m_shape,r,null,this.m_progressTracker))&&(g=this.crack_(s),n||=g,this.m_shape.dbgVerifyMonotone()),!g&&!Er.fixCurveTwoPointLoops(this.m_shape,t,this.m_progressTracker)){this.m_shape.dbgVerifyMonotone();break}}return n&&function(e){if(!e.hasSegmentParentage())return;gr(e);let t=new o.a(0),r=e.queryVertexIteratorOnSelection();for(let e=r.next();-1!==e;e=r.next())t.add(e);if(0===t.size())return;e.sortVerticesSimpleByY(t,0,t.size()),t.add(-1);let s=l.P.getNAN();e.queryXY(t.read(0),s);let i=0,n=l.P.getNAN();for(let r=1,a=t.size();r<a;r++){{let s=t.read(r);-1===s?n.setNAN():e.queryXY(s,n)}if(!n.isEqualPoint2D(s)){if(r-i>1){let s=!1;for(let n=i;n<r;++n){let r=t.read(n);if(e.getSegmentParentageBreakVertex(r)){s=!0;break}}if(!s){let n=(t,r,s)=>{let i=e.getPrevVertex(t),n=e.getNextVertex(t);-1===i?r.setNAN():r.assign(e.getXY(i)),-1===n?s.setNAN():s.assign(e.getXY(n))},a=new l.P,o=new l.P;n(t.read(i),a,o);for(let e=i+1;e<r;++e){let r=t.read(e);if(-1===r)continue;let i=new l.P,m=new l.P;n(r,i,m);let h=(e,t)=>!!(e.equals(t)||e.isNAN()&&t.isNAN());if(!(h(i,a)&&h(m,o)||h(m,a)&&h(i,o))){s=!0;break}}}if(s)for(let s=i;s<r;++s)e.setSegmentParentageBreakVertex(t.read(s),!0)}s.setCoordsPoint2D(n),i=r}}}(this.m_shape),n}cluster_(e){return re(this.m_shape,e,-1,this.m_bTrackChanges,this.m_progressTracker)}crack_(e){return function(e,t,r,s){if(!Ce(e))return!1;let i=new Ge(s);i.m_shape=e,i.m_tolerance=t,i.m_bTrackChanges=r;let n=!1,a=e.hasCurves()?5:15;return n=e.getTotalPointCount()<a?i.crackBruteForce_():i.crackerPlaneSweep_(),n}(this.m_shape,e,this.m_bTrackChanges,this.m_progressTracker)}static fixCurveTwoPointLoops(e,t,r){if(!e.hasCurves())return!1;e.dbgVerifyCurves();let s=e.createUserIndexUninitialized(),n=new o.a(0),a=e.queryVertexIteratorOnSelection();for(let t=a.next();-1!==t;t=a.next())n.add(t),e.setUserIndex(t,s,-1);if(0===n.size())return!1;n.add(-1),e.sortVerticesSimpleByY(n,0,n.size()-1);let m=0,h=e.getXY(n.read(m)),g=new l.P(NaN,NaN),u=[];for(let t=1,r=n.size();t<r;++t){let r=n.read(t),i=-1===r?g:e.getXY(r);if(i.equals(h))continue;let a=[];for(let r=m;r<t;r++){let t=n.read(r),i=e.getPrevVertex(t);if(-1!==i&&-1===e.getUserIndex(i,s)){let t=Sr(e.getXY(i),e.getSegment(i));0!==l.P.sqrDistance(h,t.otherPt)&&(t.vert=i,t.dir=-1,a.push(t)),e.setUserIndex(i,s,1)}let o=e.getNextVertex(t);if(-1!==o&&-1===e.getUserIndex(t,s)){let r=Sr(e.getXY(o),e.getSegment(t));0!==l.P.sqrDistance(h,r.otherPt)&&(r.vert=t,r.dir=1,a.push(r)),e.setUserIndex(t,s,1)}}if(a.length>1){a.sort((e,t)=>Ir(e,t));let e=Sr(g.clone(),null);a.push(e);let t=0;for(let e=1,r=a.length;e<r;e++)if(!a[e].otherPt.equals(a[e-1].otherPt)){if(e-t>1&&null!==a[t].seg){let r=!1,s=t;for(let i=t+1;i<e;i++)if(!Cr(a[s],a[i])){r=!0;break}if(r)for(let r=t;r<e&&null!==a[r].seg;r++)u.push(a[r].vert)}t=e}}m=t,h.setCoordsPoint2D(i)}for(let r of u){let s=e.getSegment(r);(0,i.g)(null!==s);let n=e.getXY(r),a=e.getXY(e.getNextVertex(r));if(l.P.distance(n,a)<3*t)e.setSegmentToIndex(e.getVertexIndex(r),null);else{let t=s.lengthToT(.5*s.calculateLength2D());e.splitSegment(r,[t],1)}}return e.removeUserIndex(s),u.length>0}firstCrack_(){let e=this.m_shape.getEnvelope2D(this.m_progressTracker),t=(0,o.c)(null,e,!0).total();if(4*t<this.m_tolerance.total()){let e=!1,r=1.1*t,s=t,i=this.cluster_(r);e||=i;let n=0;this.m_bFilterDegenerateSegments&&(n=this.m_shape.filterClosePoints(0,!0,!1,this.m_bTrackChanges,-1));let a=this.crack_(s);return e||=a,e?1:n?2:0}return-1}progress_(e=!1){this.m_progressCounter++,(e||!(4095&this.m_progressCounter))&&(this.m_progressCounter=0)}}function Sr(e,t){return{otherPt:e,seg:t,vert:-1,dir:0}}function Cr(e,t){if((0,i.g)(e.otherPt.equals(t.otherPt)),null===e.seg)return null===t.seg;if(null===t.seg)return!1;let r=e.seg.getGeometryType();if(r!==t.seg.getGeometryType())return!1;if(r===i.G.enumBezier){let r=e.seg,s=t.seg,i=r.getControlPoint1(),n=r.getControlPoint2();-1===e.dir&&(n=(0,l.c)(i,i=n));let a=s.getControlPoint1(),o=s.getControlPoint2();return-1===t.dir&&(o=(0,l.c)(a,a=o)),i.equals(a)&&n.equals(o)}if(r===i.G.enumRationalBezier2){let r=e.seg,s=t.seg,i=r.getControlPoint1(),n=s.getControlPoint1();if(!i.equals(n))return!1;let a=[0,0,0];r.queryWeights(a),-1===e.dir&&(a[2]=(0,l.c)(a[0],a[0]=a[2]));let o=[0,0,0];return s.queryWeights(o),-1===t.dir&&(o[2]=(0,l.c)(o[0],o[0]=o[2])),a[0]===o[0]&&a[1]===o[1]&&a[2]===o[2]}(0,i.d)("")}function Ir(e,t){let r=e.otherPt.compare(t.otherPt);return 0===r?function(e,t){if(null===e.seg||null===t.seg)return null===e.seg?null===t.seg?0:1:-1;let r=e.seg.getGeometryType(),s=t.seg.getGeometryType();return r<s?-1:+(r>s)}(e,t):r}var vr=i.j,Gr=i.h,wr=i.u;function br(e){switch(e){case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 0:return 0;default:(0,i.g)(0,"unrecognized cut side")}return 3}function Tr(e,t,r,s,n,a,l){let m=new Ar(n);m.m_bOGCOutput=!0;let h=e.getGeometryType()===i.G.enumPolygon&&1===e.getFillRule()&&!(0,o.q)(s);return m.planarSimplifyImpl_(e,t,h,r,s,n,a,l)}function Nr(e,t,r,s,i,n,a,o){return new Ar(n).planarSimplifyImpl_(e,t,r,s,i,n,a,o)}function Dr(e,t,r){return function(e,t,r){let s=e.createInstance(),n=(0,l.m)(l.P,100),a=Array(100),o=e.getPointCount(),m=!0,h=2===t.getDimension();1!==t.getDimension()&&2!==t.getDimension()&&(0,i.d)("");for(let i=0;i<o;){let o=e.queryCoordinates(n,n.length,i,-1)-i;h?rr(t,n,o,r.total(),a):sr(t,n,o,r.total(),a);let l=0;for(let t=0;t<o;t++)0===a[t]&&(m&&(m=!1,s.addPoints(e,0,i)),l!==t&&s.addPoints(e,i+l,i+t),l=t+1);!m&&l!==o&&s.addPoints(e,i+l,i+o),i+=o}return m?e:s}(e,t,r)}function Vr(e,t,r,s){if(e.getDimension()>t.getDimension())return Mr(Ur(e),e,0,"^");if(e.getDimension()<t.getDimension()||e.isEmpty())return Mr(Ur(t),e,0,"^");if(t.isEmpty())return Mr(Ur(e),e,0,"^");let l=new n.Envelope2D;e.queryEnvelope(l);let m=new n.Envelope2D;t.queryEnvelope(m);let h=new n.Envelope2D;h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=new Ar(s),_=new a.E,p=_.addGeometry(Ur(e)),d=_.addGeometry(Ur(t)),c=0,f=null;if(_.hasCurves()){f=new dr;let e=_.getEnvelope2D(s);c=_r(g.total()),lr(_,ur(g.total(),e),g.total(),0,f,null,s)}u.setEditShapeCrackAndCluster(_,g);let x=u.symmetricDifference(p,d);null!==f&&f.stitchCurves(_,x,c,!0);let P=Mr(_.getGeometry(x),e,0,"^");return vr(P.getGeometryType())&&(P.getImpl().setIsSimple(4,g.total()),P.getGeometryType()===i.G.enumPolygon&&P.getImpl().updateOGCFlagsProtected()),P}function kr(e,t,r){return function(e,t,r){if(e.isEmpty())return e.createInstance();if(t.isEmpty())return e.createInstance();let s=[new l.P],n=[0],a=2===t.getDimension();return 1!==t.getDimension()&&2!==t.getDimension()&&(0,i.d)(""),s[0]=e.getXY(),a?rr(t,s,1,r.total(),n):sr(t,s,1,r.total(),n),0===n[0]?e.createInstance():e}(e,t,r)}function Fr(e,t,r,s,n,l=!1){0===t&&(0,i.a)("not enough geometries to dissolve");let m=0;for(let r=0,s=t;r<s;r++)m=Math.max(e[r].getDimension(),m);if(2===m||1===m)return new Ar(s).dissolveMultiPaths_(m,!1,e,t,r,n,l);let h=0,g=-1;for(let r=0,s=t;r<s;r++)e[r].getDimension()===m&&(-1===g&&(g=r),e[r].isEmpty()||(g=r,h++));if(h<2)return Ur(e[g]);let u=o.r.constructEmpty(),_=new a.E,p=-1;for(let r=0,s=t;r<s;r++)if(e[r].getDimension()===m&&!e[r].isEmpty()){-1===p?p=_.addGeometry(Ur(e[r])):_.appendGeometry(p,Ur(e[r]));let t=o.r.constructEmpty();e[r].queryLooseEnvelope(t),u.mergeEnv3D(t)}let d=(0,o.c)(r,u.getEnvelope2D(),!0),c=new Ar(s);if(l){let e=(0,o.t)(r,u.getEnvelopeZs(),!0);return c.planarSimplify3DImpl_(_,d,e,0,!0)}return c.m_bOGCOutput=!0,c.planarSimplifyMultiPoints(_,d,!1,-1)}function Hr(e,t,r,s,n,l=!1){t<2&&(0,i.a)("not enough geometries to dissolve");let m=0;for(let r=0,s=t;r<s;r++)m=Math.max(e[r].getDimension(),m);if(2===m||1===m)return new Ar(s).dissolveMultiPaths_(m,!0,e,t,r,n,l);let h=o.r.constructEmpty(),g=new a.E,u=-1,_=0,p=-1;for(let r=0,s=t;r<s;r++)if(e[r].getDimension()===m&&(-1===p&&(p=r),!e[r].isEmpty())){p=r,-1===u?u=g.addGeometry(Ur(e[r])):g.appendGeometry(u,Ur(e[r]));let t=o.r.constructEmpty();e[r].queryLooseEnvelope(t),h.mergeEnv3D(t),_++}if(_<2)return Ur(e[p]);let d=0===m?r:null,c=(0,o.c)(d,h.getEnvelope2D(),!0),f=new Ar(s);if(l){let e=(0,o.t)(d,h.getEnvelopeZs(),!0);return f.m_bOGCOutput=!0,f.planarSimplify3DImpl_(g,c,e,0,!0)}return f.planarSimplifyMultiPoints(g,c,!0,-1)}class Ar{m_progressTracker;m_topoGraph=null;m_maskLookup=[];m_dummyPt1=l.P.getNAN();m_dummyPt2=l.P.getNAN();m_fromEdgeForPolylines=-1;m_progressCounter=0;m_bOGCOutput=!1;constructor(e){this.m_progressTracker=e}linesToPolygonsImpl(e,t){let r=0,s=0,i=null;if(e.hasCurves()){i=new dr;let n=e.getEnvelope2D(this.m_progressTracker);s=_r(t.total());let a=ur(t.total(),n);r=pr(a,s),lr(e,a,t.total(),0,i,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,t.add(r));let n=this.m_topoGraph.createUserIndexForChains(),a=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(a,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(a);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);let o=[];for(let t=this.m_topoGraph.getFirstChain();-1!==t;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,n))continue;this.m_topoGraph.setChainUserIndex(t,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);if(0===this.m_topoGraph.getChainArea(t))continue;let r=this.m_topoGraph.extractPolygonFromChainAndIslands(e,-1,t,-1);i?.stitchCurves(e,r,s,!1);let a=e.getGeometry(r);o.push(a)}return new _.S(o)}autoCompleteImpl(e,t,r){let s=0,i=0,n=null;if(e.hasCurves()){n=new dr;let t=e.getEnvelope2D(this.m_progressTracker);i=_r(r.total());let a=ur(r.total(),t);s=pr(a,i),lr(e,a,r.total(),0,n,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,r.add(s));let a=this.m_topoGraph.getGeometryID(t),o=this.m_topoGraph.createUserIndexForChains(),l=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(l,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(l);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);let m=[];for(let t=this.m_topoGraph.getFirstChain();-1!==t;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,o))continue;this.m_topoGraph.setChainUserIndex(t,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);if(0!==this.m_topoGraph.getChainParentage(t))continue;let r=this.m_topoGraph.getChainHalfEdge(t),s=r,l=!1;do{let e=this.m_topoGraph.getHalfEdgeTwin(s);if(this.m_topoGraph.getHalfEdgeChain(e)!==t&&0!==(this.m_topoGraph.getHalfEdgeParentage(s)&a)){l=!0;break}s=this.m_topoGraph.getHalfEdgeNext(s)}while(s!==r);if(!l||0===this.m_topoGraph.getChainArea(t))continue;let h=this.m_topoGraph.extractPolygonFromChainAndIslands(e,-1,t,-1);null!==n&&n.stitchCurves(e,h,i,!1);let g=e.getGeometry(h);m.push(g)}return new _.S(m)}setEditShape(e,t=!1){null===this.m_topoGraph&&(this.m_topoGraph=new K),this.m_topoGraph.setEditShape(e,this.m_progressTracker,!0,t)}setEditShapeCrackAndCluster(e,t){fr(e,t,this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,this.m_bOGCOutput,-1,this.m_progressTracker);this.setEditShape(e)}setHalfEdgeOrientations_(e,t){let r=this.m_topoGraph.getShape();for(let s=r.getFirstGeometry();-1!==s;s=r.getNextGeometry(s))if(s===t)for(let t=r.getFirstPath(s);-1!==t;t=r.getNextPath(t)){let s=r.getFirstVertex(t);if(-1===s)continue;let i=r.getNextVertex(s);for(;-1!==i;){let t=this.m_topoGraph.getClusterFromVertex(s),n=this.m_topoGraph.getClusterFromVertex(i),a=this.m_topoGraph.getHalfEdgeConnector(t,n);if(-1!==a){let t=this.m_topoGraph.getHalfEdgeTwin(a);this.m_topoGraph.setHalfEdgeUserIndex(a,e,1),this.m_topoGraph.setHalfEdgeUserIndex(t,e,2)}s=i,i=r.getNextVertex(s)}}}flushVertices_(e,t){let r=this.m_topoGraph.getShape(),s=r.hasSegmentParentage(),i=new a.S,n=r.insertPath(e,-1);t.push(t[0]);let o=t.length,l=-1;for(let e=0;e<o;e++){let a=t[e];if(l=r.addVertex(n,a),!s)continue;let m=this.m_topoGraph.getClusterFromVertex(a);if(e>0&&this.m_topoGraph.isBreakNode(m)&&r.setSegmentParentageBreakVertex(l,!0),e<o-1){let s=this.m_topoGraph.getHalfEdgeConnector(m,this.m_topoGraph.getClusterFromVertex(t[e+1])),n=this.m_topoGraph.getSegmentParentage(s);r.setSegmentParentageAndBreak(l,n,e>0||this.m_topoGraph.isBreakNode(m)),this.m_topoGraph.isHalfEdgeCurve(s)&&(this.m_topoGraph.querySegmentXY(s,i),r.setSegmentToIndex(r.getVertexIndex(l),i.get().clone()))}}if(s){let e=this.m_topoGraph.getClusterFromVertex(t[o-1]);this.m_topoGraph.isBreakNode(e)&&r.setSegmentParentageBreakVertex(l,!0)}r.setClosedPath(n,!0)}processPolygonCuts_(e,t,r,s){let n=this.m_topoGraph.getGeometryID(r),a=this.m_topoGraph.getGeometryID(s),o=[],l=this.m_topoGraph.getShape(),m=this.m_topoGraph.createUserIndexForHalfEdges();for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r)){let s=this.m_topoGraph.getClusterHalfEdge(r);if(-1===s)continue;let h=s;do{if(1!==this.m_topoGraph.getHalfEdgeUserIndex(h,m)){let r=h,s=h,g=!1,u=0;do{if(this.m_topoGraph.setHalfEdgeUserIndex(r,m,1),g||0!==(this.m_topoGraph.getHalfEdgeParentage(r)&a)&&0!==(this.m_topoGraph.getHalfEdgeFaceParentage(r)&n)&&(s=r,g=!0),g){let t=this.m_topoGraph.getHalfEdgeOrigin(r),s=this.m_topoGraph.getClusterVertexIterator(t),i=this.m_topoGraph.getVertexFromVertexIterator(s);o.push(i),-1!==e&&0!==(this.m_topoGraph.getHalfEdgeParentage(r)&a)&&(u|=this.m_topoGraph.getHalfEdgeUserIndex(r,e))}r=this.m_topoGraph.getHalfEdgeNext(r)}while(r!==s);if(g&&this.m_topoGraph.getChainArea(this.m_topoGraph.getHalfEdgeChain(s))>0){let e=l.createGeometry(i.G.enumPolygon);this.flushVertices_(e,o),-1!==t&&l.setGeometryUserIndex(e,t,u)}o.length=0}h=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(h))}while(h!==s)}this.m_topoGraph.deleteUserIndexForHalfEdges(m)}cutPolygonPolyline_(e,t,r,s){this.m_topoGraph.removeSpikes_();let i=-1;-1!==e&&(i=this.m_topoGraph.createUserIndexForHalfEdges(),this.setHalfEdgeOrientations_(i,r)),this.processPolygonCuts_(i,e,t,r),-1!==i&&(this.m_topoGraph.deleteUserIndexForHalfEdges(i),i=-1);let n=this.m_topoGraph.getShape();for(let e=n.getFirstGeometry();-1!==e;e=n.getNextGeometry(e))e!==t&&e!==r&&s.push(e);s.sort((e,t)=>{let r=n.getFirstPath(e),s=n.getRingArea(r),i=n.getFirstPath(t),a=n.getRingArea(i);return s<a?-1:+(s>a)})}cut(e,t,r,s,n){let a=this.m_topoGraph.getShape().getGeometryType(r),o=this.m_topoGraph.getShape().getGeometryType(s),l=(0,i.u)(a),m=(0,i.u)(o);2!==l||1!==m?1!==l||1!==m?(0,i.d)(""):new Br(this,e,t,r,s,n).Do():this.cutPolygonPolyline_(t,r,s,n)}progress_(e=!1){}isGoodParentage(e){return e>=0&&e<this.m_maskLookup.length&&this.m_maskLookup[e]}normalizeInputGeometry(e){let t=e.getGeometryType();if(t===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===i.G.enumPoint){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if((0,i.h)(t)){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==i.G.enumMultiPoint&&t!==i.G.enumPolyline&&t!==i.G.enumPolygon&&(0,i.a)("Unexpected geometry type"),e}dissolveNonSimplePolygons(e,t,r,s){(0,i.g)(t>0);let n=new a.E,o=0,l=-1;for(let r=0,s=t;r<s;r++)2===e[r].getDimension()&&(-1===l&&(l=r),e[r].isEmpty()||(o++,n.addGeometry(e[r])));return 0===o?((0,i.g)(l>=0),this.normalizeInputGeometry(e[l])):this.planarSimplifyPolygons(n,r,!0,!1,-1,!0)}dissolveMultiPaths_(e,t,r,s,m,h,g){(0,i.g)(e>=1&&e<=2),(0,i.g)(s>0);let u=8&h?1:2,_=o.r.constructEmpty(),p=0,d=-1,c=!0;for(let t=0,n=s;t<n;t++)if(r[t].getDimension()===e&&(-1===d&&(d=t),!r[t].isEmpty())){d=t,p++;let s=o.r.constructEmpty();if(r[t].queryLooseEnvelope(s),_.mergeEnv3D(s),2===e&&c&&r[t].getGeometryType()===i.G.enumPolygon)if(16&h){let e=r[t].getImpl().getIsSimple(0,[0]),s=this.m_bOGCOutput?5===e:(0,o.i)(e);c&&=s}else{let e=(0,o.j)(r[t],0);c&&=e}}if(p<2&&((0,i.g)(d>=0),0===p||!(16&h)))return this.normalizeInputGeometry(r[d]);if(!c){let e=(0,o.c)(t?null:m,_.getEnvelope2D(),!0);return this.dissolveNonSimplePolygons(r,s,e,h)}let f=r.slice(0,s),x=(0,o.c)(m,_.getEnvelope2D(),!0),P=10*(0,o.f)(x),y=new o.C(0,0);if(g&&(y=(0,o.t)(m,_.getEnvelopeZs(),!0)),1===p&&1===e&&2===u&&!t)return g?((0,i.g)(0),{}):this.m_bOGCOutput?Tr(f[d],x,!1,-1,this.m_progressTracker,u,!1):Nr(f[d],x,!1,!1,-1,this.m_progressTracker,u,!1);let E=new o.D;E.startConstruction();let S=2===e?3:4,C=0;for(let r=0,a=s;r<a;r++){if(f[r].getDimension()!==e||f[r].isEmpty())continue;let s=f[r].getGeometryType();if(s!==i.G.enumEnvelope){if((0,i.h)(s)?(f[r]=this.normalizeInputGeometry(f[r]),s=i.G.enumPolyline):(0,i.g)((0,i.j)(s)),1===e){(0,i.g)(s===i.G.enumPolyline);let e=-1;g?(0,i.g)(0,"3d not implemented yet"):e=f[r].getImpl().getIsSimple(x.total(),[0]),(this.m_bOGCOutput?5!==e:!(0,o.i)(e))&&(t?S=-1:(g?(0,i.g)(0,"3d not implemented yet"):this.m_bOGCOutput?f[r]=Tr(f[r],x,!1,-1,this.m_progressTracker,u,!1):f[r]=Nr(f[r],x,!1,!1,-1,this.m_progressTracker,u,!1),(0,i.g)((0,o.i)(f[r].getImpl().getIsSimple(x.total(),[0])))))}else{(0,i.g)(s===i.G.enumPolygon);let e=f[r].getImpl().getIsSimple(0,[0]);(0,i.g)((0,o.q)(e))}let a=f[r].getImpl();for(let e=0,t=a.getPathCount();e<t;e++){let t=n.Envelope2D.constructEmpty();a.queryLoosePathEnvelope(e,t),t.inflateCoords(P,P),E.addEnvelope(C,t),C++}}else{(0,i.g)(s===i.G.enumEnvelope);let e=n.Envelope2D.constructEmpty();f[r].queryLooseEnvelope(e),e.inflateCoords(P,P),E.addEnvelope(C,e),C++,S=-1}}E.endConstruction();let I=C,v=(0,l.d)(I,-2147483647),G=(0,l.d)(I,-1),w=0;d=-1,C=0;for(let t=0,r=s;t<r;t++){if(f[t].getDimension()!==e||(-1===d&&(d=t),f[t].isEmpty()))continue;d=t,w++;let r=f[t].getGeometryType();if((0,i.j)(r))for(let e=0,r=f[t].getPathCount();e<r;e++)G[C]=t,v[C]=-e-1,C++;else(0,i.g)(r===i.G.enumEnvelope),G[C]=t,v[C]=-1,C++}if(w<2&&2===e)return(0,i.g)(d>=0),this.normalizeInputGeometry(f[d]);let b=I;for(;E.next()&&b>0;){this.progress_();let e=E.getHandleA(),t=E.getHandleB(),r=E.getElement(e),s=E.getElement(t);G[r]!==G[s]&&(v[r]<0&&(b--,v[r]=-(v[r]+1)),v[s]<0&&(b--,v[s]=-(v[s]+1)))}let T,N=new a.E,D=!1,V=0;for(let t=0,r=s;t<r;t++){if(f[t].getDimension()!==e||f[t].isEmpty())continue;let r=f[t].getGeometryType(),s=V,n=0,o=0,l=(0,i.j)(r)?f[t]:null;for(let e=s,r=v.length;e<r&&G[e]===t;e++)v[e]>=0&&(n++,o+=l?l.getPathSize(v[e]):(0,i.v)(f[t])),V++;if(o>.95*(0,i.v)(f[t])){N.addGeometry(this.normalizeInputGeometry(f[t]));for(let e=s;e<V;e++)v[e]<0&&(v[e]=-(v[e]+1))}else{if(0===n){D=!0;continue}{D=!0,(0,i.g)((0,i.j)(r)),(0,i.g)(null!=l);let e=new a.P({vd:f[t].getDescription()}),n=new a.a({vd:f[t].getDescription()}),o=r===i.G.enumPolygon?e:n;for(let e=s;e<V;e++)v[e]>=0&&o.addPath(l,v[e],!0);N.addGeometry(o)}}}if(-1!==N.getFirstGeometry()){let r=2===e,s=t?(0,o.c)(null,_.getEnvelope2D(),!0):x,i=new o.C(0,0);if(g&&(i=t?(0,o.t)(null,_.getEnvelopeZs(),!0):y),2===e&&!(2&h)){N.collapseAllGeometriesToFirst();let e=0,t=null;if(N.hasCurves()&&!N.hasSegmentParentage()){t=new dr;let r=N.getEnvelope2D(this.m_progressTracker);e=_r(s.total()),lr(N,ur(s.total(),r),s.total(),0,t,null,this.m_progressTracker)}(function(e,t,r,s){r>0&&re(e,r,t,!1,s),new Se(s).executeImpl_(e,t)})(N,N.getFirstGeometry(),s.total(),this.m_progressTracker),null!==t&&t.stitchCurves(N,-1,e,!0)}if(g)T=this.planarSimplify3DImpl_(N,s,i,u,!0);else if(2===e)T=this.planarSimplifyPolygons(N,s,r,t,-1,!1);else{let e={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=u,T=this.planarSimplifyPolylines(N,s,t,e,-1)}D||(S=T.getImpl().getIsSimple(s.total(),[0]))}else(0,i.g)(D),(0,i.g)(d>=0),T=2===e?new a.P({vd:f[d].getDescription()}):new a.a({vd:f[d].getDescription()});if(D){let e=0;for(let t=0,r=v.length;t<r;t++){let r=G[t];if(!(r<0)&&v[t]<0){let s=f[r].getGeometryType(),n=(0,i.j)(s)?f[r]:null;if(n){let r=-(v[t]+1);e+=n.getPathSize(r)}else e+=4}}T.reserve(T.getPointCount()+e);for(let e=0,t=v.length;e<t;e++){let t=G[e];if(!(t<0)&&v[e]<0){let r=f[t].getGeometryType(),s=(0,i.j)(r)?f[t]:null;if(s){let t=-(v[e]+1);T.addPath(s,t,!0)}else r===i.G.enumEnvelope?T.addEnvelope(f[t],!1):((0,i.g)((0,i.h)(r)),T.addSegment(f[t],!0))}}}let k=0;if(2===e?-1!==S&&(S=3,k=t?0:x.total()):((0,i.g)(1===e),!t&&-1!==S&&(k=x.total())),g||T.getImpl().setIsSimple(S,k),!t&&D)if(2===e){if(!g)return(new ts).execute(T,m,!1,this.m_progressTracker);(0,i.g)(0,"3d not yet implemented")}else 1===e&&1!==u&&(T=g?((0,i.g)(0),{}):function(e,t,r,s){let n=new Ar(s),o=new a.E,l=o.addGeometry(t),m=n.planarSimplifyNoCrackingAndCluster(e,o,l,r);return(0,i.g)(m,"planar_simplify_no_cracking_and_cluster"),o.getGeometry(l)}(this.m_bOGCOutput,T,u,this.m_progressTracker),T.getImpl().setIsSimple(S,k));return T}dissolveTopoGraphCommonEdges_(){let e=this.m_topoGraph.createUserIndexForHalfEdges(),t=[];for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r)){let s=this.m_topoGraph.getClusterHalfEdge(r),i=s;if(-1!==s)do{if(this.progress_(),1!==this.m_topoGraph.getHalfEdgeUserIndex(i,e)){let r=this.m_topoGraph.getHalfEdgeTwin(i);this.m_topoGraph.setHalfEdgeUserIndex(r,e,1),this.m_topoGraph.setHalfEdgeUserIndex(i,e,1);let s=this.m_topoGraph.getHalfEdgeFaceParentage(i);if(this.isGoodParentage(s)){let e=this.m_topoGraph.getHalfEdgeFaceParentage(r);this.isGoodParentage(e)&&t.push(i)}}i=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(i))}while(i!==s)}this.m_topoGraph.deleteUserIndexForHalfEdges(e),this.m_topoGraph.deleteEdgesBreakFaces_(t)}chooseVertexByOrder(e,t,r,s){let n=(0,l.j)(),a=-1;for(let s=this.m_topoGraph.getClusterVertexIterator(e);-1!==s;s=this.m_topoGraph.incrementVertexIterator(s)){let e=this.m_topoGraph.getVertexFromVertexIterator(s),i=t.getUserIndex(e,r);i>=0&&i<n&&(n=i,a=e)}(0,i.g)(-1!==a);let o=t.getUserIndex(a,s);return o>0&&(t.setUserIndex(a,s,--o),0===o&&t.setUserIndex(a,r,-1)),a}chooseVertexFromCluster_(e,t){return this.m_topoGraph.getVertexDominantFromCluster(e,t)}chooseVertexFromVertexCluster_(e,t){return this.m_topoGraph.getVertexDominant(e,t)}collectPolygonPathsPreservingFrom_(e,t,r,s,n){let o=this.m_topoGraph.getShape();if(o.getGeometryType(e)!==i.G.enumPolygon)return;let l=o.hasSegmentParentage(),m=new a.S;for(let i=o.getFirstPath(e);-1!==i;i=o.getNextPath(i)){let e=o.getFirstVertex(i);this.m_topoGraph.getClusterFromVertex(e);let a=this.m_topoGraph.getHalfEdgeFromVertex(e);if(-1===a)continue;let h=this.m_topoGraph.getHalfEdgeUserIndex(a,r);if(1===h||2===h)continue;let g=this.m_topoGraph.getHalfEdgeFaceParentage(a);if(!this.isGoodParentage(g)){this.m_topoGraph.setHalfEdgeUserIndex(a,r,2);continue}this.m_topoGraph.setHalfEdgeUserIndex(a,r,1);let u=o.insertPath(t,-1);o.setClosedPath(u,!0);let _=a,p=e,d=this.m_topoGraph.getClusterFromVertex(p),c=1;do{this.progress_();let e,t,i=this.chooseVertexFromVertexCluster_(p,n),a=o.addVertex(u,i);if(this.m_topoGraph.isHalfEdgeCurve(_)&&(this.m_topoGraph.querySegmentXY(_,m),o.setSegmentToIndex(o.getVertexIndex(a),m.get().clone())),l){let e=this.m_topoGraph.getSegmentParentage(_);o.setSegmentParentageAndBreak(a,e,this.m_topoGraph.isBreakNode(d))}-1!==s&&this.m_topoGraph.setClusterUserIndex(d,s,1),this.m_topoGraph.setHalfEdgeUserIndex(_,r,1),_=this.m_topoGraph.getHalfEdgeNext(_);do{e=1===c?o.getNextVertex(p):o.getPrevVertex(p),t=-1===e?-1:this.m_topoGraph.getClusterFromVertex(e)}while(t===d);let h=this.m_topoGraph.getHalfEdgeOrigin(_);if(h!==t){do{e=1===c?o.getPrevVertex(p):o.getNextVertex(p),t=-1===e?-1:this.m_topoGraph.getClusterFromVertex(e)}while(t===d);if(h!==t){t=h;let r=this.m_topoGraph.getClusterVertexIterator(t);e=this.m_topoGraph.getVertexFromVertexIterator(r)}else c=-c}d=t,p=e}while(_!==a)}}topoOperationPolygonPolygonHelper_(e,t,r,s,i,n){this.progress_(!0),-1!==e&&this.collectPolygonPathsPreservingFrom_(e,r,i,n,s),-1!==t&&this.collectPolygonPathsPreservingFrom_(t,r,i,n,s);let o=new a.S,l=this.m_topoGraph.getShape();l.dbgVerifyCurves();let m=l.hasSegmentParentage();for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t)continue;let a=t;do{this.progress_();let e=this.m_topoGraph.getHalfEdgeUserIndex(a,i);if(1!==e&&2!==e){let e=this.m_topoGraph.getHalfEdgeFaceParentage(a);if(this.isGoodParentage(e)){let e=l.insertPath(r,-1);l.setClosedPath(e,!0);let t=a;do{let r=this.m_topoGraph.getHalfEdgeVertexIterator(t),a=-1;if(-1!==r)a=this.m_topoGraph.getVertexFromVertexIterator(r);else{let e=this.m_topoGraph.getHalfEdgeVertexIterator(this.m_topoGraph.getHalfEdgeTwin(t));a=this.m_topoGraph.getVertexFromVertexIterator(e),a=l.getNextVertex(a)}let h=this.chooseVertexFromVertexCluster_(a,s),g=l.addVertex(e,h);if(m){let e=this.m_topoGraph.getSegmentParentage(t),r=this.m_topoGraph.getHalfEdgeOrigin(t);l.setSegmentParentageAndBreak(g,e,this.m_topoGraph.isBreakNode(r))}if(this.m_topoGraph.isHalfEdgeCurve(t)&&(this.m_topoGraph.querySegmentXY(t,o),l.setSegmentToIndex(l.getVertexIndex(g),o.get().clone())),this.m_topoGraph.setHalfEdgeUserIndex(t,i,1),-1!==n){let e=this.m_topoGraph.getClusterFromVertex(h);this.m_topoGraph.setClusterUserIndex(e,n,1)}t=this.m_topoGraph.getHalfEdgeNext(t)}while(t!==a)}else this.m_topoGraph.setHalfEdgeUserIndex(a,i,2)}a=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(a))}while(a!==t)}}topoOperationPolygonPolygon_(e,t,r,s=!1){this.dissolveTopoGraphCommonEdges_();let n=this.m_topoGraph.getShape(),a=n.createGeometry(i.G.enumPolygon),o=this.m_topoGraph.createUserIndexForHalfEdges();return this.topoOperationPolygonPolygonHelper_(e,t,a,r,o,-1),this.m_topoGraph.deleteUserIndexForHalfEdges(o),s||He(n,a,3,this.m_bOGCOutput,-1,this.m_progressTracker),a}topoOperationPolyline_(e,t){let r={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return r.ogcRule=t,r.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(-1,e,!1,r).first}topoOperationMultiPoint_(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(i.G.enumMultiPoint),r=e.insertPath(t,-1);for(let t=this.m_topoGraph.getFirstCluster();-1!==t;t=this.m_topoGraph.getNextCluster(t)){let s=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(s)){let s=-1;for(let r=this.m_topoGraph.getClusterVertexIterator(t);-1!==r;r=this.m_topoGraph.incrementVertexIterator(r)){let t=this.m_topoGraph.getVertexFromVertexIterator(r);-1===s&&(s=t);let i=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(i);if(this.isGoodParentage(n)){s=t;break}}e.addVertex(r,s)}}return t}intersection(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=(0,i.u)(r),a=(0,i.u)(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o|l]=!0;let m=-1;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(m=e),2===n&&2===a?this.topoOperationPolygonPolygon_(e,t,m):1===n&&a>0||1===a&&n>0?this.topoOperationPolyline_(m,this.m_bOGCOutput):0===n||0===a?this.topoOperationMultiPoint_():void(0,i.d)("")}topoOperationPolygonPolygonEx(e,t,r){let s=this.m_topoGraph.getShape(),n=s.createGeometry(i.G.enumPolygon),o=s.createGeometry(i.G.enumPolyline),l=s.createGeometry(i.G.enumMultiPoint);this.dissolveTopoGraphCommonEdges_();let m=-1,h=this.m_topoGraph.createUserIndexForHalfEdges(),g=this.m_topoGraph.createUserIndexForClusters();s.dbgVerifyCurves(),this.topoOperationPolygonPolygonHelper_(e,t,n,r,h,g),s.dbgVerifyCurves();let u=s.hasSegmentParentage(),_=new a.S;for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t)continue;let i=t;do{let t=this.m_topoGraph.getHalfEdgeUserIndex(i,h),n=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(i),h),a=t|n;if(2===a){let l=this.m_topoGraph.getHalfEdgeParentage(i);if(this.isGoodParentage(l)){let m=s.insertPath(o,-1),p=i,d=this.chooseVertexFromCluster_(e,r),c=s.addVertex(m,d);if(u){let e=this.m_topoGraph.getSegmentParentage(i),t=this.m_topoGraph.getHalfEdgeOrigin(i);s.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}this.m_topoGraph.isHalfEdgeCurve(i)&&(this.m_topoGraph.querySegmentXY(i,_),s.setSegmentToIndex(s.getVertexIndex(c),_.get().clone())),this.m_topoGraph.setClusterUserIndex(e,g,1);do{this.progress_();let e=this.m_topoGraph.getHalfEdgeTo(p),o=this.chooseVertexFromCluster_(e,r);if(c=s.addVertex(m,o),u){let e=this.m_topoGraph.getSegmentParentage(i),t=this.m_topoGraph.getHalfEdgeOrigin(i);s.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}if(this.m_topoGraph.setHalfEdgeUserIndex(p,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h,1),this.m_topoGraph.setClusterUserIndex(e,g,1),p=this.m_topoGraph.getHalfEdgeNext(p),t=this.m_topoGraph.getHalfEdgeUserIndex(p,h),n=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h),a=t|n,2!==a)break;if(l=this.m_topoGraph.getHalfEdgeParentage(p),!this.isGoodParentage(l)){this.m_topoGraph.setHalfEdgeUserIndex(p,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h,1);break}this.m_topoGraph.isHalfEdgeCurve(i)&&p!==i&&(this.m_topoGraph.querySegmentXY(i,_),s.setSegmentToIndex(s.getVertexIndex(c),_.get().clone()))}while(p!==i)}else this.m_topoGraph.setHalfEdgeUserIndex(i,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(i),h,1)}i=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(i))}while(i!==t)}for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){if(this.progress_(),1===this.m_topoGraph.getClusterUserIndex(e,g))continue;let t=this.m_topoGraph.getClusterParentage(e);if(this.isGoodParentage(t)){-1===m&&(m=s.insertPath(l,-1));let t=this.m_topoGraph.getClusterVertexIterator(e),i=-1;if(-1!==t){i=this.m_topoGraph.getVertexFromVertexIterator(t);let e=this.chooseVertexFromVertexCluster_(i,r);s.addVertex(m,e)}}}this.m_topoGraph.deleteUserIndexForClusters(g),this.m_topoGraph.deleteUserIndexForHalfEdges(h),s.dbgVerifyCurves(),He(s,n,3,this.m_bOGCOutput,-1,this.m_progressTracker);let p=[-1,-1,-1];return p[0]=l,p[1]=o,p[2]=n,p}topoOperationPolylinePolylineOrPolygonEx(e,t){let r={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return r.ogcRule=t,r.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(-1,e,!0,r)}topoOperationMultiPoint(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(i.G.enumMultiPoint),r=e.insertPath(t,-1);for(let t=this.m_topoGraph.getFirstCluster();-1!==t;t=this.m_topoGraph.getNextCluster(t)){let s=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(s)){let s=-1;for(let r=this.m_topoGraph.getClusterVertexIterator(t);-1!==r;r=this.m_topoGraph.incrementVertexIterator(r)){let t=this.m_topoGraph.getVertexFromVertexIterator(r);-1===s&&(s=t);let i=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(i);if(this.isGoodParentage(n)){s=t;break}}e.addVertex(r,s)}}return t}intersectionEx(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=wr(r),a=wr(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o|l]=!0;let m=-1;if(this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(m=e),2===n&&2===a)return this.topoOperationPolygonPolygonEx(e,t,m);if(1===n&&a>0||1===a&&n>0){let{first:e,second:t}=this.topoOperationPolylinePolylineOrPolygonEx(m,this.m_bOGCOutput);return[t,e]}if(0===n||0===a){let e=[];return e.push(this.topoOperationMultiPoint()),e}(0,i.d)("")}getCombinedHalfEdgeParentage(e){return this.m_topoGraph.getHalfEdgeParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e))}prevailingDirection(e,t){let r=this.getCombinedHalfEdgeParentage(t),s=this.m_topoGraph.getHalfEdgeOrigin(t),i=this.m_topoGraph.getHalfEdgeTo(t),n=0,a=0;for(let o=this.m_topoGraph.getClusterVertexIterator(s);-1!==o;o=this.m_topoGraph.incrementVertexIterator(o)){let s=this.m_topoGraph.getVertexFromVertexIterator(o),l=e.getPathFromVertex(s),m=e.getGeometryFromPath(l),h=this.m_topoGraph.getGeometryID(m),g=e.getFirstVertex(l),u=0!==(h&r);u&&g===s&&(this.m_fromEdgeForPolylines=t);let _=e.getNextVertex(s);if(-1!==_&&this.m_topoGraph.getClusterFromVertex(_)===i){if(n++,u){if(-1===this.m_fromEdgeForPolylines&&g===_){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a++}}else{let r=e.getPrevVertex(s);if(-1!==r&&this.m_topoGraph.getClusterFromVertex(r)===i&&(n--,u)){if(-1===this.m_fromEdgeForPolylines&&g===r){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a--}}}return this.m_topoGraph.queryXY(s,this.m_dummyPt1),this.m_topoGraph.queryXY(i,this.m_dummyPt2),(0===a?n:a)*l.P.distance(this.m_dummyPt1,this.m_dummyPt2)}tryMoveThroughCrossroadBackwards(e,t){let r=this.m_topoGraph.getHalfEdgePrev(e),s=this.m_topoGraph.getHalfEdgeTwin(r);if(!t){if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e)))return-1;let t=this.m_topoGraph.getHalfEdgeTwin(e);if(s===this.m_topoGraph.getHalfEdgeNext(t))return r}let i=s,n=-1;for(;i!==e;){let e=this.getCombinedHalfEdgeParentage(i);if(this.isGoodParentage(e)){if(-1!==n)return-1;n=this.m_topoGraph.getHalfEdgeTwin(i)}i=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgePrev(i))}return n}tryMoveThroughCrossroadForward(e,t){let r=this.m_topoGraph.getHalfEdgeNext(e),s=this.m_topoGraph.getHalfEdgeTwin(r);if(!t){let t=this.m_topoGraph.getHalfEdgeTwin(e);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(t)))return-1;if(s===this.m_topoGraph.getHalfEdgePrev(t))return r}let i=s,n=-1;for(;i!==e;){let e=this.getCombinedHalfEdgeParentage(i);if(this.isGoodParentage(e)){if(-1!==n)return-1;n=this.m_topoGraph.getHalfEdgeTwin(i)}i=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgeNext(i))}return n}isOnALoop(e,t){let r=e,s=2*this.m_topoGraph.getShape().getTotalPointCount()+10;for(let i=0;i<s;i++){if(1===this.m_topoGraph.getHalfEdgeUserIndex(r,t))return!1;let s=this.m_topoGraph.getHalfEdgeNext(r);if(s===this.m_topoGraph.getHalfEdgeTwin(r))return!1;if(r=s,r===e)return!0}(0,i.d)("is_on_a_loop_")}restorePolylineParts(e,t,r,s,n,o,m,h,g,u){(0,i.g)(-1===n&&o>=0&&m>=0||-1===o&&-1===m),(0,i.g)(-1===h&&1!==u.unsplitBehavior||-1!==h&&1===u.unsplitBehavior);let _=u.ogcRule,p=u.allCrossRoadsImpassable,d=1===u.unsplitBehavior,c=0===u.unsplitBehavior,f=this.m_topoGraph.getShape(),x=f.hasSegmentParentage(),P=e,y=this.m_topoGraph.getHalfEdgeTwin(P),E=new a.S;this.m_fromEdgeForPolylines=-1;let S=this.prevailingDirection(f,P),C=P,I=-1,v=!1,G=!1,w=!1;if(!d)for(;;){let t=this.m_topoGraph.getHalfEdgePrev(P);if(t===y){w=!0;break}let s=this.m_topoGraph.getHalfEdgeNext(y);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(s))){v=!0;break}if(this.m_topoGraph.getHalfEdgeTwin(t)!==s){if(p){v=!0;break}if(P=this.tryMoveThroughCrossroadBackwards(P,!0),-1===P){v=!0;break}y=this.m_topoGraph.getHalfEdgeTwin(P)}else P=t,y=s;if(1===this.m_topoGraph.getHalfEdgeUserIndex(P,r)){w=!0;break}if(P===e){I=e,G=!0;break}let i=this.getCombinedHalfEdgeParentage(P);if(!this.isGoodParentage(i))break;C=P,S+=this.prevailingDirection(f,P)}if(-1===I){for(P=e,y=this.m_topoGraph.getHalfEdgeTwin(P),I=P;;){let e=this.m_topoGraph.getHalfEdgeNext(P),t=this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e));if(t){v=!0;break}if(e===y){w=!0;break}if(-1!==h){let e=this.m_topoGraph.getHalfEdgeOrigin(y);if(1===this.m_topoGraph.getClusterUserIndex(e,h)){v=!0;break}}let s=this.m_topoGraph.getHalfEdgePrev(y);if(this.m_topoGraph.getHalfEdgeTwin(e)!==s){if(t||p){v=!0;break}if(P=this.tryMoveThroughCrossroadForward(P,!0),-1===P){v=!0;break}y=this.m_topoGraph.getHalfEdgeTwin(P)}else P=e,y=s;if(1===this.m_topoGraph.getHalfEdgeUserIndex(P,r)){w=!0;break}let i=this.getCombinedHalfEdgeParentage(P);if(!this.isGoodParentage(i))break;I=P,S+=this.prevailingDirection(f,P)}let t=this.m_topoGraph.getHalfEdgeOrigin(C);G=this.m_topoGraph.getHalfEdgeTo(I)===t}else if(-1!==this.m_fromEdgeForPolylines){C=e,I=this.tryMoveThroughCrossroadBackwards(C,!1),(0,i.g)(-1!==I);let t=this.m_topoGraph.getHalfEdgeTwin(C);this.m_topoGraph.getHalfEdgeNext(t)}let b=G;!G&&!w&&g&&(b=this.isOnALoop(e,r),b||=this.isOnALoop(y,r));let T=S>=0,N=!1;b&&v&&(G?(N=_,T&&(N||d||c)&&C!==e&&((0,i.g)(!d),C=e,N=!1)):(d||T&&c)&&(C=e));let D=0;for(P=C;y=this.m_topoGraph.getHalfEdgeTwin(P),this.m_topoGraph.setHalfEdgeUserIndex(P,r,1),this.m_topoGraph.setHalfEdgeUserIndex(y,r,1),D++,P!==I;)P=p?this.m_topoGraph.getHalfEdgeNext(P):this.tryMoveThroughCrossroadForward(P,!1);T||(I=(0,l.c)(C,C=I),I=this.m_topoGraph.getHalfEdgeTwin(I),C=this.m_topoGraph.getHalfEdgeTwin(C));let V=f.insertPath(t,-1);P=C;let k,F=this.m_topoGraph.getHalfEdgeOrigin(C);k=-1===o?this.chooseVertexFromCluster_(F,n):this.chooseVertexByOrder(F,f,o,m),this.m_topoGraph.isStrongPathNode(F)&&f.setStrongPathStart(V,!0);let H=f.addVertex(V,k),A=H;-1!==s&&this.m_topoGraph.setClusterUserIndex(F,s,1);let M=0,U=N?Math.trunc((D+1)/2):-1,q=-1,B=!0,O=-1;for(;;){if(x){let e=this.m_topoGraph.getSegmentParentage(P),t=this.m_topoGraph.getHalfEdgeOrigin(P);f.setSegmentParentageAndBreak(A,e,B||this.m_topoGraph.isBreakNode(t))}B=!1,this.m_topoGraph.isHalfEdgeCurve(P)&&(this.m_topoGraph.querySegmentXY(P,E),f.setSegmentToIndex(f.getVertexIndex(A),E.get().clone())),-1!==q&&-1!==m&&f.addToUserIndex(q,m,-1);let e,r=p?this.m_topoGraph.getHalfEdgeNext(P):this.tryMoveThroughCrossroadForward(P,!1),i=this.m_topoGraph.getHalfEdgeTo(P);if(e=-1===o?this.chooseVertexFromCluster_(i,n):this.chooseVertexByOrder(i,f,o,m),H=f.addVertex(V,e),O=i,-1!==s&&this.m_topoGraph.setClusterUserIndex(i,s,1),x&&this.m_topoGraph.isBreakNode(i)&&f.setSegmentParentageBreakVertex(H,!0),q=e,M++,N&&M===U&&(V=f.insertPath(t,-1),H=f.addVertex(V,e),B=!0,-1!==m&&f.addToUserIndex(e,m,-1),q=-1),P===I)break;P=r,A=H}-1!==O&&this.m_topoGraph.isStrongPathNode(O)&&f.setStrongPathEnd(V,!0)}topoOperationPolylineSimplify_(e,t){return this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,t,r,s){(0,i.g)(-1===t||-1===e);let n=this.m_topoGraph.getShape(),a=t=>-1===e?-1===t?n.getFirstGeometry():n.getNextGeometry(t):-1===t?e:-1,o=n.createGeometry(i.G.enumPolyline),m=-1;r&&(m=this.m_topoGraph.createUserIndexForClusters());let h=this.m_topoGraph.createUserIndexForHalfEdges(),g=-1===t?n.createUserIndex():-1,u=-1===t?n.createUserIndex():-1,_=-1;if(1===s.unsplitBehavior){_=this.m_topoGraph.createUserIndexForClusters();for(let e=a(-1);-1!==e;e=a(e))for(let t=n.getFirstPath(e);-1!==t;t=n.getNextPath(t)){{let e=n.getFirstVertex(t),r=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(r,_,1)}if(!n.isClosedPath(t)){let e=n.getLastVertex(t),r=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(r,_,1)}}}if(-1===t){let e=0;for(let t=a(-1);-1!==t;t=a(t))for(let r=n.getFirstPath(t);-1!==r;r=n.getNextPath(r))if(n.isClosedPath(r)){let t=n.getFirstVertex(r);for(let s=0,i=n.getPathSize(r);s<i;s++,t=n.getNextVertex(t))n.setUserIndex(t,g,e++),n.setUserIndex(t,u,2)}else{let t=n.getFirstVertex(r);n.setUserIndex(t,g,e++),n.setUserIndex(t,u,1);let s=n.getNextVertex(t);for(let t=1,i=n.getPathSize(r)-1;t<i;++t)n.setUserIndex(s,g,e++),n.setUserIndex(s,u,2),s=n.getNextVertex(s);n.setUserIndex(s,g,e++),n.setUserIndex(s,u,1)}}for(let e=a(-1);-1!==e;e=a(e))for(let r=n.getFirstPath(e);-1!==r;r=n.getNextPath(r)){let e=n.getFirstVertex(r);for(let i=0,a=n.getPathSize(r);i<a;i++,e=n.getNextVertex(e)){let r=this.m_topoGraph.getHalfEdgeFromVertex(e);if(-1===r||1===this.m_topoGraph.getHalfEdgeUserIndex(r,h))continue;let n=this.getCombinedHalfEdgeParentage(r);if(this.isGoodParentage(n)){let e=0===i;this.restorePolylineParts(r,o,h,m,t,g,u,_,e,s)}}}let p=-1;if(r){p=n.createGeometry(i.G.enumMultiPoint);let e=-1;for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r))if(this.progress_(),1!==this.m_topoGraph.getClusterUserIndex(r,m)){let s=this.m_topoGraph.getClusterParentage(r);if(this.isGoodParentage(s)){-1===e&&(e=n.insertPath(p,-1));let s=this.m_topoGraph.getClusterVertexIterator(r);if(-1!==s){let i;this.m_topoGraph.getVertexFromVertexIterator(s),i=-1===g?this.chooseVertexFromCluster_(r,t):this.chooseVertexByOrder(r,n,g,u),n.addVertex(e,i)}}}}return-1!==u&&n.removeUserIndex(u),-1!==g&&n.removeUserIndex(g),-1!==m&&n.removeUserIndex(m),this.m_topoGraph.deleteUserIndexForHalfEdges(h),(0,l.o)(o,p)}difference(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=(0,i.u)(r),a=(0,i.u)(s);if(n>a)return e;let o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);if(this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o]=!0,2===n&&2===a){let r=-1;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(r=e),this.topoOperationPolygonPolygon_(e,t,r)}if(1===n&&2===a){let t={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}if(1===n&&1===a){let t={unsplitBehavior:0,allCrossRoadsImpassable:!0,ogcRule:!1};return t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}if(0===n)return this.topoOperationMultiPoint_();(0,i.d)("")}symmetricDifference(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=wr(r),a=wr(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);return(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o]=!0,this.m_maskLookup[o]=!0,this.m_maskLookup[l]=!0,2===n&&2===a?this.topoOperationPolygonPolygon_(e,t,-1):1===n&&1===a?this.topoOperationPolyline_(-1,this.m_bOGCOutput):0===n&&0===a?this.topoOperationMultiPoint():void(0,i.d)("")}planarSimplifyNoCrackingAndCluster(e,t,r,s){this.m_bOGCOutput=e,this.m_topoGraph=new K;let n=t.getFillRule(r),a=t.getGeometryType(r);if(1!==n||a===i.G.enumMultiPoint?this.m_topoGraph.setAndSimplifyEditShapeAlternate(t,r,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeWinding(t,r,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return!1;this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let o=this.m_topoGraph.getGeometryID(r);if((0,i.g)(o>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=o+1,this.m_maskLookup[o]=!0,t.getGeometryType(r)===i.G.enumPolygon||1===n&&t.getGeometryType(r)!==i.G.enumMultiPoint){t.setFillRule(r,0);let i=this.topoOperationPolygonPolygon_(r,-1,-1);if(t.swapGeometry(i,r),t.removeGeometry(i),1===n&&this.m_bOGCOutput)return this.planarSimplifyNoCrackingAndCluster(e,t,r,s)}else if(t.getGeometryType(r)===i.G.enumPolyline){let e={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=s;let i=this.topoOperationPolylineSimplify_(t.getFirstGeometry(),e);t.swapGeometry(i,r),t.removeGeometry(i)}else if(t.getGeometryType(r)===i.G.enumMultiPoint){let e=this.topoOperationMultiPoint_();t.swapGeometry(e,r),t.removeGeometry(e)}else(0,i.d)("");return!0}unsplitPolylineExact(e){return(0,i.g)(0),new a.a}planarSimplifyPolylines(e,t,r,s,n){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let r=e.getGeometryType(t);(0,i.g)(r===i.G.enumPolyline)}let a=0,o=0,l=null;if(e.hasCurves()&&!e.hasSegmentParentage()){l=new dr;let r=e.getEnvelope2D(this.m_progressTracker);o=_r(t.total());let s=ur(t.total(),r);a=pr(s,o),lr(e,s,t.total(),0,l,null,this.m_progressTracker)}{let r=yr(t.add(a));e.filterClosePoints(r,!1,!1,!1,-1)}if(this.m_topoGraph=new K,4!==n&&5!==n)if(null===l&&r){let s=new ye(this.m_progressTracker,!1);s.sweepVertical(e,t.total()),s.hadComplications()?(fr(e,t,this.m_progressTracker,!0,!1),r=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else fr(e,t.add(a),this.m_progressTracker,!0,!1),r=!1;else r=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let m=e.getFirstGeometry();if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,m,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(r&&null===l),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolylines(e,t,!1,s,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let h=this.m_topoGraph.getGeometryID(m);(0,i.g)(h>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=h+1,this.m_maskLookup[h]=!0;let g=this.topoOperationPolylineSimplify_(e.getFirstGeometry(),s);null!==l&&l.stitchCurves(e,g,o,!0);let u=e.getGeometry(g);return r||u.getImpl().setIsSimple(4,t.total()),u}planarSimplifyMultiPoints(e,t,r,s){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let r=e.getGeometryType(t);(0,i.g)(r===i.G.enumMultiPoint)}this.m_topoGraph=new K,4!==s&&5!==s&&fr(e,t,this.m_progressTracker,!0,!1),e.removeSelection(),e.collapseAllGeometriesToFirst();let n=e.getFirstGeometry();if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,n,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(false),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyMultiPoints(e,t,!1,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let a=this.m_topoGraph.getGeometryID(n);(0,i.g)(a>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=a+1,this.m_maskLookup[a]=!0;let o=this.topoOperationMultiPoint(),l=e.getGeometry(o);return l.getImpl().setIsSimple(4,t.total()),l}planarSimplifyPolygons(e,t,r,s,n,a){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let s=e.getGeometryType(t);(0,i.g)(s===i.G.enumPolygon||s===i.G.enumPolyline&&r)}let o=0,l=0,m=null;if(e.hasCurves()&&!e.hasSegmentParentage()){m=new dr;let r=e.getEnvelope2D(this.m_progressTracker);l=_r(t.total());let s=ur(t.total(),r);o=pr(s,l),lr(e,s,t.total(),0,m,null,this.m_progressTracker)}if(a){fr(e,t.add(o),this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,!1,-1,this.m_progressTracker)}if(this.m_topoGraph=new K,a||4===n||5===n)s=!1;else if(null===m&&s){let r=new ye(this.m_progressTracker,!1);r.sweepVertical(e,t.total()),r.hadComplications()?(fr(e,t,this.m_progressTracker,!0,!1),s=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else fr(e,t.add(o),this.m_progressTracker,!0,!1),s=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let h=e.getFirstGeometry();if(r?this.m_topoGraph.setAndSimplifyEditShapeWinding(e,h,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,h,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(s&&null===m),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolygons(e,t,r,!1,-1,!1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let g=this.m_topoGraph.getGeometryID(h);(0,i.g)(g>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=g+1,this.m_maskLookup[g]=!0,e.setFillRule(h,0);let u=this.m_bOGCOutput&&r,_=u,p=this.topoOperationPolygonPolygon_(h,-1,-1,_);u&&(this.m_topoGraph.removeShape(),this.m_topoGraph=null,e.removeGeometry(h),this.m_topoGraph=new K,this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,p,this.m_progressTracker),p=this.topoOperationPolygonPolygon_(p,-1,-1,!1)),null!==m&&m.stitchCurves(e,p,l,!0);let d=e.getGeometry(p);return d.setFillRule(0),s?d.getImpl().setIsSimple(3,0):(d.getImpl().setIsSimple(4,t.total()),d.getImpl().updateOGCFlagsProtected()),d}planarSimplify3DImpl_(e,t,r,s,n){return(0,i.g)(0),{}}planarSimplifyImpl_(e,t,r,s,n,l,m,h){if(e.isEmpty())return e.clone();let g=e.getGeometryType(),u=new a.E,_=u.addGeometry(e);if((0,o.q)(n)&&g===i.G.enumPolygon&&(r=!1,u.setFillRule(_,0)),h&&(e.hasAttribute(1)&&u.replaceNaNs(1,0),u.removeNaNVertices()),g===i.G.enumPolygon||g===i.G.enumPolyline&&r)return this.planarSimplifyPolygons(u,t,r,s,n,!1);if(g===a.a.type){let e={unsplitBehavior:0,allCrossRoadsImpassable:!0,ogcRule:!1};return e.ogcRule=this.m_bOGCOutput,e.unsplitBehavior=m,this.planarSimplifyPolylines(u,t,s,e,n)}if(g===i.G.enumMultiPoint)return this.planarSimplifyMultiPoints(u,t,s,n);(0,i.d)("what else?")}}function Mr(e,t,r,s){let n=e.getGeometryType();if(n===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(n===i.G.enumPoint&&("|"===s||"^"===s)){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(n===i.G.enumLine){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}if(n===i.G.enumMultiPoint&&"-"===s&&t.getGeometryType()===i.G.enumPoint){let t=new o.P({vd:e.getDescription()});return e.isEmpty()||e.getPointByVal(0,t),t}if(n===i.G.enumMultiPoint&&"&"===s&&t.getGeometryType()===i.G.enumPoint){let t=new o.P({vd:e.getDescription()});return e.isEmpty()||e.getPointByVal(0,t),t}return e}function Ur(e){let t=e.getGeometryType();if(t===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===i.G.enumPoint){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(Gr(t)){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==i.G.enumMultiPoint&&t!==i.G.enumPolyline&&t!==i.G.enumPolygon&&(0,i.a)("Unexpected geometry type"),e}function qr(e,t,r,s){let n=-1===r?e.getClusterHalfEdge(t):r,a=n;(0,i.g)(e.getHalfEdgeOrigin(n)===t);do{s(a),a=e.getHalfEdgeNext(e.getHalfEdgeTwin(a))}while(a!==n)}class Br{m_rParent;m_rTopoGraph;m_rShape;m_rCutHandles;m_IDCuttee;m_IDCutter;m_IDBoth;m_sideIndex;m_cutteeBreadcrumbsIndex;m_clusterParentageIndex;m_cuttee;m_cutter;m_bConsiderTouch;constructor(e,t,r,s,i,n){this.m_rParent=e,this.m_rTopoGraph=e.m_topoGraph,this.m_rShape=this.m_rTopoGraph.getShape(),this.m_IDCuttee=this.m_rTopoGraph.getGeometryID(s),this.m_IDCutter=this.m_rTopoGraph.getGeometryID(i),this.m_IDBoth=this.m_IDCuttee|this.m_IDCutter,this.m_bConsiderTouch=t,this.m_sideIndex=r,this.m_cuttee=s,this.m_cutter=i,this.m_rCutHandles=n,this.m_cutteeBreadcrumbsIndex=this.m_rShape.createUserIndexUninitialized(),this.m_clusterParentageIndex=this.m_rShape.createUserIndexUninitialized();for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let t=0,r=this.m_rShape.getPathSize(e);for(let s=this.m_rShape.getFirstVertex(e);t<r;t++,s=this.m_rShape.getNextVertex(s))this.m_rShape.setUserIndex(s,this.m_clusterParentageIndex,this.m_rTopoGraph.getClusterParentage(this.m_rTopoGraph.getClusterFromVertex(s)))}}Do(){this.cutPolylinePolyline_(),this.m_rShape.removeUserIndex(this.m_cutteeBreadcrumbsIndex),this.m_rShape.removeUserIndex(this.m_clusterParentageIndex)}setTbd(e){return 8|e}classifyStandardCut(e,t,r,s){let i=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=-1===i?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i)),o=-1===n?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),m=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s)),h=1,g=32,u=32;if(qr(this.m_rTopoGraph,t,m,e=>{e===l&&(h=2),e===a&&(g=h),e===o&&(u=h)}),this.m_bConsiderTouch)32!==g&&this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|g),32!==u&&this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u);else{if(32===g||32===u||g===u&&a!==l&&a!==m&&o!==l&&o!==m)return 1;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|g),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u)}return 0}classifyTouchCut(e,t,r,s){let i=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=-1===i?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i)),o=-1===n?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=-1===r?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),m=-1===s?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s));if(!this.m_bConsiderTouch){let t;return(t=l===a||m===a)?this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))):(t=l===o||m===o)&&this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),+!t}if(-1===a)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(-1===o)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;if(a===o)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(-1!==m){if(a===m)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===m)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;let r=1;qr(this.m_rTopoGraph,t,m,t=>{if(t===a){let e=this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,e),r=2}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),r=2}})}else{if(a===l)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===l)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;let r=2;qr(this.m_rTopoGraph,t,l,t=>{if(t===a){let e=this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,e),r=1}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),r=1}})}return 0}classifyCutVertex(e,t){let r=0,s=0;for(let i=this.m_rTopoGraph.getClusterVertexIterator(t);-1!==i;i=this.m_rTopoGraph.incrementVertexIterator(i)){let n=this.m_rTopoGraph.getVertexFromVertexIterator(i);if(this.m_rShape.getGeometryFromVertex(n)===this.m_cutter){s++;let i=this.m_rShape.getPrevVertex(n),a=this.m_rShape.getNextVertex(n);r+=-1===i||-1===a?this.classifyTouchCut(e,t,i,a):this.classifyStandardCut(e,t,i,a)}}s&&r===s&&!this.m_bConsiderTouch&&this.m_rShape.setUserIndex(e,this.m_clusterParentageIndex,this.m_IDCuttee)}cutPolylinePolyline_(){this.m_rShape.getGeometryType(this.m_cuttee),this.m_rShape.getGeometryType(this.m_cutter),this.m_rParent.m_maskLookup.length=0,this.m_rParent.m_maskLookup.length=this.m_IDBoth+1,this.m_rParent.m_maskLookup[this.m_IDBoth]=!0;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let t=this.m_rShape.getPathSize(e),r=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,r=this.m_rShape.getNextVertex(r))this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,0);r=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,r=this.m_rShape.getNextVertex(r)){let e=this.m_rTopoGraph.getClusterFromVertex(r);this.m_rTopoGraph.getClusterParentage(e)===this.m_IDBoth&&this.classifyCutVertex(r,e)}}let e=(e,t)=>{let r=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex),s=this.m_rTopoGraph.getHalfEdgeConnector(this.m_rTopoGraph.getClusterFromVertex(e),this.m_rTopoGraph.getClusterFromVertex(t));return(this.m_rTopoGraph.getHalfEdgeParentage(s)&this.m_IDBoth)===this.m_IDBoth&&(r|=4),r};for(let t=this.m_rShape.getFirstPath(this.m_cuttee);-1!==t;t=this.m_rShape.getNextPath(t)){let r=this.m_rShape.getFirstVertex(t),s=this.m_rShape.isClosedPath(t),i=this.m_rShape.getPathSize(t)+ +!!s,n=1,a=32;for(let t=this.m_rShape.getNextVertex(r);n<i;++n,r=t,t=this.m_rShape.getNextVertex(t)){let s=e(r,t);this.m_rShape.getUserIndex(r,this.m_clusterParentageIndex)===this.m_IDBoth&&(a=s),32!==a&&this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,a|s)}r=this.m_rShape.getLastVertex(t);let o=32;n=1;for(let t=this.m_rShape.getPrevVertex(r);n<i;++n,r=t,t=this.m_rShape.getPrevVertex(t)){let s=e(t,r);this.m_rShape.getUserIndex(r,this.m_clusterParentageIndex)===this.m_IDBoth&&(o=s),32!==o&&this.m_rShape.setUserIndex(t,this.m_cutteeBreadcrumbsIndex,o|s)}}let t=-1,r=-1,s=32,n=this.m_rShape.hasSegmentParentage(),o=new a.S;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let a=this.m_rShape.isClosedPath(e),l=this.m_rShape.getPathSize(e)+ +!!a,m=1,h=this.m_rShape.getFirstVertex(e),g=-1,u=!0;for(let e=this.m_rShape.getNextVertex(h);m<l;++m,e=this.m_rShape.getNextVertex(e)){let a=this.m_rShape.getUserIndex(h,this.m_cutteeBreadcrumbsIndex);8===a?a=3:(a&=-9,4&a?a=4:!(3&~a)&&(a=3)),a===s?this.m_rShape.getUserIndex(h,this.m_clusterParentageIndex)===this.m_IDBoth&&4!==a&&(g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),r=this.m_rShape.insertPath(t,-1),u=!0):(-1!==t&&(g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,s)),t=this.m_rShape.createGeometry(i.G.enumPolyline),r=this.m_rShape.insertPath(t,-1),s=a,u=!0),g=this.m_rShape.addVertex(r,h);let l=this.m_rTopoGraph.getClusterFromVertex(h);!u&&n&&this.m_rTopoGraph.isBreakNode(l)&&this.m_rShape.setSegmentParentageBreakVertex(g,!0);let m=this.m_rTopoGraph.getHalfEdgeFromVertex(h);if(n){let e=this.m_rTopoGraph.getSegmentParentage(m);this.m_rShape.setSegmentParentageAndBreak(g,e,u||this.m_rTopoGraph.isBreakNode(l))}this.m_rTopoGraph.isHalfEdgeCurve(m)&&(this.m_rTopoGraph.querySegmentXY(m,o),this.m_rShape.setSegmentToIndex(this.m_rShape.getVertexIndex(g),o.get().clone())),h=e,u=!1}g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,s),t=-1,r=-1,s=32}}}function Or(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=new n.Envelope2D;return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Or(n,t,r,s,l)}(0,i.w)(m),(0,i.i)(m)||(0,i.t)("OGC simplify is not implemented for this geometry type");let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if(5===u||0===u)return u;let _=new es(e,t,u,l,!0);return m===i.G.enumMultiPoint||m===i.G.enumPolyline||m===i.G.enumPolygon?(u=_.isSimplePlanarImpl(),(0,o.i)(u)&&(u=5)):(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}function Yr(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=n.Envelope2D.constructEmpty();return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Yr(n,t,r,s,l)}let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if(-1!==u)return u;let _=new es(e,t,u,l,!1);return m===i.G.enumMultiPoint?u=_.multipointIsSimpleAsFeature():m===i.G.enumPolyline?u=_.polylineIsSimpleAsFeature():m===i.G.enumPolygon?u=_.polygonIsSimpleAsFeature():(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}function Xr(e,t,r,s){if(e.isEmpty())return e;let l=e.getGeometryType();if(l===i.G.enumPoint){let t=new c;if(Lr(e,t),3===t.m_reason){let t=e.clone();return t.replaceNaNs(1,0),t}return 2===t.m_reason?e.createInstance():e}if(l===i.G.enumEnvelope){let r=(0,o.e)(t,e,!0).total(),s=e,i=n.Envelope2D.constructEmpty();return s.queryEnvelope(i),i.isDegenerate(r)?s.createInstance():e}if((0,i.h)(l)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Xr(n,t,r,s)}(0,i.w)(l);let m=(0,o.e)(t,e,!1).total(),h=e.getImpl().getIsSimple(m,[0]),g=r?-1:h;if((0,o.i)(g)){if(l===i.G.enumPolygon&&0!==e.getFillRule()){let t=e.clone();return t.setFillRule(0),t}return e}if((l===i.G.enumMultiPoint||l===i.G.enumPolyline)&&g>=1)return e;let u,_=new es(e,t,g,s,!1);return l===i.G.enumMultiPoint?u=_.multipointSimplifyAsFeature():l===i.G.enumPolyline?u=_.polylineSimplifyAsFeature():l===i.G.enumPolygon?u=_.polygonSimplifyAsFeature():(0,i.d)(""),u}function Rr(e,t,r,s){if(e.isEmpty())return e;let l=e.getGeometryType();if(l===i.G.enumPoint){let t=new c;if(Lr(e,t),3===t.m_reason){let t=e.clone();return t.replaceNaNs(1,0),t}return 2===t.m_reason?e.createInstance():e}if(l===i.G.enumEnvelope){let r=e,s=new n.Envelope2D;r.queryEnvelope(s);let i=(0,o.e)(t,e,!0).total();return s.isDegenerate(i)?r.createInstance():e}if((0,i.h)(l)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Rr(n,t,r,s)}(0,i.w)(l),(0,i.i)(l)||(0,i.t)("OGC simplify is not implemented for this geometry type");let m=(0,o.e)(t,e,!1).total(),h=e.getImpl().getIsSimple(m,[0]),g=r?-1:h;if(5===g){if(l===i.G.enumPolygon&&0!==e.getFillRule()){let t=e.clone();return t.setFillRule(0),t}return e}return Tr(e,(0,o.e)(t,e,!0),!1,g,s,0,!0)}function Lr(e,t){let r=e.getX(),s=e.getY();if(!Number.isFinite(r)||!Number.isFinite(s))return t&&(t.m_reason=2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0;if(e.hasAttribute(1)){let r=e.getZ();if(!Number.isFinite(r))return t&&(t.m_reason=Number.isNaN(r)?3:2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0}return 5}class zr{m_segment=null;m_vertexIndex=-1;m_pathIndex=-1;m_flags=0;setReversed(e){this.m_flags&=-2,this.m_flags|=+!!e}getReversed(){return!!(1&this.m_flags)}getRightSide(){return+!this.getReversed()}}function Wr(e,t,r,s,i){return{x:e,y:t,ipath:r,ivertex:s,ipolygon:i}}function jr(e,t){return e.x===t.x&&e.y===t.y&&e.ipath===t.ipath&&e.ivertex===t.ivertex&&e.ipolygon===t.ipolygon}function Zr(e,t){e.x=t.x,e.y=t.y,e.ipath=t.ipath,e.ivertex=t.ivertex,e.ipolygon=t.ipolygon}function Kr(e,t,r,s,i,n){return{x:e,y:t,ipath:r,ivertex:s,bBoundary:i,bEndPoint:n}}function Qr(e,t){e.x=t.x,e.y=t.y,e.ipath=t.ipath,e.ivertex=t.ivertex,e.bBoundary=t.bBoundary,e.bEndPoint=t.bEndPoint}class Jr extends o.F{m_helper;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=e.getElement(r),i=this.m_helper.m_xy.read(2*t)-this.m_helper.m_xy.read(2*s);return i<0?-1:+(i>0)}}class $r extends o.F{m_helper;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=e.getElement(r),i=this.m_helper.m_edges[t],n=this.m_helper.m_edges[s],a=i.getReversed(),o=n.getReversed(),l=i.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0),m=n.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0);if(l===m){let e=a?i.m_segment.getStartY():i.m_segment.getEndY(),t=o?n.m_segment.getStartY():n.m_segment.getEndY(),r=Math.min(e,t),s=.5*(r-this.m_helper.m_yScanline)+this.m_helper.m_yScanline;s===this.m_helper.m_yScanline&&(s=r),l=i.m_segment.intersectionOfYMonotonicWithAxisX(s,0),m=n.m_segment.intersectionOfYMonotonicWithAxisX(s,0)}return l<m?-1:+(l>m)}}class es{m_description;m_geometry;m_multiVertexGeom=null;m_sr;m_toleranceIsSimpleClustering;m_toleranceIsSimpleCracking;m_toleranceIsSimple;m_toleranceSimplify;m_knownSimpleResult;m_attributeCount;m_edges=[];m_freeEdges=[];m_lineEdgesRecycle=[];m_newEdges=[];m_recycledSegIter=null;m_crossOverHelperList=new o.I;m_progressTracker=null;m_progressCounter=0;m_AET=new o.T;m_xyToNode1=null;m_xyToNode2=null;m_pathOrientations=null;m_pathParentage=null;m_unknownOrientationPathCount;m_yScanline;m_xy=null;m_pairs=[];m_pairIndices=null;m_pathsForOGCTests=[];m_curveStitcher=null;m_editShape=null;m_multiPathStitcher=null;m_bOGCRestrictions;m_bPlanarSimplify;m_nonSimpleResult=new c;constructor(e,t,r,s,i){this.m_progressCounter=0,this.m_progressTracker=s,this.m_geometry=e,this.m_knownSimpleResult=r,this.m_sr=t;let n=(0,o.e)(t,e,!1);this.m_toleranceIsSimple=n,this.m_toleranceIsSimpleClustering=(0,o.f)(n),this.m_toleranceIsSimpleCracking=(0,o.n)(n),this.m_toleranceSimplify=(0,o.e)(t,e,!0),this.m_description=this.m_geometry.getDescription(),this.m_attributeCount=this.m_description.getAttributeCount(),this.m_bOGCRestrictions=i,this.m_bPlanarSimplify=this.m_bOGCRestrictions,this.m_unknownOrientationPathCount=-1,this.m_yScanline=0,this.m_progressCounter=0}isSimplePlanarImpl(){if(this.m_bPlanarSimplify=!0,!this.checkStructure())return 0;let e=this.m_geometry.getGeometryType();return(0,i.j)(e)&&!this.checkDegenerateSegments(!1)||!this._CheckClustering()?0:(0,i.j)(e)?this._CheckCracking()?this.m_geometry.getGeometryType()===i.G.enumPolyline?this.checkSelfIntersectionsPolylinePlanar()?4:0:this._CheckSelfIntersections()?this._CheckValidRingOrientation():0:0:5}isSimplePlanarImpl3D(){return(0,i.g)(0),7}generateSortedPairs(e){let t=null;(0,i.j)(e.getGeometryType())&&(t=e);let r=(this.m_bPlanarSimplify||this.m_bOGCRestrictions)&&null!==t,s=e.getPointCount();this.m_xy=e.getAttributeStreamRef(0),this.m_pairs.length=0,this.m_pairIndices=new o.a(0),r&&(this.m_pathsForOGCTests.length=0);let n=0;for(let e=0;e<s;e++)if(this.m_pairs.push(2*e),this.m_pairs.push(2*e+1),this.m_pairIndices.add(2*e),this.m_pairIndices.add(2*e+1),r){for(;e>=t.getPathEnd(n);)n++;this.m_pathsForOGCTests.push(n)}let a=new o.B,m={parent:this,workPt:new l.P,userSort(e,t,s){s.sort(e,t,(e,t)=>this.parent.compareVerticesForPlanarClustering(e,t,r))},getValue(e){let t=this.parent.m_pairs[e],r=t>>1;return this.parent.m_xy.queryPoint2D(2*r,this.workPt),this.workPt.y+(1&t?this.parent.m_toleranceIsSimpleClustering:-this.parent.m_toleranceIsSimpleClustering)}};a.sort(this.m_pairIndices,0,2*s,m)}_TestToleranceDistancePlanar(e,t){let r=this.m_xy.read(2*e),s=this.m_xy.read(2*e+1),i=this.m_xy.read(2*t),n=this.m_xy.read(2*t+1);return!se(r,s,i,n,this.m_toleranceIsSimpleClustering*this.m_toleranceIsSimpleClustering)||0!==this.m_geometry.getDimension()&&r===i&&s===n}checkStructure(){let e=this.m_geometry.getGeometryType();if((0,i.j)(e)){let e=this.m_geometry.getImpl(),t=this.m_geometry.getGeometryType()===i.G.enumPolygon?3:2;for(let r=0,s=e.getPathCount();r<s;r++)if(e.getPathSize(r)<t){if(e.hasNonLinearSegments()&&e.hasNonLinearSegmentsPath(r)&&e.getPathSize(r)>0)continue;return this.m_nonSimpleResult=new c(1,r,0),!1}}if((0,i.i)(e)){let e=this.m_geometry.getImpl(),t=e.getAttributeStreamRef(0);for(let r=0,s=e.getPointCount();r<s;r++)if(!t.readPoint2D(2*r).isFinite())return this.m_nonSimpleResult=new c(2,r,0),!1;if(this.m_geometry.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let r=0,s=e.getPointCount();r<s;r++){let e=t.read(r);if(!Number.isFinite(e))return this.m_nonSimpleResult=Number.isNaN(e)?new c(3,r,0):new c(2,r,0),!1}}}return!0}checkDegenerateSegments(e){let t=this.m_geometry.getImpl(),r=t.querySegmentIterator(),s=t.hasAttribute(1),i=s?(0,o.o)(this.m_sr,t,!1).total():0,n=t.hasNonLinearSegments(),a=this.m_toleranceIsSimple.total();for(;r.nextPath();)for(;r.hasNextSegment();){let t=r.nextSegment(),o=t.calculateLowerLength2D();if(!(o>a||n&&t.isCurve()&&(o=t.calculateLength2D(),o>a))){if(e&&s){let e=t.getStartAttributeAsDbl(1,0),r=t.getEndAttributeAsDbl(1,0);if(Math.abs(r-e)>i)continue}return this.m_nonSimpleResult=new c(4,r.getStartPointIndex(),-1),!1}}return!0}checkDegenerateSegments3D(){return(0,i.g)(0),!1}_CheckClustering(){let e=this.m_geometry.getImpl();this.generateSortedPairs(e);let t=e.getPointCount();this.m_AET.clear(),this.m_AET.setComparator(new Jr(this)),this.m_AET.setCapacity(t);for(let e=0,r=2*t;e<r;e++){this.progress_();let t=this.m_pairIndices.read(e),r=this.m_pairs[t],s=r>>1;if(1&r){let e=this.m_AET.search(s),t=this.m_AET.getPrev(e),r=this.m_AET.getNext(e);if(this.m_AET.deleteNode(e),t!==o.T.st_nullNode()&&r!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),this.m_AET.getElement(r)))return this.m_nonSimpleResult=new c(5,this.m_AET.getElement(t),this.m_AET.getElement(r)),!1}else{let e=this.m_AET.addElement(s),t=this.m_AET.getPrev(e);if(t!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),s))return this.m_nonSimpleResult=new c(5,s,this.m_AET.getElement(t)),!1;let r=this.m_AET.getNext(e);if(r!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(r),s))return this.m_nonSimpleResult=new c(5,s,this.m_AET.getElement(r)),!1}}return!0}_CheckCracking(){let e=this.m_geometry.getImpl(),t=e.getPointCount();return!e.hasNonLinearSegments()&&t<10?this._CheckCrackingBrute():this._CheckCrackingPlanesweep()}_CheckCrackingPlanesweep(){if(this.m_editShape=new a.E,this.m_editShape.addGeometry(this.m_geometry),this.m_editShape.hasCurves()){this.m_curveStitcher=new dr;let e=n.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(e);let t=ur(this.m_toleranceSimplify.total(),e),r=new c;if(hr(this.m_editShape,t,this.m_toleranceSimplify.total(),0,r,this.m_curveStitcher,null,this.m_progressTracker),0!==r.m_reason)return this.m_editShape=null,this.m_nonSimpleResult.assign(r),!1}let e=new c;return Ie(!1,this.m_editShape,this.m_toleranceIsSimpleCracking,e,this.m_progressTracker)?(null==this.m_curveStitcher?(e.m_vertexIndex1=this.m_editShape.getVertexIndex(e.m_vertexIndex1),e.m_vertexIndex2=this.m_editShape.getVertexIndex(e.m_vertexIndex2)):(e.m_vertexIndex1=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,e.m_vertexIndex1),e.m_vertexIndex2=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,e.m_vertexIndex2),this.m_curveStitcher=null),this.m_editShape=null,this.m_nonSimpleResult.assign(e),!1):(this.m_curveStitcher??(this.m_editShape=null),!0)}_CheckCrackingBrute(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),r=e.querySegmentIterator();for(;t.nextPath();)for(;t.hasNextSegment();){let e=t.nextSegment();if(!t.isLastSegmentInPath()||!t.isLastPath()){r.resetTo(t);do{for(;r.hasNextSegment();){let s=r.nextSegment(),i=(0,a.B)(!0,e,s,this.m_toleranceIsSimpleCracking,!0);if(i){let e=2===i?7:6;return this.m_nonSimpleResult=new c(e,t.getStartPointIndex(),r.getStartPointIndex()),!1}}}while(r.nextPath())}}return!0}_CheckSelfIntersections(){let e=this.m_geometry.getImpl();null!==this.m_curveStitcher&&(this.m_multiPathStitcher=this.m_editShape.getGeometry(this.m_editShape.getFirstGeometry()),e=this.m_multiPathStitcher.getImpl(),this.generateSortedPairs(e)),this.m_edges.length=0,this.m_lineEdgesRecycle.length=0,this.m_recycledSegIter=e.querySegmentIterator(),this.m_recycledSegIter.setCirculator(!0);let t=[],r=e.getPointCount(),s=NaN,i=0;for(let e=0,n=2*r;e<n;e++){this.progress_();let r=this.m_pairIndices.read(e),n=this.m_pairs[r];if(1&n)continue;let a=n>>1,o=this.m_xy.read(2*a),l=this.m_xy.read(2*a+1);if(t.length&&(o!==s||l!==i)){if(!this.processBunchForSelfIntersectionTest(t))return!1;t.length=0}t.push(a),s=o,i=l}return!!this.processBunchForSelfIntersectionTest(t)}checkSelfIntersectionsPolylinePlanar(){let e=this.m_geometry.getImpl(),t=[];for(let r=0,s=e.getPathCount();r<s;r++)t.push(e.isClosedPathInXYPlane(r));let r,s,i,n={x:-1,y:-1,ipath:-1,ivertex:-1,bBoundary:!1,bEndPoint:!1};{let a=this.m_pairIndices.read(0),o=this.m_pairs[a]>>1,l=this.m_xy.readPoint2D(2*o),m=this.m_pathsForOGCTests[o];r=t[m],s=e.getPathStart(m),i=e.getPathEnd(m)-1,n.bEndPoint=o===s||o===i,n.bBoundary=this.m_bOGCRestrictions?!r&&n.bEndPoint:n.bEndPoint,n.ipath=m,n.x=l.x,n.y=l.y,n.ivertex=o}for(let a=1,o=this.m_pairIndices.size();a<o;a++){let o=this.m_pairIndices.read(a),l=this.m_pairs[o];if(1&l)continue;let m=l>>1,h=this.m_xy.readPoint2D(2*m),g=this.m_pathsForOGCTests[m];g!==n.ipath&&(r=t[g],s=e.getPathStart(g),i=e.getPathEnd(g)-1);let u,_=m===s||m===i;u=this.m_bOGCRestrictions?!r&&_:_;let p=Kr(h.x,h.y,g,m,u,_);if(p.x===n.x&&p.y===n.y)if(this.m_bOGCRestrictions){if(!(p.bBoundary&&n.bBoundary||p.ipath===n.ipath&&p.bEndPoint&&n.bEndPoint))return this.m_nonSimpleResult=new c(10,p.ivertex,n.ivertex),!1}else if(!p.bEndPoint||!n.bEndPoint)return this.m_nonSimpleResult=new c(7,p.ivertex,n.ivertex),!1;Qr(n,p)}return!0}checkSelfIntersectionsPolylinePlanar3D(e){return(0,i.g)(0),!1}checkSelfIntersectionsPolygonsOGC(){let e=this.m_geometry.getImpl(),t=[],r=-1,s=!1;for(let i=0,n=e.getPathCount();i<n;i++)e.isExteriorRingOGC(i)&&(s=!1,r++,i<n-1&&(e.isExteriorRingOGC(i+1)||(s=!0))),t.push(s?r:-1);let i={x:-1,y:-1,ipath:-1,ivertex:-1,ipolygon:-1};{let e=this.m_pairIndices.read(0),r=this.m_pairs[e]>>1,s=this.m_xy.readPoint2D(2*r),n=this.m_pathsForOGCTests[r];i.ipath=n,i.x=s.x,i.y=s.y,i.ivertex=r,i.ipolygon=t[n]}let n=[];for(let e=1,r=this.m_pairIndices.size();e<r;e++){let r=this.m_pairIndices.read(e),s=this.m_pairs[r];if(1&s)continue;let a=s>>1,o=this.m_xy.readPoint2D(2*a),l=this.m_pathsForOGCTests[a],m=Wr(o.x,o.y,l,a,t[l]);if(m.x===i.x&&m.y===i.y){if(m.ipath===i.ipath)return this.m_nonSimpleResult=new c(11,m.ivertex,i.ivertex),!1;t[m.ipath]>=0&&t[m.ipath]===t[i.ipath]&&((0===n.length||!jr(n.at(-1),i))&&n.push({...i}),n.push(m))}Zr(i,m)}if(0===n.length)return!0;let a=new o.I(!0);t.fill(-1);let m=-1,h=new l.P;for(let e=0,r=n.length;e<r;e++){let r=n[e];(r.x!==h.x||r.y!==h.y)&&(m=a.createList(0),h.x=r.x,h.y=r.y);let s=t[r.ipath];-1===s&&(s=a.createList(2),t[r.ipath]=s),a.addElement(s,m),a.addElement(m,s)}let g=[];for(let e=a.getFirstList();-1!==e;e=a.getNextList(e)){let r=a.getListData(e);if(1&r||!(2&r))continue;let s=-1;for(g.push(e),g.push(-1);g.length;){let e=g.at(-1);g.pop();let t=g.at(-1);g.pop();let r=a.getListData(t);if(1&r){s=2&r?t:e;break}a.setListData(t,1|r);for(let r=a.getFirst(t);-1!==r;r=a.getNext(r)){let s=a.getData(r);s!==e&&(g.push(s),g.push(t))}}if(-1!==s){let e=t.indexOf(s);return this.m_nonSimpleResult=new c(12,e,-1),!1}}return!0}_CheckValidRingOrientation(){let e=null===this.m_multiPathStitcher?this.m_geometry.getImpl():this.m_multiPathStitcher.getImpl();if(e.calculateArea2D()<=0)return this.m_nonSimpleResult=new c(8,1===e.getPathCount()?1:-1,-1),0;if(1===e.getPathCount())return this.m_bOGCRestrictions&&!this.checkSelfIntersectionsPolygonsOGC()?0:4;this.m_pathOrientations=new o.b(e.getPathCount(),0),this.m_pathParentage=new o.a(e.getPathCount(),-1);let t=-1,r=0;for(let s=0,i=e.getPathCount();s<i;s++){let i=e.calculateRingArea2D(s);if(this.m_pathOrientations.write(s,i<0?0:8),i>0)t=s,r=i;else{if(0===i)return this.m_nonSimpleResult=new c(8,s,-1),0;if((t<0||r<Math.abs(i))&&(this.m_nonSimpleResult=new c(9,s,-1),this.m_bOGCRestrictions))return 0;this.m_pathParentage.write(s,t)}}this.m_unknownOrientationPathCount=e.getPathCount(),this.m_newEdges.length=0;let s=e.getPointCount();this.m_yScanline=NaN;let i=[];this.m_xyToNode1=new o.a(s,o.T.st_nullNode()),this.m_xyToNode2=new o.a(s,o.T.st_nullNode()),this.m_freeEdges.length=0,this.m_AET.clear(),this.m_AET.setComparator(new $r(this));for(let e=0,t=2*s;this.m_unknownOrientationPathCount>0&&e<t;e++){let t=this.m_pairIndices.read(e),r=this.m_pairs[t];if(1&r)continue;let s=r>>1,n=this.m_xy.read(2*s+1);if(n!==this.m_yScanline&&i.length){if(!this.processBunchForRingOrientationTest(i))return 0;i.length=0}i.push(s),this.m_yScanline=n}return this.m_unknownOrientationPathCount>0&&!this.processBunchForRingOrientationTest(i)?0:this.m_bOGCRestrictions?0===this.m_nonSimpleResult.m_reason&&this.checkSelfIntersectionsPolygonsOGC()?5:0:0===this.m_nonSimpleResult.m_reason?4:3}processBunchForSelfIntersectionTest(e){if(1===e.length)return!0;for(let t=0,r=e.length;t<r;t++){let r=e[t];this.m_recycledSegIter.resetToVertex(r,-1);let s=this.m_recycledSegIter.previousSegment();this.m_edges.push(this.createEdge(s,r,this.m_recycledSegIter.getPathIndex(),!0)),this.m_recycledSegIter.nextSegment();let i=this.m_recycledSegIter.nextSegment();this.m_edges.push(this.createEdge(i,r,this.m_recycledSegIter.getPathIndex(),!1))}this.m_edges.sort((e,t)=>this.edgeAngleCompare(e,t));let t=this.m_crossOverHelperList.getFirstList();-1===t&&(t=this.m_crossOverHelperList.createList(0)),this.m_crossOverHelperList.reserveNodes(this.m_edges.length);for(let e=0,r=this.m_edges.length;e<r;e++)this.m_crossOverHelperList.addElement(t,e);let r=!0,s=-1,i=-1;for(;r;){r=!1;let e=this.m_crossOverHelperList.getFirst(t);if(-1===e)break;let n=this.m_crossOverHelperList.getNext(e);for(;-1!==n;){let a=this.m_crossOverHelperList.getData(e),o=this.m_crossOverHelperList.getData(n);if(s=this.m_edges[a].m_vertexIndex,i=this.m_edges[o].m_vertexIndex,s!==i)e=n,n=this.m_crossOverHelperList.getNext(e);else if(r=!0,this.m_crossOverHelperList.deleteElement(t,e),e=this.m_crossOverHelperList.getPrev(n),n=this.m_crossOverHelperList.deleteElement(t,n),-1===n||-1===e)break}}let n=this.m_crossOverHelperList.getListSize(t);if(this.m_crossOverHelperList.clear(t),n>0)return this.m_nonSimpleResult=new c(7,s,i),!1;for(let t=0,r=e.length;t<r;t++)this.recycleEdge(this.m_edges[t]);return this.m_edges.length=0,!0}processBunchForRingOrientationTest(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_xyToNode1.read(r);if(s!==o.T.st_nullNode()){let e=this.m_AET.getElement(s);this.m_freeEdges.push(e),this.m_AET.deleteNode(s),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode1.write(r,o.T.st_nullNode())}if(s=this.m_xyToNode2.read(r),s!==o.T.st_nullNode()){let e=this.m_AET.getElement(s);this.m_freeEdges.push(e),this.m_AET.deleteNode(s),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode2.write(r,o.T.st_nullNode())}}for(let t=0,r=e.length;t<r;t++){let r=e[t];this.m_recycledSegIter.resetToVertex(r,-1);let s=this.m_recycledSegIter.previousSegment();if(s.getStartY()>s.getEndY()){let e,t=this.m_recycledSegIter.getStartPointIndex(),i=this.createEdge(s,r,this.m_recycledSegIter.getPathIndex(),!0);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=i):(e=this.m_edges.length,this.m_edges.push(i));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===o.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}this.m_recycledSegIter.nextSegment();let i=this.m_recycledSegIter.nextSegment();if(i.getStartY()<i.getEndY()){let e,t=this.m_recycledSegIter.getEndPointIndex(),s=this.createEdge(i,r,this.m_recycledSegIter.getPathIndex(),!1);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=s):(e=this.m_edges.length,this.m_edges.push(s));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===o.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}}for(let e=0,t=this.m_newEdges.length;e<t&&this.m_unknownOrientationPathCount>0;e++){let t=this.m_newEdges[e],r=this.m_AET.getElement(t),s=this.m_edges[r].m_pathIndex;if(!(3&this.m_pathOrientations.read(s))){let e=-1,r=this.m_AET.getPrev(t),s=t,i=0;{let t=-1,n=null,a=-1,l=0;for(;r!==o.T.st_nullNode()&&(t=this.m_AET.getElement(r),n=this.m_edges[t],a=n.m_pathIndex,l=this.m_pathOrientations.read(a),!(3&l));)s=r,r=this.m_AET.getPrev(r);r===o.T.st_nullNode()?(i=1,r=s):(e=1==(3&l)?a:this.m_pathParentage.read(a),i=+!n.getRightSide(),r=this.m_AET.getNext(r))}do{let t=this.m_AET.getElement(r),n=this.m_edges[t],a=n.m_pathIndex,o=this.m_pathOrientations.read(a);if(!(3&o)){if(i!==n.getRightSide())return this.m_nonSimpleResult=new c(8,a,-1),!1;let t=i&&!n.getReversed()?1:2;if(o=-4&o|t,this.m_pathOrientations.write(a,o),2===t&&0===this.m_nonSimpleResult.m_reason){let t=this.m_pathParentage.read(a);if(t!==e&&(this.m_nonSimpleResult=new c(9,a,t),this.m_bOGCRestrictions))return!1}if(this.m_unknownOrientationPathCount--,!this.m_unknownOrientationPathCount)return!0}e=1==(3&o)?a:this.m_pathParentage.read(a),s=r,r=this.m_AET.getNext(r),i=+!i}while(s!==t)}}return this.m_newEdges.length=0,!0}createEdge(e,t,r,s){let n;return e.getGeometryType()===i.G.enumLine?n=this.createEdgeLine(e):(n=new zr,n.m_segment=e.clone()),n.m_vertexIndex=t,n.m_pathIndex=r,n.m_flags=0,n.setReversed(s),n}createEdgeLine(e){let t;return this.m_lineEdgesRecycle.length>0?(t=this.m_lineEdgesRecycle.at(-1),this.m_lineEdgesRecycle.pop(),e.copyTo(t.m_segment)):(t=new zr,t.m_segment=e.clone()),t}recycleEdge(e){e.m_segment.getGeometryType()===i.G.enumLine&&this.m_lineEdgesRecycle.push(e)}static isShortSegment(e,t,r,s){let i=e.calculateLowerLength2D();if(i<=r){let n=!0;if(e.isCurve()&&(i=e.calculateLength2D(),n=i<=r),n){if(t){let t=e.getEndAttributeAsDbl(1,0);Number.isNaN(t)&&(t=0);let r=e.getStartAttributeAsDbl(1,0);return Number.isNaN(r)&&(r=0),Math.abs(r-t)<=s}return!0}return!1}return!1}static isShortSegmentPoints(e,t,r,s,i){if(r){let r=e.getXYZ(),n=t.getXYZ();return(0,o.p)(r,n,s,i)}{let r=e.getXY(),i=t.getXY();return l.P.sqrDistance(r,i)<=s*s}}removeDegenerateSegmentsFromCurvedPath(e,t,r,s){let n=e.hasAttribute(1),a=e.querySegmentIterator();a.resetToPath(t),(0,i.g)(a.nextPath());let m=this.m_toleranceSimplify.total(),h=!1,g=!0,u=new o.P,_=new o.P,p=new l.P;for(;a.hasNextSegment();){this.progress_();let e=a.nextSegment();if(es.isShortSegment(e,n,m,r))if(h){if(e.queryEnd(_),es.isShortSegmentPoints(u,_,n,m,r))continue;g&&=(s.startPathPoint(u),!1),e.queryEnd(u),s.lineToPoint(u),h=!1}else p.assign(e.getStartXY()),e.queryStart(u),h=!0;else if(h)if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(p,e.getEndXY(),!1),t.setStart(u),es.isShortSegment(t,n,m,r))continue;s.addSegment(t,g),g=!1,h=!1}else{if(e.queryEnd(_),es.isShortSegmentPoints(u,_,n,m,r))continue;g&&=(s.startPathPoint(u),!1),s.lineToPoint(_),h=!1}else s.addSegment(e,g),g=!1}if(g||!h)return;e.isClosedPath(t)?e.getPointByVal(e.getPathStart(t),u):e.getPointByVal(e.getPathEnd(t)-1,u);let d=s.querySegmentIterator();d.resetToLastPath(),d.resetToLastSegment();let c=s.getDescription().getAttributeCount()>1;for((0,i.g)(d.previousPath());d.hasPreviousSegment();){let e=d.previousSegment();if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(e.getStartXY(),u.getXY(),!1),!es.isShortSegment(t,n,m,r)){c&&t.setEnd(u);let e=d.getEndPointIndex();for(let t=s.getPointCount()-1;t>=e;t--)s.removePoint(t);return void s.addSegment(t,!1)}}else if(e.queryStart(_),!es.isShortSegmentPoints(_,u,n,m,r)){let e=d.getEndPointIndex();for(let t=s.getPointCount()-1;t>=e;t--)s.removePoint(t);return void s.lineToPoint(u)}}s.removePath(s.getPathCount()-1)}multipointIsSimpleAsFeature(){if(!this.checkStructure())return 0;let e=this.m_geometry.getImpl();this.m_multiVertexGeom=e;let t=e.getPointCount(),r=(0,l.d)(t,0);for(let e=0;e<t;e++)r[e]=e;r.sort((e,t)=>this.compareVerticesMultiPoint(e,t));for(let e=1;e<t;e++)if(0===this.compareVerticesMultiPoint(r[e-1],r[e]))return this.m_nonSimpleResult=new c(5,r[e-1],r[e]),0;return 1}polylineIsSimpleAsFeature(){return this.checkStructure()?+!!this.checkDegenerateSegments(!0):0}polygonIsSimpleAsFeature(){return this.isSimplePlanarImpl()}multipointSimplifyAsFeature(){let e,t=this.m_geometry.getImpl(),r=es.hasNanZs(t),s=this.m_geometry;r&&(e=this.m_geometry.clone(),t=e.getImpl(),e.replaceNaNs(1,o.V.getDefaultValue(1)),s=e),this.m_multiVertexGeom=t;let i=t.getPointCount(),n=(0,l.d)(i,0);for(let e=0;e<i;e++)n[e]=e;n.sort((e,t)=>this.compareVerticesMultiPoint(e,t));let a=Array(i);a.fill(!1);let m=-1;for(let e=0;e<i;e++){let r=n[e];t.getXY(r).isFinite()&&((m<0||0!==this.compareVerticesMultiPoint(m,r))&&(a[r]=!0),m=r)}let h=this.m_geometry.createInstance(),g=0,u=0;for(let e=0;e<i;e++)a[e]?u=e+1:(g<u&&h.addPoints(s,g,u),g=e+1);return g<u&&h.addPoints(s,g,u),h.getImpl().setIsSimple(1,this.m_toleranceSimplify.total()),h}polylineSimplifyAsFeature(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),r=e.querySegmentIterator(),s=this.m_geometry.createInstance(),i=this.m_geometry,n=e.hasAttribute(1),a=n?(0,o.o)(this.m_sr,e,!0).total():0,m=[],h=[],g=null;n&&(g=e.getAttributeStreamRef(1));let u=new o.P,_=e.hasNonLinearSegments(),p=this.m_toleranceSimplify.total();for(;t.nextPath();){if(r.nextPath(),e.getPathSize(t.getPathIndex())<2)continue;if(_&&e.hasNonLinearSegmentsPath(t.getPathIndex())){this.removeDegenerateSegmentsFromCurvedPath(e,t.getPathIndex(),a,s);continue}r.resetToLastSegment();let o=0,d=0,c=!0,f=!0;for(;t.hasNextSegment();){this.progress_();let s=t.nextSegment(),i=r.previousSegment();if(t.getStartPointIndex()>r.getStartPointIndex())break;if(c){let r=t.getStartPointIndex();e.getXY(r).isNAN()||(c=!1,m.push(r))}if(f){let t=r.getEndPointIndex();e.getXY(t).isNAN()||(h.push(t),f=!1)}if(!c){let r=m.at(-1),i=t.getEndPointIndex();if(i-r>1){let t=new l.P;t.setSub(e.getXY(r),e.getXY(i)),o=t.length()}else o=s.calculateLength2D();if(o>p)m.push(i),o=0;else if(n){let e=g.read(r);Number.isNaN(e)&&(e=0);let t=g.read(i);Number.isNaN(t)&&(t=0),Math.abs(t-e)>a&&(m.push(i),o=0)}}if(!f){let t=h.at(-1),s=r.getStartPointIndex();if(s-t>1){let r=new l.P;r.setSub(e.getXY(t),e.getXY(s)),d=r.length()}else d=i.calculateLength2D();if(d>p)h.push(s),d=0;else if(n){let e=g.read(t);Number.isNaN(e)&&(e=0);let r=g.read(s);Number.isNaN(r)&&(r=0),Math.abs(r-e)>a&&(h.push(s),d=0)}}}if(m.length>0&&h.length>0&&(m.at(-1)<h.at(-1)?m.length>h.length?m.pop():h.pop():(m.at(-1)===h.at(-1)||h.pop(),h.pop())),h.length+m.length>=2){let e=!1;for(let t=0,r=m.length;t<r;t++)i.getPointByVal(m[t],u),e?s.lineToPoint(u):(s.startPathPoint(u),e=!0);for(let t=h.length-1;t>0;t--)i.getPointByVal(h[t],u),e?s.lineToPoint(u):(s.startPathPoint(u),e=!0);i.isClosedPath(t.getPathIndex())?s.closePathWithLine():h.length>0&&(i.getPointByVal(h[0],u),s.lineToPoint(u))}m.length=0,h.length=0}return n&&s.replaceNaNs(1,0),s.getImpl().setIsSimple(1,p),s}polygonSimplifyAsFeature(){return this.simplifyPlanar()}simplifyPlanar(){if(1===this.m_geometry.getFillRule()&&!(0,o.q)(this.m_knownSimpleResult))return Nr(this.m_geometry,this.m_toleranceSimplify,!0,!1,this.m_knownSimpleResult,this.m_progressTracker,0,!0);let e=new a.E;if(e.addGeometry(this.m_geometry),this.m_geometry.hasAttribute(1)&&e.replaceNaNs(1,0),e.removeNaNVertices(),0!==e.getTotalPointCount()){let t=null,r=0,s=0;if(e.hasCurves()){t=new dr;let i=n.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(i);let a=ur(this.m_toleranceSimplify.total(),i);r=_r(this.m_toleranceSimplify.total()),s=pr(a,r),lr(e,a,this.m_toleranceSimplify.total(),0,t,null,this.m_progressTracker)}(0,o.q)(this.m_knownSimpleResult)||fr(e,this.m_toleranceSimplify.add(s),this.m_progressTracker,!0,!1),this.m_geometry.getGeometryType()===i.G.enumPolygon&&He(e,e.getFirstGeometry(),this.m_knownSimpleResult,!1,-1,this.m_progressTracker),null!==t&&t.stitchCurves(e,e.getFirstGeometry(),r,!0)}let t=e.getGeometry(e.getFirstGeometry());return t.getGeometryType()===i.G.enumPolygon&&(t.getImpl().updateOGCFlagsProtected(),t.setFillRule(0)),t.getImpl().setIsSimple(4,this.m_toleranceSimplify.total()),t}progress_(){}static hasNanZs(e){if(e.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let r=0,s=e.getPointCount();r<s;r++){let e=t.read(r);if(Number.isNaN(e))return!0}}return!1}compareVerticesForPlanarClustering(e,t,r){if(e===t)return 0;let s=this.m_pairs[e],i=this.m_pairs[t],n=s>>1,a=i>>1,o=this.m_xy.readPoint2D(2*n);o.y+=1&s?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let m=this.m_xy.readPoint2D(2*a);m.y+=1&i?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let h=o.compare(m);if(0===h&&r){let e=this.m_pathsForOGCTests[n]-this.m_pathsForOGCTests[a];return(0,l.e)(e)}return h}compareVerticesMultiPoint(e,t){if(e===t)return 0;let r=this.m_multiVertexGeom.getXY(e),s=this.m_multiVertexGeom.getXY(t),i=!r.isFinite(),n=!s.isFinite();if(i||n)return i<n?-1:+(i>n);if(r.y<s.y)return-1;if(r.y>s.y)return 1;if(r.x<s.x)return-1;if(r.x>s.x)return 1;for(let r=1;r<this.m_attributeCount;r++){let s=this.m_description.getSemantics(r),i=o.V.getComponentCount(s);for(let r=0;r<i;r++){let i=this.m_multiVertexGeom.getAttributeAsDbl(s,e,r),n=this.m_multiVertexGeom.getAttributeAsDbl(s,t,r),a=(0,l.t)(i,n);if(0!==a)return a}}return 0}edgeAngleCompare(e,t){if(e===t)return 0;let r=e.m_segment.getTangent(+!!e.getReversed());e.getReversed()&&r.negateThis();let s=t.m_segment.getTangent(+!!t.getReversed());t.getReversed()&&s.negateThis();let i=r.getQuarter(),n=s.getQuarter();if(n===i){let e=r.crossProduct(s);return e<0?1:e>0?-1:0}return i<n?-1:1}}class ts{getOperatorType(){return 10103}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}isSimpleAsFeature(e,t,r,s,i){let n=Yr(e,t,r,s,i);return(0,o.l)(e.getGeometryType(),n)}isSimplePlanarDONOTUSE(e,t,r,s,l){let m=function(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=new n.Envelope2D;return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Yr(n,t,r,s,l)}let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if((0,o.i)(u)||0===u)return u;let _=new es(e,t,u,l,!1);return m===i.G.enumMultiPoint||m===i.G.enumPolyline||m===i.G.enumPolygon?u=_.isSimplePlanarImpl():(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}(e,t,r,s,l);return(0,o.i)(m)}executeMany(e,t,r,s){return new rs(e,t,r,s)}execute(e,t,r,s){let n=new _.S([e]),a=this.executeMany(n,t,r,s).next();return a||(0,i.d)("null geometry"),a}}class rs extends u.G{m_inputGeometryCursor;m_spatialReference;m_progressTracker;m_index;m_bForceSimplify;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_bForceSimplify=r,this.m_index=-1,this.m_inputGeometryCursor=e,this.m_spatialReference=t}next(){let e=this.m_inputGeometryCursor.next();return e?(this.m_index=this.m_inputGeometryCursor.getGeometryID(),this.simplify(e)):null}getGeometryID(){return this.m_index}tock(){return!1}getRank(){return 1}simplify(e){if(e||(0,i.a)(""),e.getGeometryType()===i.G.enumGeometryCollection){let t=(0,a.g)(e,-1),r=(new ts).executeMany(t,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker),s=e.createInstance();for(let e=r.next();null!=e;e=r.next())s.addGeometry(e);return s}return Xr(e,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker)}}class ss{m_intersectorGeom=null;m_sr=null;m_dimensionMask=-1;m_progressTracker=null;m_intersectorGeomType=i.G.enumUnknown;m_geomIntersectorEmptyGeom=null;constructor(e,t,r,s){this.m_intersectorGeom=e,this.m_sr=t,this.m_dimensionMask=r,this.m_progressTracker=s,this.m_intersectorGeomType=e.getGeometryType()}intersect(e){let t=this.tryFastImplementation(e);if(null!==t)return t;let r=(0,o.g)(this.m_intersectorGeom,e),s=(0,o.c)(this.m_sr,r,!0).total(),m=n.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(m);let g=n.Envelope2D.constructEmpty();e.queryEnvelope(g),m.inflateCoords(2*s,2*s),m.intersect(g),m.inflateCoords(100*s,100*s);let u=(0,h.c)(this.m_intersectorGeom,m,0,0,this.m_progressTracker),_=(0,h.c)(e,m,0,0,this.m_progressTracker);return e.getDimension()>this.m_intersectorGeom.getDimension()&&(u=(0,l.c)(_,_=u)),function(e,t,r,s){let l=n.Envelope2D.constructEmpty();e.queryEnvelope(l);let m=n.Envelope2D.constructEmpty();t.queryEnvelope(m);let h=n.Envelope2D.constructEmpty();h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=new n.Envelope2D(m),_=(0,o.f)(g);if(u.inflateCoords(_,_),!l.isIntersecting(u)){if(e.getDimension()<=t.getDimension())return Mr(Ur(e.createInstance()),e,0,"&");if(e.getDimension()>t.getDimension())return Mr(Ur(t.createInstance()),e,0,"&")}let p=new Ar(s),d=new a.E,c=d.addGeometry(Ur(e)),f=d.addGeometry(Ur(t)),x=0,P=0,y=null;if(d.hasCurves()){y=new dr;let e=d.getEnvelope2D(s);P=_r(g.total());let t=ur(g.total(),e);x=pr(t,P),lr(d,t,g.total(),0,y,null,s)}p.setEditShapeCrackAndCluster(d,g.add(x));let E=p.intersection(c,f);null!==y&&y.stitchCurves(d,E,P,!0);let S=Mr(d.getGeometry(E),e,0,"&");return vr(S.getGeometryType())&&(S.getImpl().setIsSimple(4,g.total()),S.getGeometryType()===i.G.enumPolygon&&S.getImpl().updateOGCFlagsProtected()),S}(_,u,this.m_sr,this.m_progressTracker)}intersectEx(e){let t=this.tryFastImplementation(e);if(null!==t){let r=[];return r.length=3,r[t.getDimension()]=t,this.prepareVector(e.getDescription(),this.m_dimensionMask,r)}let r=(0,o.g)(this.m_intersectorGeom,e),s=(0,o.c)(this.m_sr,r,!0).total(),m=n.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(m);let g=n.Envelope2D.constructEmpty();e.queryEnvelope(g),m.inflateCoords(2*s,2*s),m.intersect(g),m.inflateCoords(100*s,100*s);let u=(0,h.c)(this.m_intersectorGeom,m,0,0,this.m_progressTracker),_=(0,h.c)(e,m,0,0,this.m_progressTracker);e.getDimension()>this.m_intersectorGeom.getDimension()&&(u=(0,l.c)(_,_=u));let p=function(e,t,r,s){let l=[,,,],m=n.Envelope2D.constructEmpty();e.queryEnvelope(m);let h=n.Envelope2D.constructEmpty();t.queryEnvelope(h);let g=n.Envelope2D.constructEmpty();g.setCoords({env2D:m}),g.mergeEnvelope2D(h);let u=(0,o.c)(r,g,!0),_=new n.Envelope2D(h),p=(0,o.f)(u);if(_.inflateCoords(p,p),!m.isIntersecting(_)){if(e.getDimension()<=t.getDimension()){let t=Mr(Ur(e.createInstance()),e,0,"&");return l[t.getDimension()]=t,l}if(e.getDimension()>t.getDimension()){let r=Mr(Ur(t.createInstance()),e,0,"&");return l[r.getDimension()]=r,l}}let d=new Ar(s),c=new a.E,f=c.addGeometry(Ur(e)),x=c.addGeometry(Ur(t)),P=0,y=0,E=null;if(c.hasCurves()){E=new dr;let e=c.getEnvelope2D(s);y=_r(u.total());let t=ur(u.total(),e);P=pr(t,y),lr(c,t,u.total(),0,E,null,s)}d.setEditShapeCrackAndCluster(c,u.add(P)),c.dbgVerifyCurves();let S=d.intersectionEx(f,x);for(let t of S){null!==E&&E.stitchCurves(c,t,y,!1);let r=Mr(c.getGeometry(t),e,0,"&");vr(r.getGeometryType())&&(r.getImpl().setIsSimple(4,u.total()),r.getGeometryType()===i.G.enumPolygon&&r.getImpl().updateOGCFlagsProtected()),l[r.getDimension()]=r}return null!==E&&E.clearStitcher(c),l}(_,u,this.m_sr,this.m_progressTracker);return this.prepareVector(e.getDescription(),this.m_dimensionMask,p)}init(e,t,r,s=null){(0,i.g)(0)}static intersectPoints(e,t,r){let s=(0,o.g)(e,t);return function(e,t,r){return e.isEmpty()||t.isEmpty()?e.createInstance():function(e,t,r){let s=(0,o.f)(e);return se(t.getX(),t.getY(),r.getX(),r.getY(),(0,l.a)(s))}(r,e,t)?new o.P({copy:xr(e,t)}):e.createInstance()}(e,t,(0,o.c)(r,s,!0))}tryFastImplementation(e){let t=e.getGeometryType();if(this.m_intersectorGeomType===i.G.enumPoint&&t===i.G.enumPoint){let t=ss.intersectPoints(e,this.m_intersectorGeom,this.m_sr);if(-1!==this.m_dimensionMask){let e=new a.M({vd:t.getDescription()});return t.isEmpty()||e.add(t),e}return t}if(t===i.G.enumEnvelope&&this.m_intersectorGeomType===i.G.enumEnvelope&&(-1===this.m_dimensionMask||4===this.m_dimensionMask)){let t=e,r=this.m_intersectorGeom,s=new o.E({copy:t});return s.intersect(r),s}let r=(0,o.g)(e,this.m_intersectorGeom),s=(0,o.c)(this.m_sr,r,!0),l=e.isEmpty(),m=this.m_intersectorGeom.isEmpty(),g=l||m;if(!g){let t=function(e,t,r){let s=new n.Envelope2D;e.queryEnvelope(s);let a=new n.Envelope2D;t.queryEnvelope(a);let o=new n.Envelope2D(a);if(o.inflate(2*r),!o.isIntersecting(s))return 4;let l=e.getGeometryType(),m=t.getGeometryType();if(l===i.G.enumEnvelope&&s.containsEnvelope(o))return 1;if(m===i.G.enumEnvelope){let e=new n.Envelope2D(s);if(e.inflate(2*r),a.containsEnvelope(e))return 2}return 0}(this.m_intersectorGeom,e,s.total());if(4===t)g=!0;else{if(2&t)return this.m_intersectorGeom;if(1&t)return e}}if(g){let r=(0,i.u)(t),s=(0,i.u)(this.m_intersectorGeomType);return r<s?ss.ReturnEmpty(e,l):r>s||0===r&&t===i.G.enumMultiPoint&&this.m_intersectorGeomType===i.G.enumPoint?this.ReturnEmptyIntersector():ss.ReturnEmpty(e,l)}if(t===i.G.enumEnvelope&&0===(0,i.u)(this.m_intersectorGeomType)||this.m_intersectorGeomType===i.G.enumEnvelope&&0===(0,i.u)(t)){let r=t===i.G.enumEnvelope?e:this.m_intersectorGeom,a=t===i.G.enumEnvelope?this.m_intersectorGeom:e,o=n.Envelope2D.constructEmpty();return r.queryEnvelope(o),(0,h.c)(a,o,s.total(),0,this.m_progressTracker)}if(0===(0,i.u)(t)&&(0,i.u)(this.m_intersectorGeomType)>0||(0,i.u)(t)>0&&0===(0,i.u)(this.m_intersectorGeomType)){if(t===i.G.enumMultiPoint)return Dr(e,this.m_intersectorGeom,s);if(t===i.G.enumPoint)return kr(e,this.m_intersectorGeom,s);if(this.m_intersectorGeomType===i.G.enumMultiPoint)return Dr(this.m_intersectorGeom,e,s);if(this.m_intersectorGeomType===i.G.enumPoint)return kr(this.m_intersectorGeom,e,s);(0,i.d)("")}return null}ReturnEmptyIntersector(){return null===this.m_geomIntersectorEmptyGeom&&(this.m_geomIntersectorEmptyGeom=this.m_intersectorGeom.createInstance()),this.m_geomIntersectorEmptyGeom}static ReturnEmpty(e,t){return t?e:e.createInstance()}prepareVector(e,t,r){let s=0;return 1&t?(r[0]||=new a.M({vd:e}),s++):r.shift(),2&t?(r[s]||(r[s]=new a.a({vd:e})),s++):r.splice(s,1),4&t?r[s]||(r[s]=new a.P({vd:e})):r.splice(s,1),new _.S(r)}}class is extends u.G{m_inputGeoms;m_smallCursor=null;m_progressTracker;m_geomIntersector;m_index;m_dimensionMask;m_intersector;constructor(e,t,r,s,n){super(),this.m_progressTracker=s,this.m_geomIntersector=t.next(),this.m_intersector=new ss(this.m_geomIntersector,r,n,s),this.m_index=-1,this.m_inputGeoms=e,this.m_dimensionMask=n,-1!==this.m_dimensionMask&&(this.m_dimensionMask<=0||this.m_dimensionMask>7)&&(0,i.a)("bad dimension mask")}next(){if(!this.m_geomIntersector)return null;let e;if(null!==this.m_smallCursor){if(e=this.m_smallCursor.next(),e)return e;this.m_smallCursor=null}for(;e=this.m_inputGeoms.next();)return(0,i.c)(e),this.m_index=this.m_inputGeoms.getGeometryID(),-1===this.m_dimensionMask?this.m_intersector.intersect(e):(this.m_smallCursor=this.m_intersector.intersectEx(e),this.m_smallCursor.next());return null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class ns{getOperatorType(){return 1e4}accelerateGeometry(e,t,r){if(!this.canAccelerateGeometry(e))return!1;(0,o.e)(t,e,!0);let s=0;return(e.getGeometryType()===i.G.enumPolygon||e.getGeometryType()===i.G.enumPolyline)&&(0,a.y)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeAccelerator(r)),!!s}canAccelerateGeometry(e){return(0,a.y)(e)}supportsCurves(){return!0}executeMany(e,t,r,s,i=-1){return new is(e,t,r,s,i)}execute(e,t,r,s){if(e.getGeometryType()===i.G.enumPoint&&t.getGeometryType()===i.G.enumPoint)return ss.intersectPoints(e,t,r);let n=new _.S([e]),a=new _.S([t]),o=this.executeMany(n,a,r,s,-1).next();return o||(0,i.d)("null output"),o}}function as(e,t,r){return t.m_projector.project(e,r)}function os(e,t,r,s,i){return e.m_projector.transformInPlaceZ(t,null,r,s,null,i)}function ls(e,t,r,s){if((!e||!t||!t.isPannable())&&(0,i.a)("fold_into_360_range_geodetic"),e.isEmpty())return e;if(4===r)return ms(e,t,s);let l=e,m=l.getGeometryType();if((0,i.j)(m)){l=Ti(e,t);let s=new n.Envelope2D;l.queryEnvelope(s);let i=(0,o.c)(t,s,!1).total(),a=t.getPannableExtent(),m=Math.floor((s.xmin-a.xmin)/a.width())*a.width()+a.xmin,h=l;for(;m<s.xmax;)m>s.xmin+i&&m<s.xmax-i&&(h=wi(h,t,r,!0,m)),m+=a.width();l=h}else{if(m===i.G.enumEnvelope){let e=new a.P({vd:l.getDescription()});return e.addEnvelope(l,!1),ls(e,t,r,s)}if((0,i.h)(m)){let e=new a.a({vd:l.getDescription()});return e.addSegment(l,!0),ls(e,t,r,s)}}return ms(l,t,s)}function ms(e,t,r){if((!e||!t||!t.isPannable())&&(0,i.a)(""),e.isEmpty())return e;let s,n=e.getGeometryType();if(n===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});t.addEnvelope(e,!1),s=t}else if((0,i.h)(n)){let t=new a.a({vd:e.getDescription()});t.addSegment(e,!0),s=t}else s=e;let o=Ti(s,t);return o.isEmpty()?o:Si(o,t,0,o!==e,0,r)}function hs(e,t,r,s){let i=t.getXYGridRange(),n=e.hasAttribute(1),a=e.hasAttribute(2),m=new l.E,g=new l.E;n&&(m=t.getZGridRange()),a&&(g=t.getMGridRange());let u=(new h.O).execute(e,i,r,s);if(n){let t=u.queryInterval(1,0);m.contains(t)||(e===u&&(u=u.clone()),(0,o.J)(u,m,1,0))}if(a){let t=u.queryInterval(2,0);g.contains(t)||(e===u&&(u=u.clone()),(0,o.J)(u,g,2,0))}return u}class gs{m_projTransform;m_inputPCSHorizonClipOption=0;m_outputPCSHorizonClipOption=0;m_bDontGeonormalizePolygon=!1;m_bClipOutCurvedPoles=!1;m_bNormalizeOutputGeometry=!1;m_bDontHackPolesInGeogToGeog=!1;m_centralMeridianOfOutputGCS=0;m_densificationStepInput=0;constructor(e){e||(0,i.a)(""),this.m_projTransform=e,this.m_bClipOutCurvedPoles=!1;let t=this.m_projTransform.getExtendedParamsImpl();this.m_bNormalizeOutputGeometry=t.normalizeResultGeometry,this.m_bNormalizeOutputGeometry&&(t.legacyHorizonClipping?this.m_bNormalizeOutputGeometry=!1:this.m_projTransform.getOutputSR().isPannable()||(this.m_bNormalizeOutputGeometry=!1)),t.clipWithInputHorizon?(this.m_inputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getInputSR().isPannable()&&(this.m_inputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_inputPCSHorizonClipOption=1,t.clipWithOutputHorizon?(this.m_outputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getOutputSR().isPannable()&&(this.m_outputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_outputPCSHorizonClipOption=1,this.m_centralMeridianOfOutputGCS=t.centralMeridianOfOutputGCS,this.m_densificationStepInput=t.densificationStep;let r=this.m_projTransform.getExtendedParamsInternal();this.m_bDontGeonormalizePolygon=r.hasFlag(2147483648),this.m_bDontHackPolesInGeogToGeog=r.hasFlag(1073741824),this.m_bClipOutCurvedPoles=r.hasFlag(536870912)}project(e,t){if(this.m_projTransform.isIdentity()||e.isEmpty())return e;let r=e.getGeometryType();if(r===i.G.enumPoint)return this.projectPoint(e,t);let s=this.m_projTransform.getInputSR().getCoordinateSystemType(),n=this.m_projTransform.getOutputSR().getCoordinateSystemType(),a=this.m_projTransform.getInputSR(),o=this.m_projTransform.getOutputSR();if(0===s&&s===n){let t=_s(a,o),r=e.clone();return r.applyTransformation(t),r}switch(r){case i.G.enumPolyline:case i.G.enumPolygon:return this.projectMultiPath(e,t);case i.G.enumMultiPoint:return this.projectMultiPoint(e,t);case i.G.enumEnvelope:return this.projectEnvelope(e,t);case i.G.enumGeometryCollection:return this.projectGeometryCollection(e,t);default:(0,i.d)("")}}projectPoint(e,t){let r,s=[e.getXY()],i=null;(r=e.hasAttribute(1))&&(i=[e.getZ()]),this.transformInPlaceZ(s,i,1,s,i,null);let n=e.clone();return n.setXY(s[0]),r&&n.setZ(i[0]),n}projectMultiPoint(e,t){let r=new a.M({copy:e}),s=this.m_projTransform.getInputSR(),n=this.m_projTransform.getOutputSR(),o=s.getCoordinateSystemType(),l=n.getCoordinateSystemType();if(3===o&&(0,i.g)(0),r=Hi(r,s,this.m_inputPCSHorizonClipOption,t),r.isEmpty())return r;2===o&&Yi(s,0,r),ji(this.m_projTransform,r,!1);let m=0;3===l&&(0,i.g)(0);let h=2===l;return h?m=n.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(m=this.m_centralMeridianOfOutputGCS),(!h||0===this.m_outputPCSHorizonClipOption)&&(r=Si(r,Jn(n),m,!1,0,t)),h&&(r=xi(r,n,this.m_outputPCSHorizonClipOption,t),qi(n,r,this.m_bNormalizeOutputGeometry),r.isEmpty()),r}projectMultiPath(e,t){let r=e.getGeometryType();return r===i.G.enumPolygon?this.projectPolygon(e,t):r===i.G.enumPolyline?this.projectPolyline(e,t):void(0,i.d)("project_multi_path_")}projectEnvelope(e,t){this.m_projTransform.getInputSR(),this.m_projTransform.getOutputSR();let r=this.m_projTransform.isVertical()&&e.hasAttribute(1),s=l.E.constructEmpty();if(r&&(s=e.queryInterval(1,0)),s.width()>0){let r=e.clone();r.setInterval(1,0,s.vmin,s.vmin);let i=this.projectEnvelopeHelper(r,t);r.setInterval(1,0,s.vmax,s.vmax);let n=this.projectEnvelopeHelper(r,t);return i.merge(n),i}return this.projectEnvelopeHelper(e,t)}projectPolygon(e,t){(0,i.g)(e.getGeometryType()===i.G.enumPolygon),(0,i.g)(!this.m_projTransform.isIdentity()),(0,i.g)(!e.isEmpty());let r=this.m_projTransform.getInputSR(),s=this.m_projTransform.getOutputSR(),o=r.getCoordinateSystemType(),l=s.getCoordinateSystemType(),m=new a.P({copy:e});3===o&&(0,i.g)(0),3===l&&(0,i.g)(0);let u=2===o,_=2===l,p=u?r.getGCS():r,d=_?s.getGCS():s,c=!_&&!this.m_bDontHackPolesInGeogToGeog,f=!1,x=Hi(m,r,this.m_inputPCSHorizonClipOption,t);if(x.isEmpty())return x;let P=this.m_densificationStepInput,y=!Number.isNaN(P);y&&(x=(new g.O).execute(x,P,0,0,t));let E,S=_?s.getPCSInfo():null,C=NaN;u&&(C=r.getCentralMeridian());let I=null!==s.getGCSSplitLines();if(this.m_bDontGeonormalizePolygon){let e=x;if(u&&(Li(r,C,e),y)){let e=r.getUnitsPerMillimeter();P*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,e,c),y){let e=r.getGCS().getUnitsPerMillimeter();P*=s.getGCS().getUnitsPerMillimeter()/e}E=e}else{let e=new a.a({vd:x.getDescription()});if(e.addAndExplicitlyOpenAllPaths(x,!1),u){if(Li(r,C,e),y){let e=r.getUnitsPerMillimeter();P*=r.getGCS().getUnitsPerMillimeter()/e}if(this.m_bClipOutCurvedPoles){let s=r.getPCSInfo(),i=s.getSouthPoleGeometry()===ba.PE_POLE_LINE_CURVED,a=s.getNorthPoleGeometry()===ba.PE_POLE_LINE_CURVED;if(i||a){let r=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(r),r.inflateCoords(1,1);let s=89.9999*p.getOneDegreeGCSUnit();i&&(r.ymin=-s),a&&(r.ymax=s),e=(0,h.a)(e,r,p,0,0,t)}}}if(Ki(this.m_projTransform,e,c),y){let e=Jn(r).getUnitsPerMillimeter();P*=Jn(s).getUnitsPerMillimeter()/e}let i=NaN;_?(S=s.getPCSInfo(),i=s.getCentralMeridian()):Number.isNaN(this.m_centralMeridianOfOutputGCS)||(i=this.m_centralMeridianOfOutputGCS);let o=us(r)|us(s),l=10*d.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(o=3,l=10*d.getTolerance(0)),E=function(e,t,r,s,i,n,a,o,l){return new js(e,null,r,t,s,i,a,o,n).geoNormalizePolygonGeometry(l)}(x,r,e,d,i,t,o,l,this.m_bNormalizeOutputGeometry),o=0}if(I&&((0,i.g)(!s.isPannable()),E=di(E,s,t)),_){if(!f){let e=d.getPannableExtent().width();if(E.queryInterval(0,0).width()>=e-10*d.getTolerance(0)){let e=S.getNorthPoleLocation(),t=S.getSouthPoleLocation(),r=S.getNorthPoleGeometry(),s=S.getSouthPoleGeometry(),i=0;r===ba.PE_POLE_POINT&&e!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(i=1),s===ba.PE_POLE_POINT&&t!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(i|=2),f||=0!==i}}E=xi(E,s,this.m_outputPCSHorizonClipOption,t),y&&(E=(new g.O).execute(E,P,0,0,t)),Oi(s,E,this.m_bNormalizeOutputGeometry)}return E.isEmpty()||f&&(E=(new ts).execute(E,s,!1,t)),E}projectPolyline(e,t){(0,i.g)(e.getGeometryType()===i.G.enumPolyline),(0,i.g)(!this.m_projTransform.isIdentity()),(0,i.g)(!e.isEmpty());let r=this.m_projTransform.getInputSR(),s=this.m_projTransform.getOutputSR(),n=r.getCoordinateSystemType(),o=s.getCoordinateSystemType(),l=new a.a({copy:e});3===n&&(0,i.g)(0),3===o&&(0,i.g)(0);let m=2===n,h=2===o;m&&r.getGCS();let u=h?s.getGCS():s,_=!h&&!this.m_bDontHackPolesInGeogToGeog,p=Hi(l,r,this.m_inputPCSHorizonClipOption,t);if(p.isEmpty())return p;let d=NaN;m&&(d=r.getCentralMeridian());let c,f=null!==s.getGCSSplitLines(),x=this.m_densificationStepInput,P=!Number.isNaN(x);if(P&&(p=(new g.O).execute(p,x,0,0,t)),this.m_bDontGeonormalizePolygon){if(m&&(Li(r,d,p),P)){let e=r.getUnitsPerMillimeter();x*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,p,_),P){let e=r.getGCS().getUnitsPerMillimeter();x*=s.getGCS().getUnitsPerMillimeter()/e}c=p}else{let e=new a.a({vd:p.getDescription()});if(e.addAndExplicitlyOpenAllPaths(p,!1),m&&(Li(r,d,e),P)){let e=r.getUnitsPerMillimeter();x*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,e,_),P){let e=r.getGCS().getUnitsPerMillimeter();x*=s.getGCS().getUnitsPerMillimeter()/e}let i=NaN;h?i=s.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(i=this.m_centralMeridianOfOutputGCS);let n=us(r)|us(s),o=10*u.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(n=3,o=0),c=function(e,t,r,s,i,n,a,o,l){return new js(e,null,r,t,s,i,a,o,n).geoNormalizePolylineGeometry(l)}(p,r,e,u,i,t,n,o,this.m_bNormalizeOutputGeometry),n=0}return f&&((0,i.g)(!s.isPannable()),c=di(c,s,t)),h&&(c=xi(c,s,this.m_outputPCSHorizonClipOption,t),P&&(c=(new g.O).execute(c,x,0,0,t)),Oi(s,c,this.m_bNormalizeOutputGeometry)),c.isEmpty(),c}projectGeometryCollection(e,t){return(0,i.g)(0),{}}projectEnvelopeHelper(e,t){let r=(e.height()+e.width())/400;if(0!==r){let s=(new g.O).execute(e,r,0,0,t),i=this.projectMultiPath(s,t),l=new o.E({vd:e.getDescription()});if(i.isEmpty()){let r=Math.min(e.height(),e.width()),i=(0,o.e)(this.m_projTransform.getInputSR(),e,!0).total();if(r>100*i){let e=n.Envelope2D.constructEmpty(),t=(0,o.c)(this.m_projTransform.getOutputSR(),e,!0).total(),s=this.m_projTransform.getInputSR().getOneMeter()/this.m_projTransform.getOutputSR().getOneMeter();if(r>100*Math.max(i,t*s))return l}let m=new a.a;m.addAndExplicitlyOpenAllPaths(s,!1),this.projectMultiPath(m,t).queryEnvelope(l);let h=new a.M({vd:e.getDescription()});h.reserve(4);let g=new o.P;for(let t=0;t<4;t++)e.queryCornerByVal(t,g),h.add(g);let u=this.projectMultiPoint(h,t),_=new o.E;return u.queryEnvelope(_),l.merge(_),l}return i.queryEnvelope(l),l}{let r=e.getCenterXY(),s=new o.P(r),i=this.projectPoint(s,t),n=new o.E({vd:e.getDescription()});if(i.isEmpty())n.setEmpty();else{e.copyTo(n);let t=i.getXY();n.setCoords(t.x,t.y,t.x,t.y)}return n}}transformInPlace(e,t,r,s){return(0,i.g)(0),0}transformInPlaceZ(e,t,r,s,n,a){if(this.m_projTransform.isIdentity())return e!==s&&(0,l.F)(s,e,r),t!==n&&(0,l.b)(n,t,0,0,r),r;let o=this.m_projTransform,m=o.getInputSR(),h=o.getOutputSR(),g=m.getCoordinateSystemType(),u=h.getCoordinateSystemType();if(0===g&&g===u)return _s(m,h).transformPoints2D(e,r,s),o.isVertical()&&(0,i.g)(0),r;3===g&&(0,i.t)("image: transform_in_place_"),3===u&&(0,i.t)("image: transform_in_place_"),function(e,t,r,s,n){let a=s.getCoordinateSystemType();if(2===a){if(0===n)r!==e&&(0,l.F)(r,e,t),function(e,t,r){let s=e.getPCSHorizon();if(s.getGeometryType()===i.G.enumPolygon){let i=e.getDefaultPrecisionSR().getTolerance(0),n=s;for(let e=0;e<r;e++)1!==tr(n,t[e],i)&&t[e].setNAN();return}if(s.getGeometryType()===i.G.enumEnvelope){let e=s;for(let s=0;s<r;s++)e.contains(t[s])||t[s].setNAN();return}(0,i.a)("")}(s,r,t);else if(r!==e&&(0,l.F)(r,e,t),s.isPannable()){let e=s.getTolerance(0);(function(e,t,r,s){for(let i=0;i<t;i++){if(e[i].y<r.ymin||e[i].y>r.ymax){e[i].setNAN();continue}let t=e[i].x;e[i].x=vi(t,r,s)}})(r,t,s.getPannableExtent(),e),Ci(r,t,s,0)}}else{(0,i.g)(1===a);let n=s.getTolerance(0),o=s.getPannableExtent();for(let s=0;s<t;s++)r[s].assign(Fi(e[s],o,n))}}(e,r,s,m,this.m_inputPCSHorizonClipOption),n!==t&&(0,l.b)(n,t,0,0,r),2===g&&zi(m,0,s,r),en(this.m_projTransform,s,n,r,!1);let _=0,p=2===u;p?_=h.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(_=this.m_centralMeridianOfOutputGCS),(!p||0===this.m_outputPCSHorizonClipOption)&&Ci(s,r,h.getGCS(),_),p&&(Ei(s,r,h,this.m_outputPCSHorizonClipOption),Mi(h,s,r,!1));let d=r;for(let e=0;e<r;++e)s[e].isNAN()&&(n&&(n[e]=NaN),d--);return d}}function us(e){if(2!==e.getCoordinateSystemType())return 0;let t=0,r=e.getPCSInfo(),s=r.getNorthPoleLocation(),i=r.getSouthPoleLocation(),n=r.getNorthPoleGeometry(),a=r.getSouthPoleGeometry();return n===ba.PE_POLE_POINT&&s!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(t=1),a===ba.PE_POLE_POINT&&i!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(t|=2),t}function _s(e,t){let r=e.getHorzUnitFactor(),s=t.getHorzUnitFactor(),i=1,n=1,a=20015077/180;1===e.getUnit().getUnitType()&&(i=a),1===t.getUnit().getUnitType()&&(n=a);let o=r/s*(i===n?1:i/n),l=new m.T;return l.setScaleCoords(o,o),l}class ps{getOperatorType(){return 10300}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r){return!t||t.isIdentity()?e:new ds(e,t,r)}execute(e,t,r){return t.isIdentity()?e:as(e,t,r)}transform(e,t,r,s,i=!0){return i?function(e,t,r,s){e.m_projector.transformInPlaceZ(t,null,r,s,null,null);let i=s.slice(0,r).filter(e=>!e.isNAN());for(let e=0,t=i.length;e<t;++e)s[e].assign(i[e]);return i.length}(e,t,r,s):os(e,t,r,s,null)}transform3D(e,t,r,s,n=!0){return(0,i.g)(0),0}foldInto360Range(e,t){return ms(e,t,null)}foldInto360RangeGeodetic(e,t,r){return ls(e,t,r,null)}normalizeGeometryEx(e,t,r,s,n=0){return function(e,t,r,s,n){if(!t.isPannable()||e.isEmpty())return e;let h=e.getGeometryType();h===i.G.enumGeometryCollection&&(0,i.t)("not yet impl for geometry collection");let g=t.getPannableExtent();Number.isNaN(r)&&(r=g.getCenterX());let u=g.width(),_=.5*u,p=n>0,d=e.queryInterval(0,0);if(!p&&d.width()<_||!(0,i.i)(e.getGeometryType())){let t=d.getCenter();if(Math.abs(t-r)<=_)return e;{let s=new m.T,i=r-t,n=(0,l.H)(i/u)*u;s.setShiftCoords(n,0);let a=e.clone();return a.applyTransformation(s),a}}if(h===i.G.enumPolygon){let i=new a.a({vd:e.getDescription()});i.addAndExplicitlyOpenAllPaths(e,!1),p&&(i=cs(i,t,2,n,NaN,null,!0));let m=[];if(!s){{let r=e;p&&(r=new a.P,r.add(i,!1));let s=function(e,t,r){let s=On();t.querySpheroidData(s);let i=t.getGCS()===t?null:t.getSRToGCSTransform(),n=(0,l.m)(l.P,100),a=new o.k(0,0,0),m=e.getPointCount(),h=t.getGCS().getUnit().getUnitToBaseFactor();for(let t=0,r=m;t<r;){let o=Math.min(100,r-t);e.queryCoordinates(n,o,t,t+o),i&&(new ps).transform(i,n,o,n,!1);for(let e=0;e<o;e++){if(n[e].isNAN())continue;n[e].scale(h);let t=v(s.majorSemiAxis,s.e2,n[e]);a.addThis(t)}t+=o}let g=b(s.majorSemiAxis,s.e2,a);g.scale(1/h);let u=e;if(!new Ys(t.getGCS(),g).project(u))return 0;r.length=e.getPathCount();let _=u.calculateArea2D()<0;for(let t=0,s=e.getPathCount();t<s;t++){let e=u.calculateRingArea2D(t);r[t]=_?e<0:e>0}return _?-1:1}(e,t,m);if(s)s<0&&i.reverseAllPaths();else{let e=r.getPathCount();for(let t=0;t<e;t++)m.push(r.calculateRingArea2D(t)>0)}}s=m}return new js(null,s,i,null,t,r,3,0,null).geoNormalizePolygonGeometry(!0)}if(h===i.G.enumPolyline){let s=new a.a({vd:e.getDescription()});return s.addAndExplicitlyOpenAllPaths(e,!1),p&&(s=cs(s,t,2,n,NaN,null,!0)),new js(null,null,s,null,t,r,3,0,null).geoNormalizePolylineGeometry(!0)}if(h===i.G.enumMultiPoint){let t,s=e,i=s.getAttributeStreamRef(0),n=null,a=r,o=0,m=.1*u;for(let r=0,h=s.getPointCount();r<h;r++){let s=i.read(2*r),h=s-a;if(Math.abs(h)>_&&(h=(0,l.H)(h/u)*u,o-=h,Math.abs(o)<m&&(o=0)),0!==o){n||=(t=e.clone(),t.getAttributeStreamRef(0));let i=s+o;n.write(2*r,i)}a=s}return n?(t.notifyModified(),t):e}(0,i.d)("")}(e,t,r,s,n)}normalizeGeometry(e,t,r){return function(e,t,r){if(!t.isPannable()||e.isEmpty())return e;let s=t.getPannableExtent().width(),n=.5*s,a=e.queryInterval(0,0);if(a.width()<n||!(0,i.i)(e.getGeometryType())){if(Number.isNaN(r))return e;let t=a.getCenter();if(Math.abs(t-r)<=n)return e;{let i=new m.T,n=r-t,a=(0,l.H)(n/s)*s;i.setShiftCoords(a,0);let o=e.clone();return o.applyTransformation(i),o}}let o=e.getGeometryType(),h=e,g=h.getAttributeStreamRef(0),u=e.clone(),_=u.getAttributeStreamRef(0),p=0,d=0,c=0,f=(0,i.j)(o)?0:-1,x=l.E.constructEmpty(),P=!1;for(let e=0,t=h.getPointCount();e<t;e++){let t=g.read(2*e);e===d&&((0,i.j)(o)?(0===f&&Number.isNaN(r)&&(P=!0),f>0&&Number.isNaN(r)&&(r=x.getCenter(),P=!1),d=h.getPathEnd(f),f++):d=h.getPointCount(),Number.isNaN(r)?c=t:(c=r,p=0));let a=t-c;Math.abs(a)>n&&(a=(0,l.H)(a/s)*s,p-=a,Math.abs(p)<.1*s&&(p=0));let m=t+p;_.write(2*e,m),P&&x.mergeCoordinate(m),c=t}return u.notifyModified(),u}(e,t,r)}clipToSpatialReference(e,t,r,s=0){return function(e,t,r,s){let a=t.getCoordinateSystemType();if(0===a){let s=new ma;return t.queryPrecisionDescriptor(s),hs(e,s,t,r)}let o=e;(2===s||3===s)&&t.isPannable()&&(o=ms(o,t,r));let l=new ma;if(t.queryPrecisionDescriptor(l),o=hs(o,l,t,r),0===s||o.isEmpty())return o;if(1===a){if(1===s){let e=new n.Envelope2D;o.queryLooseEnvelope(e);let s=t.getPannableExtent(),i=.01*s.width();return s.xmin=e.xmin-i,s.xmax=e.xmax+i,(new h.O).execute(o,s,t,r)}return o}if(2===a){let e=t.getPCSHorizon();if(1===s||2===s){let s=(new ns).execute(o,e,t,r);return s===e?s.clone():s}return o}if(3===a)return o;(0,i.d)("missing implementation")}(e,t,r,s)}}class ds extends u.G{m_inputGeoms;m_projTrans;m_index;m_progressTracker;constructor(e,t,r){super(),this.m_projTrans=t,this.m_progressTracker=r,this.m_index=-1,e||(0,i.a)(""),this.m_inputGeoms=e}next(){let e=this.m_inputGeoms.next();return null==e?null:((0,i.p)(e),(0,i.c)(e),this.m_index=this.m_inputGeoms.getGeometryID(),as(e,this.m_projTrans,this.m_progressTracker))}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}function cs(e,t,r,s,n,o,l=!1){e||(0,i.a)("Geometry.Geodetic_densify.densify");let m=e.getGeometryType();if((0,i.c)(e),e.isEmpty()||(0,i.f)(m))return e;let h=new Ss;h.m_sr=t,h.m_gcs=t.getGCS(),h.m_transform=h.m_gcs===t?null:t.getSRToGCSTransform(),h.m_progressTracker=o;let g,u,_,p=On();if(h.m_gcs.querySpheroidData(p),h.m_a=p.majorSemiAxis,h.m_eSquared=p.e2,h.m_rpu=h.m_gcs.getUnit().getUnitToBaseFactor(),h.m_gcsTolerance=h.m_gcs.getTolerance(0),h.m_radTolerance=h.m_gcsTolerance*h.m_rpu,h.m_maxLength=s,h.m_maxDeviation=n,h.m_curveType=r,m===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});t.addEnvelope(e,!1),g=t,m=i.G.enumPolygon}else if((0,i.h)(m)){let t=new a.a({vd:e.getDescription()});t.addSegment(e,!0),g=t,m=i.G.enumPolyline}else g=e;if(4!==h.m_curveType){if((0,i.g)((0,i.j)(m)),u=h.replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(g),u.isEmpty())return u;u=fs(h.m_rpu,u);let e=h.geodeticDensify(u);l||(e=(new ps).foldInto360RangeGeodetic(e,h.m_gcs,h.m_curveType)),_=h.m_transform&&!h.m_transform.isIdentity()?(new ps).execute(e,h.m_transform.getInverse(),o):e}else{let e;if((0,i.g)((0,i.j)(m)),t.isPannable())e=Ti(g,t);else{let r=t.getPCSHorizon();e=(new ns).execute(g,r,t,o),e===r&&(e=r.clone())}if(u=e,u.isEmpty())return u;_=h.shapePreservingDensify(u)}return _}function fs(e,t){let r=new n.Envelope2D;if(t.queryLooseEnvelope(r),r.width()*e<Math.PI)return t;let s=!1,i=t.querySegmentIterator(),a=new l.P,m=new l.P;for(;i.nextPath();)for(;i.hasNextSegment();){let t=i.nextSegment();if(a.setCoordsPoint2D(t.getStartXY()),m.setCoordsPoint2D(t.getEndXY()),a.scale(e),m.scale(e),Math.abs(a.x-m.x)>Math.PI){if(!Ps(a,m)){s=!0;break}if(Math.abs(a.x-m.x)>2*Math.PI){s=!0;break}}}if(!s)return t;let h=t.createInstance();h.reserve(t.getPointCount());let g=t.getDescription().getAttributeCount()>1,u=new l.P,_=new l.P,p=new l.P(0,0),d=new l.P(0,0),c=new o.P;for(i.resetToFirstPath();i.nextPath();){let t=NaN,r=0;for(;i.hasNextSegment();){let s=i.nextSegment();if(a.setCoordsPoint2D(s.getStartXY()),m.setCoordsPoint2D(s.getEndXY()),a.scale(e),m.scale(e),Number.isNaN(t)?(r=Fs(a.x,NaN,r),p.setCoordsPoint2D(a)):p.setCoordsPoint2D(d),t=p.x,Ps(a,m)){if(m.x-a.x>2*Math.PI)for(;m.x-a.x>2*Math.PI;)m.x-=2*Math.PI;else if(m.x-a.x<2*-Math.PI)for(;m.x-a.x<2*-Math.PI;)m.x+=2*Math.PI;r=Fs(m.x,NaN,r),d.setCoordsPoint2D(m)}else u.setCoordsPoint2D(m),qs(u),r=Fs(u.x,t,r),d.setCoords(r+u.x,u.y);if(Math.abs(d.x-m.x)<.5&&d.setCoordsPoint2D(m),g)s.queryCoord(0,c),_.setCoordsPoint2D(p),_.scale(1/e),c.setXY(_),i.isFirstSegmentInPath()?h.startPathPoint(c):h.lineToPoint(c),i.isLastSegmentInPath()&&!i.isPathClosed()&&(s.queryCoord(1,c),_.setCoordsPoint2D(d),_.scale(1/e),c.setXY(_),h.lineToPoint(c));else{i.isFirstSegmentInPath()&&h.insertPath2D(-1,null,0,0,!0);let t=h.getPathCount()-1;_.setCoordsPoint2D(p),_.scale(1/e),h.insertPoint2D(t,-1,_),i.isLastSegmentInPath()&&!i.isPathClosed()&&(_.setCoordsPoint2D(d),_.scale(1/e),h.insertPoint2D(t,-1,_))}}}return h}function xs(e,t,r,s,i,n,a,o,m,h,g,u){let _=new l.P,p=new l.P,d=s.compare(i)>0;Vs(d,s,i,_,p);let c=vs(e,t,r,_,p,n,a,o,m,h,null,g,u);return d&&Ds(m,h,null,g),c}function Ps(e,t){return!!(Ea(e.y,l.l)&&Ea(t.y,l.l)||Ea(e.y,-l.l)&&Ea(t.y,-l.l))}function ys(e,t){return!!(Ea(e.y,l.l)&&!Ea(t.y,l.l)||Ea(e.y,-l.l)&&!Ea(t.y,-l.l))}function Es(e,t){return!!(Ea(t.y,l.l)&&!Ea(e.y,l.l)||Ea(t.y,-l.l)&&!Ea(e.y,-l.l))}class Ss{m_sr=null;m_gcs=null;m_transform=null;m_progressTracker=null;m_a=0;m_eSquared=0;m_rpu=0;m_gcsTolerance=0;m_radTolerance=0;m_maxLength=0;m_maxDeviation=0;m_curveType=0;geodeticDensify(e){let t=e.createInstance(),r=e.querySegmentIterator(),s=[],i=[],n=new a.S,o=e.getDescription().getAttributeCount()>1;for(;r.nextPath();){let e=[0];for(;r.hasNextSegment();){let a=r.nextSegment(),m=a.getStartXY(),h=a.getEndXY();m.scale(this.m_rpu),h.scale(this.m_rpu);let g=new l.P,u=new l.P,_=m.compare(h)>0;Vs(_,m,h,g,u),s.length=0,i.length=0,this.m_maxLength>0?vs(this.m_a,this.m_eSquared,this.m_curveType,g,u,this.m_maxLength,this.m_maxDeviation,this.m_radTolerance,null,null,o?i:null,s,e):Gs(),_&&Ds(null,null,o?i:null,s),s[0].setCoordsPoint2D(a.getStartXY()),s.at(-1).setCoordsPoint2D(a.getEndXY());let p=1/this.m_rpu;for(let e=1,t=s.length-1;e<t;e++)s[e].scale(p);if(o){let e=ks(_,a,n);Is(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),a,e,i,s,t)}else Cs(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),s,t)}}return t}shapePreservingDensify(e){let t=e.createInstance(),r=e.querySegmentIterator(),s=[],i=[],n=new a.S,o=e.getDescription().getAttributeCount()>1;for(;r.nextPath();)for(;r.hasNextSegment();){let e=r.nextSegment(),a=e.getStartXY(),l=e.getEndXY(),m=a.compare(l)>0,h=ks(m,e,n);s.length=0,i.length=0,Ns(this.m_a,this.m_eSquared,this.m_rpu,h,this.m_sr,this.m_maxLength,this.m_maxDeviation,o?i:null,s),m&&Ds(null,null,o?i:null,s),o?Is(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),e,h,i,s,t):Cs(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),s,t)}return t}replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(e){let t=e.hasNonLinearSegments();if((!this.m_transform||this.m_transform.isIdentity())&&(e=Ti(e,this.m_gcs),!t))return e;let r=e.createInstance();r.reserveParts(e.getPointCount(),e.getPathCount());for(let t=0,s=e.getPathCount();t<s;++t){let s=new a.M,i=e.getPathStart(t),n=e.getPathEnd(t);s.addPoints(e,i,n);let l=e.isClosedPath(t),m=!1;if(l&&n-i===1&&e.hasNonLinearSegmentsPath(t)){let t=new o.P;e.getPointByVal(i,t),s.add(t),m=!0}if(this.m_transform&&!this.m_transform.isIdentity()){if(l&&!m){let t=new o.P;e.getPointByVal(i,t),s.add(t)}if(s=(new ps).execute(s,this.m_transform,this.m_progressTracker),l&&s.getPointCount()>1){let e=s.getXY(0),t=s.getXY(s.getPointCount()-1);e.equals(t)&&s.removePoint(s.getPointCount()-1)}}s.getPointCount()>1&&(r.addPathMultiPoint(s,0,-1,!0),l&&r.closePathWithLine())}return r}}function Cs(e,t,r,s){e&&s.insertPath2D(-1,null,0,0,!0);let i=s.getPathCount()-1;s.insertPointsFromPoints(i,-1,r,0,r.length-1,!0),t&&s.insertPoint2D(i,-1,r.at(-1))}function Is(e,t,r,s,i,n,a){a.reserve(a.getPointCount()+n.length-1);let l=new o.P;if(r.queryStart(l),e?a.startPathPoint(l):a.lineToPoint(l),n.length>2){let e=s.calculateLength2D();for(let t=1;t<n.length-1;t++){let r=s.lengthToT(i[t]*e);s.queryCoord(r,l),l.setXY(n[t]),a.lineToPoint(l)}}t&&(r.queryEnd(l),a.lineToPoint(l))}function vs(e,t,r,i,n,a,o,m,h,g,u,_,p){let d={stack:[],error:void 0,hasError:!1};try{let c=(0,s.mS)(d,new Sa,!1),f=(0,s.mS)(d,new Sa,!1),x=(0,s.mS)(d,new Sa,!1);Da.geodeticDistance(e,t,i.x,i.y,n.x,n.y,x,c,f,r);let P=x.val,y=c.val,E=f.val,S=y,C=E;S<0&&(S+=2*Math.PI),C<0&&(C+=2*Math.PI),h&&(h[0]=S),g&&(g[0]=C);let I=NaN,v=NaN;if(null!==u){let r=Va.q90(e,t),s=Va.q(e,t,i.y);I=(r-s)/P,v=(r+s)/P}let G=ys(i,n),w=Es(i,n),b=G||w,T=function(e,t,r){return!(!Us(e,t,r)||Ea(e.y,l.l)||Ea(e.y,-l.l)||Ea(t.y,l.l)||Ea(t.y,-l.l))}(i,n,m),N=(0,s.mS)(d,new l.S(new Sa,new Sa),!1),D=new l.P,V=new l.P,k=new l.P;p[0]=Fs(i.x,NaN,p[0]);let F=p[0];if(P<=a)return _.push(i.clone()),p[0]=Fs(n.x,NaN,p[0]),u?.push(0),b?(G&&Hs(i,n,u,_),w&&As(i,n,u,_)):T?Ms(i,n,y,I,v,u,_):o>0&&(V.setCoords(i.x-F,i.y),D.setCoords(n.x-p[0],n.y),F=ws()),_.push(n.clone()),P;let H=1+Math.ceil(P/a),A=P/(H-1),M=new l.P;_.push(i.clone()),M.setCoordsPoint2D(i),V.setCoords(i.x-p[0],i.y),null!==u&&u.push(0);for(let s=1;s<H;s++){let a;if(s<H-1){let n=s*A;Da.geodeticCoordinate(e,t,i.x,i.y,n,y,N.at(0),N.at(1),r),D.setCoords(N.at(0).val,N.at(1).val),p[0]=Fs(D.x,M.x,p[0]),k.setCoords(p[0]+D.x,D.y),a=s/(H-1)}else p[0]=Fs(n.x,NaN,p[0]),D.setCoords(n.x-p[0],n.y),k.setCoordsPoint2D(n),a=1;b?(1===s&&G&&Hs(i,k,u,_),s===H-1&&w&&As(M,n,u,_)):T?Us(M,k,m)&&(i.x<n.x?M.x>k.x&&(p[0]+=2*Math.PI,k.setCoords(p[0]+D.x,D.y)):M.x<k.x&&(p[0]-=2*Math.PI,k.setCoords(p[0]+D.x,D.y)),Ms(M,k,y,I,v,u,_)):o>0&&ws(),_.push(k.clone()),u?.push(a),M.setCoordsPoint2D(k),V.setCoordsPoint2D(D),F=p[0]}return P}catch(e){d.error=e,d.hasError=!0}finally{(0,s.hk)(d)}}function Gs(e,t,r,s,n,a,o,l,m,h){(0,i.g)(0)}function ws(e,t,r,s,n,a,o,l,m,h,g,u,_,p,d){return(0,i.g)(0),0}function bs(e,t,r,s){let i=v(e,t,r),n=v(e,t,s);return o.k.distance(i,n)}function Ts(e,t,r,s,n,a,m,h){let g=[],u=(0,l.m)(Array,8),_=2,p=n.getCoord2D(a);u[0][0]=p.x,u[0][1]=p.y,p=n.getCoord2D(m),u[1][0]=p.x,u[1][1]=p.y;let d=e=>{if(null!==r){let t=Ga.projToGeog(r,e,u);(0,i.g)(t===e)}for(let e of u)e[0]*=s,e[1]*=s};d(2),g.push(v(e,t,new l.P(u[0][0],u[0][1]))),g.push(v(e,t,new l.P(u[1][0],u[1][1])));let c=o.k.distance(g[0],g[1]);if(c>h)return c;let f=0;for(_=3;_<=17;){let r=1/(_-1),s=0;for(let e=1;e<_;++e)if(1&e){let t=(0,l.r)(a,m,e*r);n.queryCoord2D(t,p),u[s][0]=p.x,u[s][1]=p.y,s++}d(s);let x=1;for(let r=0;r<s;++r)g.splice(x,0,v(e,t,new l.P(u[r][0],u[r][1]))),x++;x=0;let P=g[x];x++;let y=0;for(;x!==g.length;++x){let e=g[x];y+=o.k.distance(P,e),P=e}if(y>h)return y;if(f=y-c,(0,i.g)(f>=0||Math.abs(f)<1e-14*y),f<0&&(f=0),c=y,y+f<=h)return y+f;_=2*_-1}return c+f}function Ns(e,t,r,s,n,a,o,m,h){let g=s.isCurve(),u=function(e,t){return e*Math.sqrt(1-t)}(e,t)*Math.PI*179/180,_=a;(!(a>0)||a>u)&&(_=u);let p=o>0,d=NaN;p&&(d=function(e,t,r){let s=r/(2*function(e,t){return(1-t)*e}(e,t)),i=s*s;return r*(1-i*(.16666666666666666-.008333333333333333*i))}(e,t,o));let c=1===n.getCoordinateSystemType(),f=null;c||(f=n.getPECoordSys());let x=n.getTolerance(0),P=s.getStartXY(),y=s.getEndXY(),E=new l.P,S=new l.P;if(c)E.setCoordsPoint2D(P),E.scale(r),S.setCoordsPoint2D(y),S.scale(r);else{let e=[P.x,P.y,y.x,y.y];Ga.projToGeog(f,2,e),E.setCoords(e[0],e[1]),E.scale(r),S.setCoords(e[2],e[3]),S.scale(r)}let C=0,I=0,G=[],w=[],b=[];G.push(y.clone()),w.push(S.clone()),b.push(1),h.push(P.clone()),null!==m&&m.push(I);let T=n.isPannable(),V=P.clone(),k=[.5,.33333333333333337,.6666666666666666,.16666666666666669,.8333333333333333],F=5;g||(p?(k[0]=.5,k[1]=.25,k[2]=.75,F=3):F=1),(0,i.g)(_>0);let H=e=>{if(e=e.clone(),null!==f){let t=[e.x,e.y];Ga.projToGeog(f,1,t),e.setCoords(t[0],t[1])}return e.scale(r),e};for(;w.length>0;){let a=G.at(-1).clone();S.assign(w.at(-1));let o=b.at(-1),u=!1,P=NaN,y=Ts(e,t,f,r,s,I,o,_),A=_>=y&&Math.abs(E.y-S.y)<.9*Math.PI;c&&A&&(A=Math.abs(E.x-S.x)<.9*Math.PI);let M=new l.P,U=new l.P,q=!1;if(!p&&A&&A&&(q=!0),s.calculateSubLength(I,o)<=x&&(q=!0),!q)for(let m=0;m<F;m++){let h=(0,l.r)(I,o,k[m]),_=new l.P;s.queryCoord2D(h,_);let f=H(_);if(0===m&&(P=h,M.setCoordsPoint2D(_),U.setCoordsPoint2D(f),!A)){u=!0;break}if((0,i.g)(p),c&&Math.abs(E.x-f.x)>=Math.PI){u=!0;break}let x=new l.P,y=new l.P;g?(x=l.P.lerp(V,a,k[m]),y=H(x)):(x=_.clone(),y=f.clone());let C=N(e,t,E,S,k[m]),G=C.clone();if(c?(G.x/=r,G.y/=r):(G.x/=r,G.y/=r,os(n.getGCSToSRTransform(),[G],1,[G],null)),G.isNAN()){let{second:r}=D(e,t,v(e,t,f),v(e,t,E),v(e,t,S),2,null);if(r>d){u=!0;break}}else{if(T){let e=n.getPannableExtent().width(),t=(0,l.r)(s.getStartX(),s.getEndX(),.5);for(;G.x<t-.5*e;)G.x+=e;for(;G.x>=t+.5*e;)G.x-=e}let r=s.getClosestCoordinateOnInterval(G,new l.E(I,o),-1),i=s.getCoord2D(r);i=H(i);let a=bs(e,t,i,C);if(a>d){if(a<4*d){let{second:r}=D(e,t,v(e,t,i),v(e,t,E),v(e,t,S),2,null);a=r}if(a>d){u=!0;break}}else if(g){let r=v(e,t,f),s=v(e,t,E),i=v(e,t,S),{second:n}=D(e,t,r,s,i,3,null);if(n<=d){r=v(e,t,y);let{second:a}=D(e,t,r,s,i,3,null);n=a}if(n>d){u=!0;break}}}}u?(G.push(M.clone()),w.push(U.clone()),b.push(P)):(G.pop(),w.pop(),b.pop(),h.push(a.clone()),C+=y,null!==m&&m.push(C),V.setCoordsPoint2D(a),E.setCoordsPoint2D(S),I=o)}if(null!==m){let e=1/C;for(let t=0;t<m.length;t++)m[t]*=e}}function Ds(e,t,r,s){if(s.reverse(),null!==r&&r.reverse(),e){let r=e[0];e[0]=t[0],t[0]=r}}function Vs(e,t,r,s,i){e?(s.setCoordsPoint2D(r),i.setCoordsPoint2D(t)):(s.setCoordsPoint2D(t),i.setCoordsPoint2D(r))}function ks(e,t,r){return e?(r.create(t.getGeometryType()),t.copyTo(r.get()),r.get().reverse(),r.get()):t}function Fs(e,t,r){if(Number.isNaN(t)){for(;r-e>Math.PI;)r-=2*Math.PI;for(;e-r>Math.PI;)r+=2*Math.PI;return r}return r+e-t>Math.PI?r-=2*Math.PI:t-(r+e)>Math.PI&&(r+=2*Math.PI),r}function Hs(e,t,r,s){if(e.y>0){let i=new l.P;i.setCoords(t.x,l.l),!Ea(e.x,i.x)&&!Ea(t.y,i.y)&&(s.push(i),null!==r&&r.push(0))}else{let i=new l.P;i.setCoords(t.x,-l.l),!Ea(e.x,i.x)&&!Ea(t.y,i.y)&&(s.push(i),null!==r&&r.push(0))}}function As(e,t,r,s){if(t.y>0){let i=new l.P;i.setCoords(e.x,l.l),!Ea(t.x,i.x)&&!Ea(e.y,i.y)&&(s.push(i),null!==r&&r.push(1))}else{let i=new l.P;i.setCoords(e.x,-l.l),!Ea(t.x,i.x)&&!Ea(e.y,i.y)&&(s.push(i),null!==r&&r.push(1))}}function Ms(e,t,r,s,i,n,a){if(function(e){return function(e,t){return 0===e||Math.abs(e)<=t}(e,ya)}(r)){if(l.l-e.y>0){let t=new l.P;t.setCoords(e.x,l.l),a.push(t),null!==n&&n.push(s)}if(l.l-t.y>0){let e=new l.P;e.setCoords(t.x,l.l),a.push(e),null!==n&&n.push(s)}}else{if(l.l+e.y>0){let t=new l.P;t.setCoords(e.x,-l.l),a.push(t),null!==n&&n.push(i)}if(l.l+t.y>0){let e=new l.P;e.setCoords(t.x,-l.l),a.push(e),null!==n&&n.push(i)}}}function Us(e,t,r){return Math.abs(Math.abs(e.x-t.x)-Math.PI)<=r}function qs(e){if(e.x<-Math.PI)for(;e.x<-Math.PI;)e.x+=2*Math.PI;else if(e.x>Math.PI)for(;e.x>Math.PI;)e.x-=2*Math.PI}function Bs(e,t,r,i){let n={stack:[],error:void 0,hasError:!1};try{let a=[r.x],o=[r.y-i],l=[r.x],m=[r.y+i];k(a,o),k(l,m);let h=(0,s.mS)(n,new Sa,!1),g=(0,s.mS)(n,new Sa,!1);return Da.greatEllipticDistance(e,t,r.x,r.y,a[0],o[0],h,null,null),Da.greatEllipticDistance(e,t,r.x,r.y,l[0],m[0],g,null,null),Math.min(h.val,g.val)}catch(e){n.error=e,n.hasError=!0}finally{(0,s.hk)(n)}}function Os(e,t,r,s,i){let a=new n.Envelope2D;r.queryEnvelope(a);let l=(0,o.e)(null,r,!0).total();if(t.xmin-a.xmin<=l&&a.xmax-t.xmax<=l)return r;let g=t.width(),u=0;for(;t.xmin+u*g<a.xmin;)u++;for(;t.xmin+u*g>a.xmin;)u--;let _=u*g,p=new m.T;p.setShiftCoords(-_,0);let d=r;d.applyTransformation(p);let c=new n.Envelope2D;d.queryEnvelope(c);let f=null;if(c.xmax>t.xmax){let r=0,s=new n.Envelope2D;s.setCoords({env2D:t}),--s.ymin,s.ymax+=1;let a=d;for(;s.xmin<c.xmax;){c.xmax>s.xmax&&(a=wi(a,e,2,!0,s.xmax));let n=(0,o.h)(a,s),l=(0,o.c)(null,n,!0).total(),m=(0,h.c)(a,s,l,NaN,i);null===f?f=m===a?m.clone():m:(p.setShiftCoords(-r*g,0),m.applyTransformation(p),f.add(m,!1)),r++,s.xmin=s.xmax,s.xmax=t.xmax+r*g}}else f=d;return f}class Ys{m_gcs;m_a;m_e2;m_rpu;m_curvCenterRad;m_cartCenter3D;m_basisX=new o.k;m_basisY=new o.k;m_normal=new o.k;m_d;m_northPolePcs;m_southPolePcs;constructor(e,t){(0,i.g)(1===e.getCoordinateSystemType()),this.m_gcs=e;let r=On();e.querySpheroidData(r),this.m_a=r.majorSemiAxis,this.m_e2=r.e2,this.m_rpu=e.getUnit().getUnitToBaseFactor(),this.m_curvCenterRad=t.mul(this.m_rpu);let s=this.m_curvCenterRad.x,n=this.m_curvCenterRad.y,a=Math.cos(s),m=Math.sin(s),h=Math.cos(n),g=Math.sin(n);this.m_cartCenter3D=function(e,t,r,s,i,n){return G(e,t,r,s,i,n,0)}(this.m_a,this.m_e2,a,m,h,g),this.m_normal.setCoordsPoint3D(this.m_cartCenter3D),this.m_d=this.m_cartCenter3D.length(),this.m_normal.divThis(this.m_d),o.k.selectRightHandedBasisFromNormal(this.m_normal,this.m_basisX,this.m_basisY),this.m_northPolePcs=this.projectPoint(l.P.construct(0,.5*Math.PI/this.m_rpu)),this.m_southPolePcs=this.projectPoint(l.P.construct(0,.5*-Math.PI/this.m_rpu))}project(e){let t=e.getGeometryType();if((0,i.i)(t)){(0,i.p)(e);let t=e;return this.projectMultiVertex(t)}(0,i.a)("Gnomonic.project")}unproject(e,t,r){let s=e.getGeometryType();if((0,i.i)(s)){(0,i.p)(e);let m=e,h=[];if(s===i.G.enumPolygon){let e=m.getPathCount();for(let t=0;t<e;t++){let e=m.calculateRingArea2D(t);h.push(e)}}return this.unprojectMultiVertex(t,m),(0,i.j)(s)?(function(e,t,r){let s=e.getPannableExtent(),i=l.P.construct(0,0);s.centerAt(i);let n=s.width(),a=.5*n,o=new l.P;o.setNAN();let m=NaN;for(let e=0;e<r.getPathCount();e++)for(let t=r.getPathStart(e);t<r.getPathEnd(e);t++){let i=r.getXY(t),l=Ea(i.y,s.ymax)||Ea(s.ymin,i.y);t===r.getPathStart(e)?(o.setNAN(),m=0):!o.isNAN()&&!l&&(m=Ls(i.x,o.x,a,n,m)),i.x+=m,r.setXYNoCurves(t,i),l||o.setCoordsPoint2D(i)}r.getImpl().notifyModifiedFlags(2001)}(this.m_gcs,0,m),function(e,t,r,s,m){let h=s.getGeometryType(),g=t.getPannableExtent(),u=s,_=!1,p=!1;if(h===i.G.enumPolygon){let r=new n.Envelope2D,s=l.P.construct(0,0);r.setCoords({env2D:g}),r.centerAt(s),_=function(e,t,r,s,i){let o=function(e,t){let r=new n.Envelope2D;t.queryEnvelope(r);let s=Ea(e.ymax,r.ymax),i=Ea(e.ymin,r.ymin),o=s||i;return!!o&&(function(e,t){let r=new a.P,s=new n.Envelope2D;for(let i=0;i<t.getPathCount();i++){t.queryPathEnvelope(i,s);let n=Ea(e.ymax,s.ymax),a=Ea(e.ymin,s.ymin);if(!n&&!a){r.addPath(t,i,!0);continue}r.insertPath2D(-1,null,0,0,!0);let o=t.getPathStart(i),m=t.getPathEnd(i),h=m-o,g=-1;for(g=o;g<m;g++){let r=t.getXY(g);if(n=Ea(e.ymax,r.y),a=Ea(e.ymin,r.y),!n&&!a)break}let u=g,_=!1,p=NaN;do{let s=t.getXY(u);n=Ea(e.ymax,s.y),a=Ea(e.ymin,s.y);let m=o+(u+1-o)%h;if(n||a){let n=l.P.construct(p,s.y);r.insertPoint2D(i,-1,n);let a=t.getXY(m),o=Ea(e.ymax,a.y),h=Ea(e.ymin,a.y);!o&&!h&&(n=l.P.construct(a.x,s.y),_?r.setXYNoCurves(r.getPointCount()-1,n):r.insertPoint2D(i,-1,n)),_=!0}else r.insertPoint2D(i,-1,s),p=s.x,_=!1;u=m}while(u!==g)}t.setEmpty(),t.add(r,!1)}(e,t),o)}(r,s),m=function(e,t,r,s,i){let n=[],o=[],l=.5*r.width();for(let a=0;a<s.getPathCount();a++){let m=s.getXY(s.getPathStart(a)),h=s.getXY(s.getPathEnd(a)-1),g=e[a]<0;if(Math.abs(m.x-h.x)>l){let e=Xs(g,t,r,a,s,i);n.push(e),o.push(a)}else if(!g&&s.calculateRingArea2D(a)<0){let e=Rs(t,r,a,s,i);n.push(e),o.push(a)}}if(0===n.length)return!1;let m=new a.P({vd:s.getDescription()}),h=0,g=o[h];for(let e=0;e<s.getPathCount();e++)e===g?(m.add(n[h],!1),h++,h<o.length&&(g=o[h])):m.addPath(s,e,!0);return s.setEmpty(),s.add(m,!1),!0}(e,t,r,s,i);return o||m}(e,t,r,u,m);let i=function(e,t,r,s){let i=new n.Envelope2D;r.queryEnvelope(i);let a=(0,o.e)(null,r,!0).total();if(t.xmin-i.xmin<=a&&i.xmax-t.xmax<=a)return r;let l=r.createInstance(),m=r.createInstance(),h=new n.Envelope2D,g=r.getPathCount();for(let i=0;i<g;i++)r.queryPathEnvelope(i,h),t.xmin-h.xmin<=a&&h.xmax-t.xmax<=a?l.addPath(r,i,!0):(m.setEmpty(),m.addPath(r,i,!0),m=Os(e,t,m,0,s),l.add(m,!0));return l}(t,r,u,m);i!==u&&(p=!0),u=i}else u=(new ps).foldInto360RangeGeodetic(u,t,2);h===i.G.enumPolygon&&(_||p)&&(u=(new ts).execute(u,t,!1,m)),u!==s&&(s.setEmpty(),s.add(u,!1))}(h,this.m_gcs,0,m,r)):m=Si(m,this.m_gcs,0,!0,0,r),m}(0,i.a)("Gnomonic.unproject")}projectPoint(e){let t=e.mul(this.m_rpu),r=v(this.m_a,this.m_e2,t),s=this.m_normal.dotProduct(r);if(s<=0)return l.P.construct(NaN,NaN);let i=this.m_d/s,n=r.mul(i).sub(this.m_cartCenter3D),a=new l.P;return a.x=this.m_basisX.dotProduct(n),a.y=this.m_basisY.dotProduct(n),a}unprojectPoint(e){let t=this.m_cartCenter3D.add(this.m_basisX.mul(e.x).add(this.m_basisY.mul(e.y)));return b(this.m_a,this.m_e2,t).divide(this.m_rpu)}projectMultiVertex(e){let t=e.getImpl(),r=!0,s=new l.P,i=new l.P;for(let e=0,n=t.getPointCount();e<n;e++)t.queryXY(e,s),s.y*this.m_rpu>.5*Math.PI?i.assign(this.m_northPolePcs):s.y*this.m_rpu<.5*-Math.PI?i.assign(this.m_southPolePcs):i.assign(this.projectPoint(s)),t.setXYNoCurves(e,i),i.isNAN()&&(r=!1);return t.notifyModifiedFlags(2001),r}unprojectMultiVertex(e,t){let r=t.getImpl(),s=e*e,i=!this.m_northPolePcs.isNAN(),n=!this.m_southPolePcs.isNAN();for(let e=0,t=r.getPointCount();e<t;e++){let t=r.getXY(e),a=new l.P;i&&l.P.sqrDistance(t,this.m_northPolePcs)<=s?(a.setCoords(this.m_curvCenterRad.x,.5*Math.PI),a.scale(1/this.m_rpu)):n&&l.P.sqrDistance(t,this.m_southPolePcs)<=s?(a.setCoords(this.m_curvCenterRad.x,.5*-Math.PI),a.scale(1/this.m_rpu)):a=this.unprojectPoint(t),r.setXYNoCurves(e,a)}r.notifyModifiedFlags(2001)}}function Xs(e,t,r,s,i,g){let u=new a.P,_=new a.P,p=new m.T,d=i.getXY(i.getPathStart(s)),c=i.getXY(i.getPathEnd(s)-1),f=r.width(),x=.5*f,P=new n.Envelope2D;i.queryEnvelope(P);let y,E,S=Math.ceil(P.width()/f)+1;d.x>c.x?(y=-f,E=e?r.ymin:r.ymax):(y=f,E=e?r.ymax:r.ymin),p.setShiftCoords(y,0),u.addPath(i,s,!0),_.add(u,!1);let C=new o.P;for(let e=0;e<S;e++)_.applyTransformation(p),_.getPointByVal(0,C),u.lineToPoint(C),u.addSegmentsFromPath(_,0,0,_.getSegmentCount()-1,!1);let I=u.getXY(0),v=u.getXY(u.getPointCount()-1);I.y=E,v.y=E,u.lineTo(v);let G=new l.P;for(G.setCoordsPoint2D(v),G.x-=.5*y;Math.abs(G.x-I.x)>x;)u.lineTo(G),G.x-=.5*y;u.lineTo(I);let w=r.getCenter().x,b=new n.Envelope2D;u.queryEnvelope(b);let T=0,N=b.getCenter().x;N-w>x?T=-Math.ceil((N-w-x)/f):w-N>x&&(T=Math.ceil((w-N-x)/f)),0!==T&&(p.setShiftCoords(T*f,0),u.applyTransformation(p));let D=new a.E,V=D.addGeometry(u);bi(D,V,t,0,2,!0,r.xmin),bi(D,V,t,0,2,!0,r.xmax);let k=D.getGeometry(V),F=(0,o.h)(k,r);F.inflateCoords(0,1);let H=(0,o.c)(null,F,!0);return(0,h.c)(k,r,H.total(),NaN,g)}function Rs(e,t,r,s,i){let g=t.width(),u=.5*g,_=t.getCenter().x,p=new n.Envelope2D;s.queryPathEnvelope(r,p);let d=0,c=p.getCenter().x;if(c-_>u?d=-Math.ceil((c-_-u)/g):_-c>u&&(d=Math.ceil((_-c-u)/g)),0!==d){let e=new m.T;e.setShiftCoords(d*g,0),s.getImpl().applyTransformationToPath(e,r),s.queryPathEnvelope(r,p),c=p.getCenter().x}let f,x=new n.Envelope2D;t.containsExclusiveEnvelope(p)?(f=!1,x.setCoords({env2D:t})):(f=!0,x.setCoords({env2D:t}),x.xmin-=g,x.xmax+=g);let P=s.createInstance();P.addPathPoint2D(null,0,!0);let y=new l.P;if(y.setCoords(x.xmin,x.ymin),P.insertPoint2D(0,-1,y),y.setCoords(x.xmin,x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(.5*(x.xmin+x.xmax),x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(x.xmax,x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(x.xmax,x.ymin),P.insertPoint2D(0,-1,y),y.setCoords(.5*(x.xmin+x.xmax),x.ymin),P.insertPoint2D(0,-1,y),f){P.addPath(s,r,!0);let n=new m.T;c<_?n.setShiftCoords(g,0):n.setShiftCoords(-g,0),s.getImpl().applyTransformationToPath(n,r),P.addPath(s,r,!0);let l=new a.E,u=l.addGeometry(P);bi(l,u,e,0,2,!0,t.xmin),bi(l,u,e,0,2,!0,t.xmax),P=l.getGeometry(u);let p=(0,o.h)(P,t);p.inflateCoords(0,1);let d=(0,o.c)(null,p,!0).total();P=(0,h.c)(P,t,d,NaN,i)}else P.addPath(s,r,!0);return P}function Ls(e,t,r,s,i){return i+e-t>r?i-=s:t-(i+e)>r&&(i+=s),i}function zs(e,t,r,s,i,n){let m=t.getAttributeStreamRef(0),h=t.getPointCount(),g=!1,u=new l.P;for(let e=0;e<h;++e){if(m.queryPoint2D(2*e,u),1&n&&u.y>=r){g=!0;break}if(2&n&&u.y<=-r){g=!0;break}}if(!g)return!1;let _=!1;e&&(_=t.getImpl().isClosedPathInXYPlane(0));let p=new a.E,d=p.addGeometry(t),c=p.getFirstPath(d),f=-1,x=!0,P=new l.P,y=new o.P,E=-1,S=Ws*i/360;for(let e=p.getFirstVertex(c);-1!==e;e=p.getNextVertex(e)){p.queryXY(e,u);let t=1&n&&u.y>=r?1:0;if(t|=2&n&&u.y<=-r?2:0,f>0&&f!==t){if(P.x!==u.x){let t=p.getPrevVertex(e);p.queryPoint(t,y);let r=p.insertVertex(c,e,y);P.x=u.x,p.setXY(r,P)}if(_){let t=-1===E?p.getFirstVertex(c):p.getNextVertex(E),r=p.getPrevVertex(e);for(;t!==r;)t=p.removeVertex(t,!1);if(-1!==E){let e=p.getXY(E),t=p.getXY(r);if(Math.abs(e.x-t.x)>S){p.queryPoint(E,y);let s=p.insertVertex(c,r,y);e.x=(0,l.r)(e.x,t.x,.5),p.setXY(s,e)}}}E=-1}if(t&&(u.y=(0,l.f)(s,u.y),p.setXY(e,u),!x&&f!==t))if(u.x!==P.x){p.queryPoint(e,y);let t=p.insertVertex(c,e,y);p.setXYCoords(t,P.x,u.y),E=t}else E=e;f=t,P.assign(u),x=!1}if(_){if(-1!==E){let e=p.getNextVertex(E);for(;-1!==e;)e=p.removeVertex(e,!1)}let e=p.getFirstVertex(c),t=p.getLastVertex(c),r=p.getXY(e),s=p.getXY(t);if(!r.equals(s)&&(p.queryPoint(e,y),t=p.insertVertex(c,-1,y),Math.abs(r.x-s.x)>S)){let e=p.insertVertex(c,t,y);r.x=(0,l.r)(r.x,s.x,.5),p.setXY(e,r)}}return t.assignCopy(p.getGeometry(d)),!0}const Ws=210;class js{m_inputPoly;m_originalGeometry;m_polygonRingFlags;m_originalSR;m_pannableSR;m_pannableExtent;m_progressTracker;m_centralLongitude;m_poleSnappingTolerance;m_width360;m_degree;m_GCSLargeDelta;m_poleFlags;m_bAdjustedAtPoles=0;constructor(e,t,r,s,n,a,o,l,m){this.m_inputPoly=r,this.m_progressTracker=m,this.m_originalGeometry=e,this.m_originalSR=s,this.m_polygonRingFlags=t,this.m_pannableSR=n,this.m_poleSnappingTolerance=l,this.m_poleFlags=o,this.m_bAdjustedAtPoles=0,this.m_pannableExtent=function(e,t){let r=e.getPannableExtent();return Number.isNaN(t)||r.centerAtCoords(t,0),r}(this.m_pannableSR,a),this.m_centralLongitude=Number.isNaN(a)?this.m_pannableExtent.getCenterX():a,this.m_width360=this.m_pannableExtent.width(),this.m_degree=this.m_width360/360,this.m_GCSLargeDelta=210*this.m_degree,(0,i.g)(null===this.m_originalGeometry&&null===this.m_originalSR||null!==this.m_originalGeometry&&null!==this.m_originalSR)}geonormalizeRing(e,t,r,s,n,m,h){let g=r,u=new a.a({vd:this.m_inputPoly.getDescription()});u.addPath(this.m_inputPoly,e,!0),0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=+!!zs(!0,u,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,this.m_pannableExtent.width(),this.m_poleFlags),this.m_bAdjustedAtPoles&&(g=!1));let _=-1;g&&(_=this.m_originalGeometry.getPathStart(e));let p=u.getAttributeStreamRef(0),d=u.getPointCount(),c=0,f=p.read(0),x=0,P=3*this.m_pannableSR.getTolerance(0),y=!1,E=new l.P,S=new l.P,C=!1,I=u.hasNonLinearSegments(),v=new l.P;for(let e=1;e<d;++e){p.queryPoint2D(2*e,v);let t=v.x,r=t+c,n=r-f;if(v.x=r,Math.abs(n)>this.m_GCSLargeDelta){if(g){let t=_+e-1,r=_+(e+1<d?e:0),i=m.read(2*t),a=(m.read(2*r)-i)*s;Math.abs(n-a)>1*this.m_degree&&(g=!1)}g||(c-=(0,l.f)(this.m_width360,r-f),r=t+c,++x,C=0!==c,v.x=r)}else y||(0,o.H)(E,S,v,P)&&(y=!0);C&&(I&&(0,i.d)("error in geonormalize_ring_ for curves"),p.write(2*e,r)),f=r,E.setCoordsPoint2D(S),S.setCoordsPoint2D(v)}x&&u.notifyModified();let G=u.getXY(0),w=u.getXY(d-1);if(l.P.distance(G,w)<P){let e=this.finalizeGeoNormalizeClosedRing(u,y,n);h.add(e,!1)}else{t<0&&(null===this.m_originalGeometry?t=1:((0,i.g)(null!==this.m_originalGeometry),t=+(this.m_originalGeometry.calculateRingArea2D(e)>0)));let r=this.finalizeGeoNormalizeOpenedRing(t>0,u);h.add(r,!1)}}geoNormalizePolygonGeometry(e){(0,i.g)(this.m_originalSR&&this.m_originalGeometry||!this.m_originalGeometry&&!this.m_originalSR),(0,i.g)(this.m_pannableSR.isPannable());let t=null,r=NaN,s=!!this.m_originalSR&&this.m_originalSR.isPannable();s&&(t=this.m_originalGeometry.getAttributeStreamRef(0),r=this.m_width360/this.m_originalSR.getPannableExtent().width()),this.m_bAdjustedAtPoles=0;let o=new a.P({vd:this.m_inputPoly.getDescription()});for(let i=0,n=this.m_inputPoly.getPathCount();i<n;++i){let n=this.m_polygonRingFlags?+!!this.m_polygonRingFlags[i]:-1;this.geonormalizeRing(i,n,s,r,e,t,o)}let l=this.m_pannableSR.getTolerance(0),m=this.m_pannableExtent.width()/180;ki(o,this.m_pannableExtent,.1*l,!1);let u=n.Envelope2D.constructEmpty();if(u.setCoords({env2D:this.m_pannableExtent}),e){let e=!0;for(let t=0;t<2;t++){e=!0;let t=n.Envelope2D.constructEmpty();for(let r=0,s=o.getPathCount();r<s;r++)if(o.queryPathEnvelope(r,t),!(u.xmin<=t.xmin&&u.xmax>=t.xmax||t.xmin>=u.xmax||t.xmax<=u.xmin)){e=!1;break}if(e)break;u.move(.5*this.m_width360,0)}e||u.setCoords({env2D:this.m_pannableExtent})}let _=(0,h.c)(o,u,l,m,this.m_progressTracker),p=o!==_,d=this.m_originalGeometry?this.m_originalGeometry.calculateArea2D():1,c=_.calculateArea2D(),f=0;if(c>0&&d<0)f=1;else if(c<=0&&d>0)if(0===c){if(this.m_originalSR){let e=NaN;2===this.m_originalSR.getCoordinateSystemType()?e=this.m_originalSR.getPCSHorizon().calculateArea2D():1===this.m_originalSR.getCoordinateSystemType()&&(e=this.m_originalSR.getPannableExtent().getArea()),d>.99*e&&(f=-1)}}else f=-1;if(0!==f){let e=function(e,t){let r=new a.P({vd:e});r.addEnvelope(t,!1);let s=t.width()/180;return r=(new g.O).execute(r,s,0,0,null),r}(_.getDescription(),u);e.add(_,!1),p=!0,_=e}return p&&(_=(new ts).execute(_,this.m_pannableSR,!1,this.m_progressTracker)),_}geoNormalizePolylineGeometry(e){(0,i.g)(this.m_pannableSR.isPannable());let t=null,r=this.m_originalSR&&this.m_originalSR.isPannable(),s=1;r&&((0,i.g)(this.m_originalGeometry),s=this.m_width360/this.m_originalSR.getPannableExtent().width(),t=this.m_originalGeometry.getAttributeStreamRef(0));let o=this.m_pannableExtent.width(),g=o*(0,l.I)()*4,u=e,_=NaN,p=l.E.constructEmpty();this.m_bAdjustedAtPoles=0;let d=new a.a({vd:this.m_inputPoly.getDescription()});for(let e=0,h=this.m_inputPoly.getPathCount();e<h;++e){let h=r,c=new a.a({vd:this.m_inputPoly.getDescription()});c.addPath(this.m_inputPoly,e,!0);let f=this.m_inputPoly.isClosedPath(e);0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=+!!zs(f,c,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,o,this.m_poleFlags),this.m_bAdjustedAtPoles&&(h=!1));let x=-1,P=c.getPointCount(),y=!1;h&&(x=this.m_originalGeometry.getPathStart(e),y=this.m_originalGeometry.isClosedPath(e));let E=c.getAttributeStreamRef(0),S=0,C=E.read(0),I=0,v=new l.P,G=new l.P,w=!1,b=c.hasNonLinearSegments(),T=new l.P;for(let e=1;e<P;++e){E.queryPoint2D(2*e,T);let r=T.x,n=r+S,a=n-C;if(T.x=n,Math.abs(a)>this.m_GCSLargeDelta){if(h){let r=x+e-1,i=x;(!y||e+1<P)&&(i+=e);let n=t.read(2*r),o=(t.read(2*i)-n)*s;Math.abs(a-o)>1*this.m_degree&&(h=!1)}h||(S-=(0,l.f)(this.m_width360,n-C),n=r+S,++I,w=0!==S,T.x=n)}w&&(b&&(0,i.d)("error in geonormalize_ring_ for curves"),E.write(2*e,n)),C=n,v.setCoordsPoint2D(G),G.setCoordsPoint2D(T)}if(I&&c.notifyModified(),u){let e=!1;if(!c.isEmpty()){let t=n.Envelope2D.constructEmpty();if(c.queryEnvelope(t),t.width()>=o||t.ymin<=this.m_pannableExtent.ymin||t.ymax>=this.m_pannableExtent.ymax)e=!0;else{if(Number.isNaN(_)){let e=this.m_centralLongitude-.5*o;_=t.xmin,_+=Math.round((e-t.xmin)/o)*o,_>e&&(_-=o),(0,i.g)(_<=e),_<e&&(_+=o),(0,i.g)(_>=e)}let r=Math.round((_-t.xmin)/o)*o;if(t.xmin+r>_+g&&(r-=o),t.xmin+r<_-g&&(r+=o),p.mergeCoordinate(t.xmin+r),p.mergeCoordinate(t.xmax+r),e=p.width()>=o,!e){let e=new m.T;e.setShiftCoords(r,0),c.applyTransformation(e)}}}d.add(c,!1),e&&(d=(()=>{let e=new a.a({vd:d.getDescription()});for(let t=0,r=d.getPathCount();t<r;++t){let r=new a.a({vd:d.getDescription()});r.addPath(d,t,!0);let s=Si(r,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);e.add(s,!1)}return e})(),u=!1)}else{let e=Si(c,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);d.add(e,!1)}}if(u)return d;let c=this.m_pannableSR.getTolerance(0),f=this.m_pannableExtent.width()/180;return ki(d,this.m_pannableExtent,.1*c,!1),(0,h.c)(d,this.m_pannableExtent,c,f,this.m_progressTracker)}finalizeGeoNormalizeOpenedRing(e,t){let r=t.getPointCount(),s=t.getXY(0),o=t.getXY(r-1);{let e=Math.abs(o.x-s.x),t=Math.round(e/this.m_width360)*this.m_width360;(0,i.g)(Math.abs(e-t)<this.m_pannableSR.getTolerance(0))}let h=(0,l.e)(o.x-s.x),g=n.Envelope2D.constructEmpty();t.queryLooseEnvelope(g);let u=this.m_pannableExtent.getCenterX(),_=0,p=u-this.m_width360,d=u+this.m_width360;if(h>=0){let e=Math.ceil((p-g.xmin)/this.m_width360);for(e*=this.m_width360;p>g.xmin+e;)e+=this.m_width360;for(;p<g.xmax+e;)e-=this.m_width360;for(_=e,g.width()>720&&(d=p+360*Math.ceil(g.width()/360));d<g.xmax;)d+=this.m_width360}else{let e=Math.ceil((d-g.xmax)/this.m_width360);for(e*=this.m_width360;d<g.xmax+e;)e-=this.m_width360;for(;d>g.xmin+e;)e+=this.m_width360;for(_=e,g.width()>720&&(p=d-360*Math.ceil(g.width()/360));p>g.xmin;)p-=this.m_width360}let c=Math.round(Math.abs(o.x-s.x)/this.m_width360)*this.m_width360,f=h*c,x=g.clone();x.move(_,0);let P=new l.P(0,0),y=new m.T;y.setShiftCoords(_,0),t.applyTransformation(y);let E=new a.a({vd:t.getDescription()});E.add(t,!1),P.assign(t.getXY(r-1));let S=0,C=E.getXY(0).x;for(;h>0?x.xmax<d:x.xmin>p;)x.move(f,0),y.xd=f,t.applyTransformation(y),C+=f,this.m_pannableExtent.xmin<=C&&this.m_pannableExtent.xmax>=C&&(S=E.getPointCount()-1),t.setXY(0,P),P.assign(t.getXY(r-1)),E.addSegmentsFromPath(t,0,0,r-1,!1);let I=new a.P({vd:E.getDescription()});I.add(E,!1);let v=E.getXY(0),G=E.getXY(E.getPointCount()-1),w=h<0?e:!e,b=I.getPointCount()-1;if(w){let e=new l.P(G.x,this.m_pannableExtent.ymax);I.lineTo(e);let t=new l.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymax);I.lineTo(t);let r=new l.P(v.x,this.m_pannableExtent.ymax);I.lineTo(r)}else{let e=new l.P(G.x,this.m_pannableExtent.ymin);I.lineTo(e);let t=new l.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymin);I.lineTo(t);let r=new l.P(v.x,this.m_pannableExtent.ymin);I.lineTo(r)}if(I.interpolateAttributesPath(0,b,0),I.getImpl().changeRingStartPoint(S),c>this.m_width360){let e=new a.P({copy:I});y.setShiftCoords(this.m_width360,0),e.applyTransformation(y),I.add(e,!1)}return I}finalizeGeoNormalizeClosedRing(e,t,r){let s=new a.P({vd:e.getDescription()});if(s.add(e,!1),s.hasNonLinearSegments()&&(()=>{let e=s.getPointCount()-2;return s.getSegmentType(e)!==i.G.enumLine})()){let e=new a.S,t=s.getPointCount()-2;s.getSegmentBuffer(t,e,!1),s.removePointFromPath(0,t+1),s.closeLastPathWithSegment(e.get())}else s.removePointFromPath(0,s.getPointCount()-1);let o=n.Envelope2D.constructEmpty();s.queryLooseEnvelope(o);let h=Math.ceil((this.m_pannableExtent.xmin-o.xmin)/this.m_width360);for(h*=this.m_width360;this.m_pannableExtent.xmin>o.xmin+h;)h+=this.m_width360;for(;this.m_pannableExtent.xmin<o.xmax+h;)h-=this.m_width360;if(h+=this.m_width360,0!==h){o.move(h,0);let e=new m.T;e.setShiftCoords(h,0),s.applyTransformation(e)}if(this.m_pannableExtent.xmin<=o.xmin&&this.m_pannableExtent.xmax>=o.xmax){if(t){let e=s.calculateArea2D(),t=(new ts).execute(s,this.m_pannableSR,!0,this.m_progressTracker);if(t!==s){let r=t.calculateArea2D();(0,l.e)(e)!==(0,l.e)(r)&&t.reverseAllPaths(),s.assignMove(t)}}let e;if(e=r?new a.P({copy:s}):new a.P({move:s}),r)for(;o.xmin<this.m_pannableExtent.xmax;){o.move(this.m_width360,0);let t=new m.T;t.setShiftCoords(this.m_width360,0),s.applyTransformation(t),e.add(s,!1)}return e}let g=new a.P({vd:e.getDescription()});g.add(s,!1);let u=t||o.width()>this.m_width360-10*this.m_pannableSR.getTolerance(0);for(;o.xmin<this.m_pannableExtent.xmax;){o.move(this.m_width360,0);let e=new m.T;e.setShiftCoords(this.m_width360,0),s.applyTransformation(e),g.add(s,!1)}if(u){let e=g.calculateArea2D();g.setFillRule(1),g=(new ts).execute(g,this.m_pannableSR,!0,this.m_progressTracker);let t=g.calculateArea2D();(0,l.e)(e)!==(0,l.e)(t)&&g.reverseAllPaths()}return g}geonormalize_ring_(e,t,r,s,n,a,o){(0,i.g)(0)}}function Zs(e){(0,i.g)(0);let t=function(e){let t=new hn({},!0);return t.m_WKID=e,t}(e),r=new Qs;return r.setVertProj_(t),r}function Ks(e){return!1}class Qs{m_hashCode=0;m_peVertSysVal=null;m_verticalUnit=new kn;m_verticalShift=0;m_userVerticalWKID=0;m_bIsDepth=!1;getType(){return(0,i.g)(0),0}getID(){return(0,i.g)(0),0}getLatestID(){return this.m_peVertSysVal?this.m_peVertSysVal.getLatestID():0}getOldID(){return this.m_peVertSysVal?this.m_peVertSysVal.getOldID():0}getText(){return(0,i.g)(0),""}getTextExtended(e){return(0,i.g)(0),""}getText2(e){return(0,i.g)(0),""}getUnit(){return(0,i.g)(0),{}}equals(e){return(0,i.g)(0),!1}equalForProjection(e){return(0,i.g)(0),!1}getPeVertcsCopy(){return(0,i.g)(0),{}}getOneMeter(){return 1/this.m_verticalUnit.getUnitToBaseFactor()}getUnitToBaseFactor(){return(0,i.g)(0),0}isDepth(){return(0,i.g)(0),!1}getVerticalShift(){return(0,i.g)(0),0}isCustomWkid(){return!!this.m_peVertSysVal&&this.m_peVertSysVal.isCustomWkid()}getHashCode(){return this.m_hashCode}setVertProj_(e){this.m_peVertSysVal=e}getPEVerticalCoordSys(){return this.m_peVertSysVal?this.m_peVertSysVal.m_peVertcs:null}}function Js(e,t,r,s,i){if(e.equals(t))return!1;if(s){let r=1,n=0,a=1,o=1,l=0,m=1;Number.isNaN(e.m_heightMetersPerUnit)||(r=e.m_heightMetersPerUnit,n=e.m_heightZ0,a=e.m_heightSign,o=t.m_heightMetersPerUnit,l=t.m_heightZ0,m=t.m_heightSign);let h=a*m*r/o;for(let e=0;e<i;e++)s[e]=(s[e]-n)*h+l}let n=1,o=0;if(Number.isNaN(e.m_XYToRadians)||(n=e.m_XYToRadians/t.m_XYToRadians,o=e.m_PrimeMeridianDegrees-t.m_PrimeMeridianDegrees,0!==o&&(o=(0,a.b)(o),o/=t.m_XYToRadians)),Array.isArray(r)){let e=r;for(let t=0;t<i;t++)e[t][0]=e[t][0]*n+o,e[t][1]=e[t][1]*n}else{let e=r;for(let t=0;t<i;t++){let r=t<<1;e[r]=e[r]*n+o,e[r+1]=e[r+1]*n}}return!0}function $s(){return{m_heightMetersPerUnit:0,m_heightSign:0,m_heightZ0:0,m_XYToRadians:0,m_PrimeMeridianDegrees:0,assign(e){this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0,this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees},equals(e){return(0,l.G)(this.m_heightSign,e.m_heightSign)&&(0,l.G)(this.m_heightMetersPerUnit,e.m_heightMetersPerUnit)&&(0,l.G)(this.m_heightZ0,e.m_heightZ0)&&(0,l.G)(this.m_XYToRadians,e.m_XYToRadians)&&(0,l.G)(this.m_PrimeMeridianDegrees,e.m_PrimeMeridianDegrees)},initFromGcsAndVcsPe(e,t){this.m_heightSign=1,this.m_heightMetersPerUnit=NaN,this.m_heightZ0=0,this.m_XYToRadians=NaN,this.m_PrimeMeridianDegrees=NaN,t&&(0,i.g)(0),e&&(this.m_XYToRadians=e.getUnit().getUnitFactor(),this.m_PrimeMeridianDegrees=e.getPrimem().getLongitude())},initFromGcsAndVcs(e,t){let r=e?e.getPECoordSys():null,s=t?t.getPEVerticalCoordSys():null;this.initFromGcsAndVcsPe(r,s)},processUnitParams(e){Number.isNaN(this.m_heightMetersPerUnit)&&(this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0),Number.isNaN(this.m_XYToRadians)&&(this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees)}}}class ei{m_inputUnitParams;m_outputUnitParams;m_constantsLoaded=-1;m_isUsable=-1;m_latestID;m_inputSR=null;m_outputSR=null;m_inputSRHorz=null;m_outputSRHorz=null;m_inputVCS=null;m_outputVCS=null;m_geogTran;m_vertTran;m_hashCode=0;m_areaOfUse=new o.E;constructor(e){this.m_inputUnitParams=$s(),this.m_outputUnitParams=$s(),(0,i.g)(e),this.m_geogTran=e,this.m_vertTran=null,this.m_latestID=Ia.getCode(this.m_geogTran),this.m_latestID<0&&(this.m_latestID=0);let t=this.m_geogTran.getGeogcs1();Ia.getCode(t);let r=this.m_geogTran.getGeogcs2();Ia.getCode(r),this.initUnitParams()}getLatestId(){return this.m_latestID}getText(){return this.m_geogTran?this.m_geogTran.toString():((0,i.g)(0),"")}getGeogtran(){return this.m_geogTran}getVerttran(){return null}loadConstants(e){let t=this.m_constantsLoaded;if(-1===t){if(!e){this.m_geogTran||(0,i.d)("vcs not impl");let t=this.m_geogTran.getParameters();null!==t[va.PE_PARM_ND]&&(e=0===t[va.PE_PARM_ND].getValue())}t=+!!this.m_geogTran.loadConstants(),this.m_constantsLoaded=t}return 0!==t}isUsable(){let e=this.m_isUsable;return-1===e&&(this.m_isUsable=e=this.m_geogTran?+!!this.m_geogTran.usable():+!!this.m_vertTran),1===e}getInputSr(e){return this.updateSrs(),e?this.m_inputSR:this.m_inputSRHorz}getOutputSr(e){return this.updateSrs(),e?this.m_outputSR:this.m_outputSRHorz}getHashCode(){let e=this.m_hashCode;return 0===e&&(e=this.m_latestID>0?(0,l.C)(this.m_latestID):(0,l.L)(this.getText()),0===e&&(e=345),this.m_hashCode=e),e}isGeogtran(){return null!==this.m_geogTran}prepareOrThrow(){}getName(){return this.isGeogtran()?this.getGeogtran().getName():((0,i.t)("vcs not impl"),"")}updateSrs(){if(this.m_inputSR||this.m_inputVCS)return;let e,t,r,s,n,a;if(this.m_geogTran){let i=this.m_geogTran.getGeogcs1(),o=Cn(i),l=this.m_geogTran.getGeogcs2(),m=Cn(l),h=-1,g=-1;h=o.getVcsCode(),g=m.getVcsCode(),r=Zn(i,null,0,1),s=Zn(l,null,0,1),h>0&&g>0?(n=Zs(h),a=Zs(g),e={},t={}):(e=r,t=s)}else(0,i.g)(0);!this.m_inputSR&&!this.m_inputVCS&&(this.m_inputSR=e,this.m_outputSR=t,this.m_inputSRHorz=r,this.m_outputSRHorz=s,this.m_inputVCS=n,this.m_outputVCS=a)}initUnitParams(){if(this.m_inputUnitParams.m_heightSign=1,this.m_inputUnitParams.m_heightMetersPerUnit=NaN,this.m_inputUnitParams.m_heightZ0=0,this.m_outputUnitParams.m_heightSign=1,this.m_outputUnitParams.m_heightMetersPerUnit=NaN,this.m_outputUnitParams.m_heightZ0=0,this.m_inputUnitParams.m_XYToRadians=NaN,this.m_inputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_outputUnitParams.m_XYToRadians=NaN,this.m_outputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_vertTran)(0,i.g)(0);else if(this.m_geogTran){let e=this.m_geogTran,t=e.getGeogcs1();this.m_inputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_inputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude(),t=e.getGeogcs2(),this.m_outputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_outputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude()}}}function ti(e,t,r,s,i,n,a){let o=null;t&&(o=t.getPEVerticalCoordSys());let l=null;e&&(l=e.getPECoordSys());let m=null;s&&(m=s.getPEVerticalCoordSys());let h=null;if(r&&(h=r.getPECoordSys()),!(l||o||h||m))return!1;let g=$s();g.initFromGcsAndVcsPe(l,o);let u=$s();return u.initFromGcsAndVcsPe(h,m),Js(g,u,i,n,a)}function ri(e,t,r,s,i,n,a,o){let l=t,m=e,h=$s();h.initFromGcsAndVcsPe(m,l),o.assign(s?r.m_outputUnitParams:r.m_inputUnitParams),o.processUnitParams(h),h.processUnitParams(o),a>0&&Js(h,o,i,n,a)}function si(e,t,r,s,i,n,a,o,l){let m=$s(),h=$s();m.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),h.assign(i?s.m_outputUnitParams:s.m_inputUnitParams),m.processUnitParams(e),h.processUnitParams(m),m.processUnitParams(h),o>0&&Js(m,h,n,a,o),l.assign(h)}function ii(e,t,r,s,i,n,a){let o=t.getVerttran(),l=t.getGeogtran();if(a.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),a.processUnitParams(e),n>0){t.prepareOrThrow();let e=r?va.PE_TRANSFORM_2_TO_1:va.PE_TRANSFORM_1_TO_2;o?Ji():$i(l,n,s,i,e)}}class ni{supportsCurves(){return!0}accelerateGeometry(e,t,r){return ai(e,t,r)}canAccelerateGeometry(e){return oi(e)}}function ai(e,t,r){if(!oi(e))return!1;(0,o.m)(t,e,!1);let s=0,n=e.getGeometryType();return(0,i.j)(n)&&(0,a.y)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeAccelerator(r)),(0,i.j)(n)&&(0,a.z)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeForPathsAccelerator(r)),s>0}function oi(e){return(0,a.y)(e)||(0,a.z)(e)}class li extends ni{getOperatorType(){return 8}execute(e,t,r,s){return et(e,t,r,1,s)}}class mi{getOperatorType(){return 10002}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s){return new hi(e,t,r,s)}execute(e,t,r,s){return this.executeMany(new _.S([e]),new _.S([t]),r,s).next()}}class hi extends u.G{m_inputGeoms;m_progressTracker;m_spatialReference;m_geomSubtractor;m_index;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_index=-1,this.m_inputGeoms=e,this.m_spatialReference=r;let i=t.next();this.m_geomSubtractor=i||new a.P}next(){let e=this.m_inputGeoms.next();return e?((0,i.c)(e),(0,i.s)(e),this.m_index=this.m_inputGeoms.getGeometryID(),function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return e;let m=e.getDimension(),g=t.getDimension();if(m>g)return e;let u=e.getGeometryType(),_=t.getGeometryType(),p=new n.Envelope2D,d=new n.Envelope2D,c=new n.Envelope2D;e.queryEnvelope(p),t.queryEnvelope(d),c.setCoords({env2D:p}),c.mergeEnvelope2D(d);let f=(0,o.c)(r,c,!0),x=(0,o.f)(f),P=new n.Envelope2D;if(P.setCoords({env2D:p}),P.inflateCoords(x,x),!P.isIntersecting(d))return e;if(1===m&&2===g){let l=function(e,t,r,s,l){let m=new o.E;e.queryEnvelope(m);let h=new n.Envelope2D;t.queryEnvelope(h),m.merge(h);let g=.1*m.width(),u=.1*m.height();m.inflateCoords(g,u);let _=new a.P;_.addEnvelope(m,!1);let p=_.getImpl();if(r===i.G.enumPolygon){let e=t.getImpl();p.add(e,!0)}else p.addEnvelope(t,!0);return new ss(_,s,-1,l).tryFastImplementation(e)}(e,t,_,r,s);if(l)return l}if(u===i.G.enumPoint){let r;switch((0,i.h)(_)?(r=new a.a({vd:t.getDescription()}),r.addSegment(t,!0)):r=t,_){case i.G.enumPolygon:return function(e,t,r){return 0===er(t,e,r.total())?e:e.createInstance()}(e,r,f);case i.G.enumPolyline:return function(e,t,r){let s=e.getXY(),i=t.querySegmentIterator(),a=(0,o.f)(r),m=a*a;for(;i.nextPath();)for(;i.hasNextSegment();){let t=i.nextSegment(),o=new n.Envelope2D;if(t.queryEnvelope(o),o.inflateCoords(a,a),!o.contains(s))continue;if(t.isIntersectingPoint(s,r.total()))return e.createInstance();let h=t.getStartXY();if(l.P.sqrDistance(s,h)<=m||(h=t.getEndXY(),l.P.sqrDistance(s,h)<=m))return e.createInstance()}return e}(e,r,f);case i.G.enumMultiPoint:return function(e,t,r){let s=t.getImpl().getAttributeStreamRef(0),i=t.getPointCount(),n=e.getXY(),a=(0,o.f)(r),m=a*a,h=new l.P;for(let t=0;t<i;t++)if(s.queryPoint2D(2*t,h),l.P.sqrDistance(h,n)<=m)return e.createInstance();return e}(e,r,f);case i.G.enumEnvelope:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getXY();return s.contains(i)?e.createInstance():e}(e,r,f);case i.G.enumPoint:return function(e,t,r){let s=(0,o.f)(r),i=s*s,n=e.getXY(),a=t.getXY();return l.P.sqrDistance(n,a)<=i?e.createInstance():e}(e,r,f);default:(0,i.a)("invalid shape type")}}else if(u===i.G.enumMultiPoint)switch(_){case i.G.enumPolygon:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getPointCount(),a=!1,o=(0,l.d)(i,!1),m=new l.P;for(let n=0;n<i;n++)e.queryXY(n,m),s.contains(m)&&0!==tr(t,m,r.total())&&(a=!0,o[n]=!0);if(!a)return e;let h=e.createInstance();for(let t=0;t<i;t++)o[t]||h.addPoints(e,t,t+1);return h}(e,t,f);case i.G.enumEnvelope:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getPointCount(),a=!1,o=(0,l.d)(i,!1),m=new l.P;for(let t=0;t<i;t++)e.queryXY(t,m),s.contains(m)&&(a=!0,o[t]=!0);if(!a)return e;let h=e.createInstance();for(let t=0;t<i;t++)o[t]||h.addPoints(e,t,t+1);return h}(e,t,f);case i.G.enumPoint:return function(e,t,r){let s=e.getImpl().getAttributeStreamRef(0),i=e.getPointCount(),n=t.getXY(),a=!1,m=(0,l.d)(i,!1),h=(0,o.f)(r),g=h*h,u=new l.P;for(let e=0;e<i;e++)s.queryPoint2D(2*e,u),l.P.sqrDistance(u,n)<=g&&(a=!0,m[e]=!0);if(!a)return e;let _=e.createInstance();for(let t=0;t<i;t++)m[t]||_.addPoints(e,t,t+1);return _}(e,t,f)}let y=new n.Envelope2D(p);return y.inflate(100*f.total()),function(e,t,r,s){if(e.isEmpty()||t.isEmpty()||e.getDimension()>t.getDimension())return Mr(Ur(e),e,0,"-");let l=new n.Envelope2D;e.queryEnvelope(l);let m=new n.Envelope2D;t.queryEnvelope(m);let h=new n.Envelope2D;h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=m.clone(),_=(0,o.f)(g);if(u.inflateCoords(_,_),!l.isIntersecting(u))return Mr(Ur(e),e,0,"-");let p=new Ar(s),d=new a.E,c=d.addGeometry(Ur(e)),f=d.addGeometry(Ur(t)),x=0,P=0,y=null;if(d.hasCurves()){y=new dr;let e=d.getEnvelope2D(s);P=_r(g.total());let t=ur(g.total(),e);x=pr(t,P),lr(d,t,g.total(),0,y,null,s)}p.setEditShapeCrackAndCluster(d,g.add(x));let E=p.difference(c,f);null!==y&&y.stitchCurves(d,E,P,!0);let S=Mr(d.getGeometry(E),e,0,"-");return vr(S.getGeometryType())&&(S.getImpl().setIsSimple(4,g.total()),S.getGeometryType()===i.G.enumPolygon&&S.getImpl().updateOGCFlagsProtected()),S}(e,(0,h.c)(t,y,0,0,s),r,s)}(e,this.m_geomSubtractor,this.m_spatialReference,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class gi{getOperatorType(){return 10001}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s=0){return new _i(e,t,r,s)}execute(e,t,r,s){let n=new _.S([e,t]),a=new _i(n,r,s,0).next();return a||(0,i.d)("null output"),a}}class ui{binVertexCount;geometries;constructor(){this.binVertexCount=0,this.geometries=[]}addPair(e){this.binVertexCount+=e.vertexCount,this.geometries.push(e)}sort(){this.geometries.sort((e,t)=>function(e,t){return l.P.compareZorder(e.location,t.location)?-1:+!e.location.equals(t.location)}(e,t))}geomCount(){return this.geometries.length}geomPairs(){return this.geometries}clear(){this.binVertexCount=0,this.geometries.length=0}getBinVertexCount(){return this.binVertexCount}}class _i extends u.G{m_inputGeoms;m_progressTracker;m_spatialReference;m_bUnionAllDimensions;m_bPreserveAllPathEnds;m_index=-1;m_currentDim=-1;m_bDone=!1;m_unionBins=[];m_readyGeoms=(0,l.D)(4);m_dimGeomCounts=(0,l.d)(4,0);m_addedGeoms=0;m_options;m_maxDimension=-1;m_bHadGeometry=(0,l.d)(4,!1);m_bIs3D;m_complexUnionGeoms=(0,l.D)(4);m_totalNonEmptyGeomCounters=(0,l.d)(4,0);constructor(e,t,r,s,i=!1){super(),this.m_progressTracker=r,this.m_bUnionAllDimensions=!!(4&s),this.m_bPreserveAllPathEnds=!!(8&s),this.m_inputGeoms=e,this.m_spatialReference=t,this.m_options=s,this.m_bIs3D=i}next(){if(this.m_bDone&&this.m_currentDim===this.m_maxDimension)return null;for(;!this.step_(););if(-1===this.m_maxDimension)return null;if(this.m_bUnionAllDimensions){if(-1===this.m_currentDim)for(let e=0;e<=this.m_maxDimension;e++)if(this.m_bHadGeometry[e]){this.m_complexUnionGeoms[e]=this.getResultGeometry(e);for(let t=e+1;t<=this.m_maxDimension;t++)this.m_complexUnionGeoms[t]=this.getResultGeometry(t),this.m_bHadGeometry[t]&&!this.m_complexUnionGeoms[t].isEmpty()&&(this.m_bIs3D?(0,i.g)(0):this.m_complexUnionGeoms[e]=(new mi).execute(this.m_complexUnionGeoms[e],this.m_complexUnionGeoms[t],this.m_spatialReference,this.m_progressTracker))}for(;this.m_currentDim++,(this.m_currentDim>this.m_maxDimension||this.m_currentDim<0)&&(0,i.d)(""),!this.m_bHadGeometry[this.m_currentDim];);if(this.m_index++,0===this.m_currentDim&&this.m_complexUnionGeoms[this.m_currentDim].getGeometryType()===i.G.enumPoint){let e=new a.M({vd:this.m_complexUnionGeoms[this.m_currentDim].getDescription()});return this.m_complexUnionGeoms[this.m_currentDim].isEmpty()||e.add(this.m_complexUnionGeoms[this.m_currentDim]),e}return this.m_complexUnionGeoms[this.m_currentDim]}return this.m_index=0,this.m_currentDim=this.m_maxDimension,this.getResultGeometry(this.m_maxDimension)}getGeometryID(){return this.m_index}getRank(){return 1}tock(){return this.step_()}getResultGeometry(e){return this.m_readyGeoms[e]}finishDim(e,t,r){let s=t;if(!r)return 16&this.m_options&&(s=Fr([s],1,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D)),s;if(1&this.m_options)return s;if(1===e)if(8&this.m_options||!(16&this.m_options||this.m_totalNonEmptyGeomCounters[e]>1))1===this.m_totalNonEmptyGeomCounters[e]&&(this.m_bIs3D?(0,i.g)(0):s=(new ts).execute(s,this.m_spatialReference,!1,this.m_progressTracker));else{s=Fr([s],1,this.m_spatialReference,this.m_progressTracker,16|this.m_options,this.m_bIs3D);let e=s.getImpl().getIsSimple(0,[0]);(0,i.g)(this.m_bIs3D||(0,o.i)(e))}else this.m_bIs3D?(0,i.g)(0):s=(new ts).execute(s,this.m_spatialReference,!1,this.m_progressTracker);if(0===e&&s.getGeometryType()===i.G.enumPoint){let e=new a.M({vd:s.getDescription()});s.isEmpty()||e.add(s),s=e}return s}static getLevel(e){let t=(0,i.v)(e),r=t>0?(Math.log(t)-Math.log(32))/Math.log(4):0;return r<0&&(r=0),Math.floor(r)}step_(){if(this.m_bDone)return!0;let e;if(this.m_inputGeoms?(e=this.m_inputGeoms.next(),null===e?(this.m_bDone=!0,this.m_inputGeoms=null):(this.checkAndThrow(e),e.isEmpty()||this.m_totalNonEmptyGeomCounters[e.getDimension()]++)):e=null,null!==e){let t=e.getDimension();this.m_bHadGeometry[t]=!0,(t>=this.m_maxDimension||this.m_bUnionAllDimensions)&&(this.addGeom(t,!1,e),t>this.m_maxDimension&&!this.m_bUnionAllDimensions&&this.removeAllBinsWithLowerDimension(t))}if(this.m_addedGeoms>0)for(let e=0;e<=this.m_maxDimension;e++){for(;this.m_dimGeomCounts[e]>1;){let t=this.collectGeometriesToUnion(e);if(null===t)break;{let r;r=1&this.m_options?Fr(t,t.length,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D):Hr(t,t.length,this.m_spatialReference,this.m_progressTracker,8|this.m_options,this.m_bIs3D),this.addGeom(e,!0,r)}}if(this.m_bDone&&((0,i.g)(this.m_dimGeomCounts[e]<=1),0!==this.m_dimGeomCounts[e])){let t=this.m_unionBins[e].entries().next().value,r=t[1].geomPairs()[0].geom,s=t[1].geomPairs()[0].bUnioned;this.m_unionBins[e].clear(),this.m_readyGeoms[e]=this.finishDim(e,r,s)}}return this.m_bDone}addGeom(e,t,r){let s={geom:null,vertexCount:-1,bUnioned:!1,location:new l.P};s.geom=r;let a=(0,i.v)(r);s.vertexCount=a;let o=n.Envelope2D.constructEmpty();r.queryEnvelope(o),s.location=a>0?o.getCenter():new l.P(0,0);let m=_i.getLevel(r);if(e+1>this.m_unionBins.length)for(;this.m_unionBins.length<Math.max(2,e+1);)this.m_unionBins.push(new Map);let h=null,g=this.m_unionBins[e].get(m);g&&(h=g),null===h&&(h=new ui,this.m_unionBins[e].set(m,h)),s.bUnioned=t,h.addPair(s),this.m_dimGeomCounts[e]++,this.m_addedGeoms++,this.m_maxDimension=Math.max(this.m_maxDimension,e)}removeAllBinsWithLowerDimension(e){for(let t=0;t<e;t++)this.m_unionBins[t].clear(),this.m_addedGeoms-=this.m_dimGeomCounts[t],this.m_dimGeomCounts[t]=0}collectGeometriesToUnion(e){if(1&this.m_options&&!this.m_bDone)return null;let t=null,r=[];for(let t of this.m_unionBins[e].keys())r.push(t);(0,l.w)(r);for(let s=0;s<r.length;s++){if(-1===r[s])continue;let i=this.m_unionBins[e].get(r[s]);{let n=i.getBinVertexCount()>5e3&&i.geomCount()>=4;if(this.m_bDone||n){for(let i=0;i<s;i++){if(-1===r[i])continue;let s=this.m_unionBins[e].get(r[i]);s.sort(),this.m_dimGeomCounts[e]-=s.geomCount(),this.m_addedGeoms-=s.geomCount();for(let e of s.geomPairs())t||=[],t.push(e.geom);s.clear(),this.m_unionBins[e].delete(r[i]),r[i]=-1}i.sort(),this.m_dimGeomCounts[e]-=i.geomCount(),this.m_addedGeoms-=i.geomCount();for(let e of i.geomPairs())t||=[],t.push(e.geom);if(i.clear(),this.m_unionBins[e].delete(r[s]),r[s]=-1,!this.m_bDone)break}}}return t}checkAndThrow(e){this.m_bIs3D&&(e.getDimension()>1&&(0,i.x)(),e.hasAttribute(1)||(0,i.a)("Geometry must have Zs")),(0,i.c)(e)}}class pi extends ni{getOperatorType(){return 3}execute(e,t,r,s=null){return et(e,t,r,4,s)}}function di(e,t,r){let s=t.getGCSSplitLines();if(null===s)return e;let h=t.getGCS(),g=h.getPannableExtent().width(),u=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(u);let _=l.E.constructEmpty();u.queryIntervalX(_);let p=s.querySegmentIterator(),d=null,c=new m.T;for(;p.nextPath();)for(;p.hasNextSegment();){let e=p.nextSegment(),t=e.queryInterval(0,0),r=l.E.constructEmpty();r.setCoordsFromEnvelope(t);let s=0;for(;r.vmax>_.vmin;)r.move(-g),s--;for(;r.vmin<=_.vmax;){if(r.isIntersecting(_)){null===d&&(d=new a.a);let t=new a.L({start:e.getStartXY(),end:e.getEndXY()});0!==s&&(c.setShiftCoords(s*g,0),t.applyTransformation(c)),d.addSegment(t,!0)}r.move(g),++s}}if(null!==d){let t=(0,o.e)(h,d,!0);return function(e,t,r,s){let n=t.getGeometryType();if((0,i.j)(n))return new Ge(s).crackAWithBMultiPath_(e,t,r);(0,i.t)("crack_A_with_B")}(e,d,(0,o.f)(t),r)}return e}function ci(e,t,r){let s=e.getName();return function(e){return e.startsWith(ra())}(s)||(r||t>0?(s=e.toString(va.PE_STR_NAME_CANON|va.PE_STR_AUTH_NONE),s=function(e){return e.toLocaleUpperCase("en-US")}(s)):s=e.toString(va.PE_STR_AUTH_TOP)),s}function fi(e,t=-1){if((t>1||t<-1)&&(0,i.a)("verbosity"),-1===t)return e.toString();{let r=0===t?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL;return e.toString(r)}}function xi(e,t,r,s){if(e.isEmpty()||1===r)return e;let a=e.getGeometryType();if(a===i.G.enumPoint){let s=e,i=s.getXY();return 0===Ei([i],1,t,r)||i.isNAN()?s.setEmpty():s.setXY(i),e}if(a===i.G.enumMultiPoint){let s=e,i=e.createInstance(),n=s.getPointCount();i.reserve(n);let a=s.getAttributeStreamRef(0),l=s.getDescription().getAttributeCount()>1,m=new o.P,h=Float64Array.from(a.getArray());if(Ei(h,n,t,r)>0)for(let e=0,t=2*n;e<t;e+=2)Number.isNaN(h[e])||(l?(s.getPointByVal(e>>1,m),m.setXYCoords(h[e],h[e+1]),i.add(m)):i.addXY(h[e],h[e+1]));return i}let l=e,g=t.getOneDegreeGCSUnit(),u=90*g,_=180*g,p=360*g,d=t.getCentralMeridian(),c=.5*g,f=n.Envelope2D.constructEmpty();l.queryEnvelope(f);let x=t.getGCSHorizon(),P=t.getGCSHorisonIsInclusive(),y=x.getGeometryType()===i.G.enumEnvelope,E=n.Envelope2D.constructEmpty();x.queryEnvelope(E);let S=t.getGCS();if((2===r||4===r)&&(E.xmin=d-_,E.xmax=E.xmin+p),4===r){if(!(f.width()>p-g)){let e=n.Envelope2D.constructEmpty();e.setCoords({xmin:f.xmin-g,ymin:E.ymin,xmax:f.xmax+g,ymax:E.ymax}),l=(new h.O).execute(l,e,S,s);let t=Math.floor((d-f.getCenterX())/p);for(f.move(t*p,0);f.xmin>E.xmax;)--t,f.move(-p,0);for(;f.xmin<E.xmin;)t+=1,f.move(p,0);if(0!==t){let e=new m.T;e.setShiftCoords(t*p,0),l.applyTransformation(e)}return l}r=2}if(2===r&&(E.xmin=d-_,E.xmax=E.xmin+p),f.ymin<-u||f.ymax>u){let e=n.Envelope2D.constructEmpty();if(e.setCoords({xmin:f.xmin-g,ymin:-u,xmax:f.xmax+g,ymax:u}),l=(new h.O).execute(l,e,S,s),l.isEmpty())return l;l.queryEnvelope(f)}if(P&&(E.ymax<f.ymin||E.ymin>f.ymax))return l.createInstance();f.width()>p&&(l=Di(l,d-_,p,S,!0,0,!0,s),l.queryEnvelope(f));let C=function(e,t,r,s,i){return e>=r&&t<=s?0:Ni(.5*(t+e),r,s,i)}(f.xmin,f.xmax,E.xmin,E.xmax,p);if(0!==C&&f.move(C,0),f.xmax>E.xmax||f.xmin<E.xmin){if(f.xmax>E.xmax)for(;f.xmin>=E.xmax;)f.move(-p,0),C-=p;for(;f.xmin<E.xmax-p;)f.move(p,0),C+=p}let I=(0,o.m)(S,x,!1);if(0!==C){let e=new m.T;e.setShiftCoords(C,0),l.applyTransformation(e),C=0}if(P){if(y&&E.containsEnvelope(f))return l;let e=[,,];for(let t=0;t<2;t++){let r;if(y?r=(0,i.j)(a)?(0,h.c)(l,E,I,c,s):(0,h.c)(l,E,I,0,s):(r=(new ns).execute(l,x,S,s),r===x&&(r=r.clone())),E.xmin<=f.xmin&&E.xmax>=f.xmax||E.xmin>=f.xmin&&E.xmax<=f.xmax)return r;if(e[t]=r,0===t){f.move(-p,0);let e=new m.T;e.setShiftCoords(-p,0),l.applyTransformation(e)}}return(0,i.j)(a)?e[0].add(e[1],!1):(0,i.d)("intersect_with_GCS_horizon: unexpected geometry type"),e[0]}{if(E.ymax<f.ymin||E.ymin>f.ymax)return l;let e=0;for(;!l.isEmpty()&&f.xmax>E.xmin;){if(0!==e){let t=new m.T;t.setShiftCoords(e,0),l.applyTransformation(t)}if((new pi).execute(l,x,S,s)||(l=(new mi).execute(l,x,S,s),x===l&&(l=l.clone())),0!==e){let t=new m.T;t.setShiftCoords(-e,0),l.applyTransformation(t)}e-=p,f.move(-p,0)}return l}}function Pi(e,t,r,i,n,m){let h={stack:[],error:void 0,hasError:!1};try{if(2===m)return function(e,t,r,s,i){if(Math.abs(r.x-s.x)>Math.PI||Math.abs(r.y)>l.l||Math.abs(s.y)>l.l||(Math.abs(r.y)===l.l||Math.abs(s.y)===l.l)&&r.x!==s.x)return NaN;let{first:n,second:m}=(0,l.$)(r.x,s.x),h=i;if(h=I(h,n,m),!l.E.construct(r.x,s.x).containsCoordinate(h))return NaN;let g=a.Z.constructPoint2D(r),u=a.Z.constructPoint2D(s),_=w(1,t,g),p=w(1,t,u),d=_.crossProductVector(p);if(d.z.isZero())return r.y;let c=d.x.divE(d.z.negate()),f=d.y.divE(d.z.negate()),x=c.mulE(c).addE(f.mulE(f)).sqrt();if(x.isZero()||c.isZero()&&f.isZero())return r.y;let P=Math.atan2(f.value(),c.value()),y=Math.atan2(x.value()*Math.cos(P-h),1-t),E=v(1,t,l.P.construct(h,y)),S=o.k.construct(E.x,E.y,-E.z),C=d.value().dotProduct(E),G=d.value().dotProduct(S);return Math.abs(G)<Math.abs(C)&&(y=-y),y}(0,t,r,i,n);if(Math.abs(r.x-i.x)>=Math.PI||!nn(r.x,i.x,n))return NaN;r.x>i.x&&(i=(0,l.c)(r,r=i));let g=(0,s.mS)(h,new Sa,!1),u=(0,s.mS)(h,new Sa,!1),_=(0,s.mS)(h,new Sa,!1),p=r.clone();Da.geodeticDistance(e,t,r.x,r.y,i.x,i.y,u,g,null,m);let d=u.val,c=0,f=1;for(;d*(f-c)>1e-12*e;){let s=.5*(c+f);if(Da.geodeticCoordinate(e,t,r.x,r.y,d*s,g.val,u,_,m),p.x=u.val,p.y=_.val,p.x===n)return p.y;if(nn(r.x,p.x,n))f=s;else{if(!nn(i.x,p.x,n))return NaN;c=s}}return p.y}catch(e){h.error=e,h.hasError=!0}finally{(0,s.hk)(h)}}function yi(e,t,r,s){for(let i=0,n=0;i<s;i++,n+=2)t[r+i].x=e[n],t[r+i].y=e[n+1]}function Ei(e,t,r,s){if(0===t||1===s)return t;let a=function(e,t){let r;if(Array.isArray(e)){let s=e;r=new Float64Array(2*t);for(let e=0,i=0;e<t;e++,i+=2)r[i]=s[e].x,r[i+1]=s[e].y}else r=e;return r}(e,t);if(2===s){let s=r.getPannableExtentInGCS(),i=t;for(let e=0,r=2*t;e<r;e+=2)(a[e+1]>s.ymax||a[e+1]<s.ymin)&&(a[e]=NaN,i--);return i?(Vi(a,t,s.xmin,s.width(),!0),e!==a&&yi(a,e,0,t),i):(e!==a&&yi(a,e,0,t),0)}let m=r.getOneDegreeGCSUnit(),h=90*m,g=180*m,u=360*m,_=t;for(let e=0,r=2*t;e<r;e+=2)(a[e+1]>h||a[e+1]<-h)&&(a[e]=NaN,_--);if(!_)return e!==a&&yi(a,e,0,t),0;let p=n.Envelope2D.constructEmpty();p.setFromPoints(a,t);let d=r.getGCSHorizon(),c=r.getGCSHorisonIsInclusive(),f=d.getGeometryType()===i.G.enumEnvelope,x=n.Envelope2D.constructEmpty();if(d.queryEnvelope(x),c&&(x.ymax<p.ymin||x.ymin>p.ymax))return e!==a&&yi(a,e,0,t),0;if(c)if(Vi(a,t,x.getCenterX()-g,u,!0),_=t,f)for(let e=0,r=2*t;e<r;e+=2)x.containsCoords(a[e],a[e+1])||(a[e]=NaN,_--);else{let e=(0,o.m)(r.getGCS(),d,!1),s=new l.P;for(let r=0,i=2*t;r<i;r+=2)s.setCoords(a[r],a[r+1]),0!==tr(d,s,e)||(a[r]=NaN,_--)}else{Vi(a,t,-g,u,!0),_=t;let e=(0,o.m)(r.getGCS(),d,!1),s=new l.P;for(let r=0,i=2*t;r<i;r+=2){s.setCoords(a[r],a[r+1]),s.isNAN()&&_--;let t=Ni(s.x,x.xmin,x.xmax,u);s.x+=t,0!==tr(d,s,e)&&(a[r]=NaN,_--)}}return e!==a&&yi(a,e,0,t),_}function Si(e,t,r,s,n,a){if(t.isPannable()||(0,i.a)("fold_into_360_degree_range"),e.isEmpty())return e;let o,l;if(2===t.getCoordinateSystemType()){let e=t.getPannableExtent();l=e.xmin,o=e.width()}else{let e=t.getOneDegreeGCSUnit();o=360*e,l=r-180*e}return Di(e,l,o,t,s,n,!0,a)}function Ci(e,t,r,s){let i,n;if(2===r.getCoordinateSystemType()){let e=r.getPannableExtent();i=e.xmin,n=e.width()}else{let e=r.getOneDegreeGCSUnit();n=360*e,i=s-180*e}Vi(e,t,i,n)}function Ii(e,t){let r=t.width(),s=(0,l.p)(e-t.vmin,r);return s<0&&(s+=r),t.snapClip(s+t.vmin)}function vi(e,t,r){return e>t.xmax&&e-t.xmax<r?t.xmax:e<t.xmin&&t.xmin-e<r?t.xmin:e}function Gi(e,t,r){if(e[0]<t.vmin||e[0]>t.vmax||r&&e[0]===t.vmax){let r=t.width();return e[0]+=Math.ceil((t.vmin-e[0])/r)*r,e[0]=t.snapClip(e[0]),!0}return!1}function wi(e,t,r,s,i){let n=new a.E,l=n.addGeometry(e);return bi(n,l,t,(0,o.m)(t,e,!1),r,s,i),n.getGeometry(l)}function bi(e,t,r,n,a,o,m){let h={stack:[],error:void 0,hasError:!1};try{(0,i.g)(Rn()),r.isPannable()||(0,i.q)("insert_geodetic_points");let g=r.getPannableExtent(),u=r.getGCS(),_=On();u.querySpheroidData(_);let p=u.getUnit().getUnitToBaseFactor(),d=_.majorSemiAxis,c=_.e2,f=0,x=new l.E;g.queryIntervalX(x);let P=null,y=(0,l.d)(4,NaN);2===r.getCoordinateSystemType()?(P=r.getPECoordSys(),o?(y[0]=Ii(m,x),y[1]=g.getCenterY(),Ga.projToGeog(P,1,y),f=y[0]*p):(y[0]=g.getCenterX(),y[1]=m,Ga.projToGeog(P,1,y),f=y[1]*p)):f=m*p,!o&&0!==f&&2!==a&&(0,i.q)("insert_geodetic_points: 1");let E=(0,s.mS)(h,new Sa,!1),S=new l.P,C=new l.P,I=new l.P,v=new l.P,G=new l.P,w=new l.P;for(let s=e.getFirstPath(t);-1!==s;s=e.getNextPath(s)){let t=e.getFirstVertex(s);e.queryXY(t,I);let i=!1,h=e.getNextVertex(t);for(let t=h;-1!==t;t=e.getNextVertex(t)){if(t===h){if(i)break;i=!0}if(e.queryXY(t,v),o&&(n<m-I.x&&v.x-m>n||n<m-v.x&&I.x-m>n)||!o&&(0!==m||n<-I.y&&v.y>n||n<-v.y&&I.y>n))do{if(Math.abs(I.x-v.x)>=.5*x.width())break;2===r.getCoordinateSystemType()?(y[0]=Ii(I.x,x),y[1]=I.y,y[2]=Ii(v.x,x),y[3]=v.y,Ri(P,2,y,0),G.x=y[0]*p,G.y=y[1]*p,w.y=y[3]*p):(G.x=I.x*p,G.y=I.y*p,w.y=v.y*p),w.x=(v.x-I.x)*Math.PI*2/x.width()+G.x;let s=0,i=(0,l.m)(l.P,2);if(o){if(C.x=f,C.y=Pi(d,c,G,w,f,a),Number.isNaN(C.y))break;i[0]=C,s=1}else if(2===a){let e=[0,0];if(s=V(0,c,G,w,f,e),!s)break;i[0].x=e[0],i[0].y=f,2===s&&(i[1].x=e[1],i[1].y=f)}else{if(C.x=an(d,c,G,w,a),Number.isNaN(C.x))break;C.y=0,i[0]=C,s=1}let n=-1;for(let h=0;h<s;h++){Da.geodeticDistance(d,c,G.x,G.y,w.x,w.y,E,null,null,a);let s=E.val;Da.geodeticDistance(d,c,G.x,G.y,i[h].x,i[h].y,E,null,null,a);let g=E.val;2===r.getCoordinateSystemType()?(y[0]=i[h].x/p,y[1]=i[h].y/p,Ga.geogToProj(P,1,y),o?(S.y=y[1],S.x=m):(S.x=on(y[0],I.x,v.x,x),S.y=m)):o?(S.x=m,S.y=i[h].y/p):(S.x=on(i[h].x/p,I.x,v.x,x),S.y=m);let u=s>0?(0,l.s)(g/s,0,1):.5;if(0===u||1===u||n>u)continue;let _=e.getPrevVertex(t);e.splitSegment(_,[u],1);let f=e.getNextVertex(_);e.setXYCoords(f,S.x,S.y),n=u}}while(0);I.setCoordsPoint2D(v)}}}catch(e){h.error=e,h.hasError=!0}finally{(0,s.hk)(h)}}function Ti(e,t){(0,i.g)(t.isPannable());let r=t.getPannableExtent();if(e.getGeometryType()===i.G.enumPoint){let t=e.getY();return r.ymin<=t&&t<=r.ymax?e:e.createInstance()}let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s);let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:r}),a.xmin=s.xmin,a.xmax=s.xmax,a.inflateCoords(.01*a.height(),0);let l,m=(0,o.d)(t,s,!1);return l=a.containsEnvelope(s)?e:(0,h.c)(e,a,m,0,null),l}function Ni(e,t,r,s){let i=.5*(r+t);return(0,l.H)((i-e)/s)*s}function Di(e,t,r,s,o,g,u,_){let p=e.getGeometryType(),d=l.E.constructEmpty();d.setCoords(t,t+r);let c=[0];if(p===i.G.enumPoint){if(c[0]=e.getX(),Gi(c,d,u)){let t=o?e:e.clone();return t.setX(c[0]),t}return e}let f=n.Envelope2D.constructEmpty();if(e.queryEnvelope(f),f.isEmpty())return e;if(p===i.G.enumMultiPoint){let t=o?e:e.clone(),r=t.getImpl(),s=r.getAttributeStreamRef(0),i=2*r.getPointCount(),n=!1;for(let e=0;e<i;e+=2)c[0]=s.read(e),Gi(c,d,u)&&(s.write(e,c[0]),n=!0);return n&&r.notifyModifiedFlags(2001),t}let x=l.E.constructEmpty();if(f.queryIntervalX(x),d.contains(x))return d.vmax,x.vmax,e;let P=n.Envelope2D.constructEmpty();if(P.setCoords({env2D:f}),0===x.width()){let t=x.vmin;t+=Math.ceil((d.vmin-t)/r)*r,t=d.snapClip(t);let s=o?e:e.clone();return s.setAttributeBasic(0,0,t),s}if(p===i.G.enumEnvelope){let t=o?e:e.clone();return f.intersect(P),t.setEnvelope(f),t}let y=.1*Math.max(f.height(),f.width())*1;P.inflateCoords(0,y);let E=e,S=s.getTolerance(0),C=new m.T;for(;;){let e=Math.floor((x.vmin-t)/r),n=Math.ceil((x.vmax-t)/r);if(!(n-e>3))break;{let a=Math.floor(.5*(n+e));P.xmin=f.xmin-y,P.xmax=t+r*a;let o=(0,h.c)(E,P,S,g,_);P.xmin=P.xmax,P.xmax=f.xmax+y;let l=(0,h.c)(E,P,S,g,_);C.setShiftCoords((a-n)*r,0),l.applyTransformation(C),p===i.G.enumPolygon?E=(new gi).execute(o,l,s,_):(E=o,E.add(l,!1)),E.queryEnvelope(f),f.queryIntervalX(x)}}P.xmin=t,P.xmax=t+r;let I=n.Envelope2D.constructEmpty();I.setCoords({env2D:P}),I.inflateCoords(S,0);let v,G=Math.floor((f.xmin-P.xmin)/r)*r;G?(P.move(G,0),C.setShiftCoords(-G,0)):C.setIdentity(),v=p===i.G.enumPolyline?new a.a({vd:E.getDescription()}):new a.P({vd:E.getDescription()});let w=n.Envelope2D.constructEmpty(),b=n.Envelope2D.constructEmpty();for(;f.xmax>P.xmin;){let e=(0,h.c)(E,P,S,0,_);e.queryEnvelope(b);let t=!1;t=p===i.G.enumPolyline?!e.isEmpty()&&(b.width()>S||b.height()>S):!e.isEmpty()&&(p!==i.G.enumPolygon||b.width()>S),t&&(e.applyTransformation(C),e.queryEnvelope(b),v.queryEnvelope(w),w.inflateCoords(S,S),w.isIntersecting(b)&&p===i.G.enumPolygon?v=(new gi).execute(v,e,s,_):v.add(e,!1)),P.move(r,0),C.shiftCoords(-r,0)}return v}function Vi(e,t,r,s,i=!0){let n=new l.E;n.setCoords(r,r+s);let a=[0];if(Array.isArray(e)){let r=e;for(let e=0;e<t;e++)n.containsRightExclusive(r[e].x)||(a[0]=r[e].x,Gi(a,n,i),r[e].x=a[0])}else{let r=e;for(let e=0;e<t;e++){let t=e<<1;n.containsRightExclusive(r[t])||(a[0]=r[t],Gi(a,n,i),r[t]=a[0])}}}function ki(e,t,r,s=!0){if(e.isEmpty())return;let a=e.getGeometryType();if(!s||a!==i.G.enumPolygon)if((0,i.i)(a)){let s=!1;if((0,i.j)(a)&&e.hasNonLinearSegments()){let n=e.getImpl(),a=n.getAttributeStreamRef(0),o=n.getSegmentFlagsStreamRef();(0,i.g)(null!==o);for(let e=0,i=n.getPathCount();e<i;e++){let i=!0,l=n.isClosedPath(e),m=n.getPathEnd(e);l&&n.getPathSize(e)>0&&(i=1==(31&o.read(m-1)));for(let l=n.getPathStart(e);l<m;l++)if(1==(31&o.read(l))){if(i){let e=a.read(2*l),i=vi(e,t,r);i!==e&&(s=!0,a.write(2*l,i))}i=!0}else i=!1}}else{let i=e.getImpl(),n=i.getAttributeStreamRef(0);for(let e=0,a=i.getPointCount();e<a;e++){let i=n.read(2*e),a=vi(i,t,r);a!==i&&(s=!0,n.write(2*e,a))}}s&&e.getImpl().notifyModifiedFlags(2001)}else if(a===i.G.enumEnvelope){let s=e,i=n.Envelope2D.constructEmpty();s.queryEnvelope(i),i.xmin=vi(i.xmin,t,r),i.xmax=vi(i.xmax,t,r),s.setEnvelope(i)}else if(a===i.G.enumPoint){let s=e;s.setX(vi(s.getX(),t,r))}else(0,i.d)("")}function Fi(e,t,r){let s=new l.P;return s.x=vi(e.x,t,r),s.y=e.y,s}function Hi(e,t,r,s){let a=e.getGeometryType();(0,i.g)(a===i.G.enumPolygon||a===i.G.enumPolyline||a===i.G.enumMultiPoint);let m=t.getCoordinateSystemType();if(2===m){let m=e;if(0===r){let r=function(e,t){if(t.isEmpty())return 0;let r=e.getPECoordSys();if(r.getProjection().getCode()===va.PE_PRJ_AZIMUTHAL_EQUIDISTANT){let s=On();e.querySpheroidData(s);let i=r.getParameters();if(null===i[va.PE_PARM_LAM0]||null===i[va.PE_PARM_PHI0])return 0;let a=[i[va.PE_PARM_LAM0].getValue(),i[va.PE_PARM_PHI0].getValue()];Ga.geogToProj(r,1,a);let o=new l.P(a[0],a[1]),m=n.Envelope2D.constructEmpty();t.queryEnvelope(m);let h=(0,l.m)(l.P,4);m.queryCorners(h);let g=0,u=e.getOneMeter(),_=Math.max(s.majorSemiAxis,s.minorSemiAxis)*Math.PI,p=Math.min(s.majorSemiAxis,s.minorSemiAxis)*Math.PI;p-=_/180,_*=u,p*=u;for(let e=0;e<4;e++){let t=l.P.distance(h[e],o);if(t>_)g++;else if(t>p)return-1}if(0===g)return 1;if(4===g){let e=n.Envelope2D.constructEmpty();return e.setCoords({center:o,width:_,height:_}),m.isIntersectingNe(e)?-1:0}return-1}return-1}(t,e);if(0===r)return e.createInstance();if(1===r)return e;let a=t.getPCSHorizon(),g=a.getGeometryType(),u=t.getDefaultPrecisionSR();if(g===i.G.enumEnvelope){let r=n.Envelope2D.constructEmpty();a.queryEnvelope(r);let i=(0,o.d)(u,r,!1);m=(0,h.c)(e,r,i,5e4*t.getOneMeterPCSUnit(),s)}else(new li).execute(a,e,u,s)||(m=(new ns).execute(m,a,u,s),m===a&&(m=m.clone()))}else if(t.isPannable()){let e=n.Envelope2D.constructEmpty();m.queryEnvelope(e);let o=t.getPannableExtent();o.containsEnvelope(e)||(ki(m,o,t.getTolerance(0)),(2===r||4===r)&&(m=Ti(m,t)),4===r?a===i.G.enumPolygon&&e.width()>2*o.width()&&(m=Di(m,-2*o.width(),2*o.width(),t,!0,0,!0,s)):m=Si(m,t,0,!0,1e5*t.getOneMeterPCSUnit(),s))}return m}if((0,i.g)(1===m),a===i.G.enumMultiPoint)return ki(e,t.getPannableExtent(),t.getTolerance(0)),e;{let r=n.Envelope2D.constructEmpty();e.queryEnvelope(r);let o=e,l=t.getPannableExtent();if(r.ymin<l.ymin||r.ymax>l.ymax){let e=Math.max(1,r.calculateToleranceFromEnvelope()),i=new n.Envelope2D(r.xmin-e,l.ymin,r.xmax+e,l.ymax);if(o=(new h.O).execute(o,i,t,s),o.isEmpty())return o}return a===i.G.enumPolygon&&r.width()>2*l.width()&&(o=Di(o,-2*l.width(),2*l.width(),t,!0,0,!0,s)),o}}function Ai(e,t){let r=t.getPointCount();if(!r)return;let s=t.getImpl(),i=s.getAttributeStreamRef(0),n=e;Ga.geogToProj(n,r,i.getArray()),s.notifyModifiedFlags(2001)}function Mi(e,t,r,s){if(!r)return;let i=e.getPECoordSys();if(1===r){if(t[0].isNAN())return;let r=[t[0].x,t[0].y];if(Ga.geogToProj(i,1,r),s){let{first:s,second:i}=e.m_peCoordSysVal.getGeogToProjFactors();r[0]=s*(t[0].x-e.getCentralMeridian())+i}return void t[0].setCoords(r[0],r[1])}let n=e.isPannable(),a=n?e.getPannableExtent().width():0,o=179*a/360,m=0;n&&(m=e.getCentralMeridian());let h=new Float64Array(512);for(let g=0;g<r;){for(let e=g;e<r&&t[e].isNAN();++e)g++;let u=Math.min(256,r-g);if(u>0){for(let e=1,r=g+1;e<u;++e,++r)if(t[r].isNAN()){u=e;break}for(let e=0;e<u;++e){let r=e<<1;h[r]=t[g+e].x,h[r+1]=t[g+e].y}if(Ga.geogToProj(i,u,h),s){let{first:r,second:s}=e.m_peCoordSysVal.getGeogToProjFactors();for(let e=0;e<u;++e)h[e<<1]=r*(t[g+e].x-m)+s}if(n)for(let e=0,r=g;e<u;e++,r++){let s=e<<1,i=h[s],n=(0,l.e)(i),g=t[r].x-m;n*(0,l.e)(g)<0&&Math.abs(i)>o&&(h[s]-=n*a)}yi(h,t,g,u),g+=u}}}function Ui(e,t,r,s){let i,o=new a.M({vd:t.getDescription()});o.addPoints(t,0,-1),i=(new ps).execute(o,e,s);let l=t.getPointCount();if(r.setEmpty(),e.getInputSR().isPannable()){if(l!==i.getPointCount())return!1;let s=new n.Envelope2D;t.queryEnvelope(s);let a=new n.Envelope2D;i.queryEnvelope(a);let o=s.width(),m=a.width();if(0!==o&&0!==m){let t=m/o,r=e.getOutputSR().getPannableExtent().width()/e.getInputSR().getPannableExtent().width();if(Math.abs(t/r-1)>1e-10)return!1}else if(0!==o||0!==m)return!1;r.add(t,!1);for(let e=0;e<l;e++){let t=i.getXY(e);r.setXY(e,t)}return!0}return!1}function qi(e,t,r){(0,i.g)(!r||e.isPannable());let s=t.getPointCount();if(!s)return;let n=t.getImpl(),a=n.getAttributeStreamRef(0),o=e.getPECoordSys(),m=0,h=a.readRange(0,2*s),g=()=>{Ga.geogToProj(o,s,h)},u=e.isPannable()&&!r,_=u?e.getPannableExtent().width():0,p=179*_/360;if(e.isPannable()&&(m=e.getCentralMeridian(),r)){let t=e.m_peCoordSysVal.getGeogToProjFactors(),r=t.first,i=t.second;g=()=>{Ga.geogToProj(o,s,h);for(let e=0;e<s;e++){let t=e<<1,s=a.read(t),n=r*(s-m)+i;h[t]=n}}}if(g(),u)for(let e=0;e<s;e++){let t=e<<1,r=h[t],s=(0,l.e)(r),i=a.read(t)-m;s*(0,l.e)(i)<0&&Math.abs(r)>p&&(h[t]+=-s*_)}a.writeRangeFromArray(0,2*s,h,!0,1),n.notifyModifiedFlags(2001)}function Bi(e,t,r){switch(t.getGeometryType()){case i.G.enumLine:return void function(e,t,r){let s=[t.getStartXY(),t.getEndXY()];Mi(e,s,2,r),t.setStartXY(s[0]),t.setEndXY(s[1]),t.normalizeAfterEndpointChange()}(e,t,r);case i.G.enumBezier:return void function(e,t,r){let s=(0,l.m)(l.P,4);t.queryControlPoints(s),tn(e,s,4,r),t.setControlPoints(s)}(e,t,r);case i.G.enumEllipticArc:return void function(e,t,r){if(0===t.projectionBehavior())!function(e,t,r){sn(!0,e,0,t,r)}(e,t,r);else{let s=t.isClosed()&&t.isMajor(),i=[t.getStartXY(),s?t.getCenter():t.getEndXY()],n=[i[0].clone(),i[1].clone()];tn(e,n,2,r);let a=new m.T;a.initializeFromTwoPointsArray(i,n),t.applyTransformation(a);let o=+!s;t.setCoordsForIntersector(n[0],n[o],!1)}}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return void(0,i.g)(0);default:(0,i.d)("")}}function Oi(e,t,r){if(!t.hasNonLinearSegments())return void qi(e,t,r);if((0,i.g)(!r||e.isPannable()),t.isEmpty())return;let s=e.getPECoordSys(),n=e.isPannable(),m=n?e.getPannableExtent().width():0,h=179*m/360,g=0;n&&(g=e.getCentralMeridian());let u=t.createInstance();u.reserveParts(t.getPointCount(),t.getPathCount());let _=t.getImpl(),p=new a.S;for(let i=0,a=t.getPathCount();i<a;++i)if(_.hasNonLinearSegmentsPath(i)){let t=!0,s=-1,n=_.getPathStart(i),a=n+_.getSegmentCountPath(i);_.isClosedPath(i)&&(s=a-1);let m=new l.P;for(let i=n;i<a;++i){if(_.getSegmentBuffer(i,p,!1),Bi(e,p.get(),r),t||p.get().getStartXY().equals(m)||p.get().moveTo(m),i!==s)u.addSegment(p.get(),t);else{if(t){let e=new o.P;p.get().queryStart(e),u.startPathPoint(e)}u.closeLastPathWithSegment(p.get())}m.assign(p.get().getEndXY()),t=!1}}else{let e,r=1024,a=_.getPathSize(i),o=Math.min(a,r);u.insertPath(-1,t,i,!0);let p=_.getAttributeStreamRef(0),d=u.getAttributeStreamRef(0);for(let t=_.getPathStart(i),u=_.getPathEnd(i);t<u;){if(e=p.readRange(t,o),Ga.geogToProj(s,o,e),n)for(let t=0;t<o;t++){let r=t<<1,s=e[r],i=(0,l.e)(s),n=p.read(2*(0+t))-g;i*(0,l.e)(n)<0&&Math.abs(s)>h&&(e[r]+=-i*m)}d.writeRangeFromArray(t,o,e,!0,1),t+=o,a-=o,o=Math.min(a,r)}}t.assignMove(u)}function Yi(e,t,r){let s=r.getPointCount();if(!s)return;let i=r.getImpl(),n=i.getAttributeStreamRef(0),a=Math.min(s,1e3),o=0,m=e.getPECoordSys();Number.isNaN(t)&&(t=0);let h,g=e.isPannable(),u=e.getOneDegreeGCSUnit(),_=360*u,p=179*u;for(;s;){if(h=n.readRange(2*o,2*a),Ri(m,a,h,t),g)for(let e=0;e<a;e++){let r=e<<1,s=h[r]-t,i=(0,l.e)(s),a=n.read(2*(o+e));i*(0,l.e)(a)<0&&Math.abs(s)>p&&(h[r]+=-i*_)}n.writeRangeFromArray(2*o,2*a,h,!0,1),o+=a,s-=a,a=Math.min(s,1e3)}i.notifyModifiedFlags(2001)}function Xi(e,t,r){switch(r.getGeometryType()){case i.G.enumLine:return void function(e,t,r){let s=[r.getStartXY(),r.getEndXY()];zi(e,t,s,2),r.setStartXY(s[0]),r.setEndXY(s[1]),r.normalizeAfterEndpointChange()}(e,t,r);case i.G.enumBezier:return void function(e,t,r){let s=(0,l.m)(l.P,4);r.queryControlPoints(s),rn(e,t,s,4),r.setControlPoints(s)}(e,t,r);case i.G.enumEllipticArc:return void function(e,t,r){if(0===r.projectionBehavior())!function(e,t,r){sn(!1,e,t,r,!1)}(e,t,r);else{let s=r.isClosed()&&r.isMajor(),i=[r.getStartXY(),s?r.getCenter():r.getEndXY()],n=[i[0].clone(),i[1].clone()];rn(e,t,n,2);let a=new m.T;a.initializeFromTwoPointsArray(i,n),r.applyTransformation(a);let o=+!s;r.setCoordsForIntersector(n[0],n[o],!1)}}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return void(0,i.g)(0);default:(0,i.d)("")}}function Ri(e,t,r,s){let n=Ga.projToGeogCenter(e,t,r,s);for(let e=0;e<t;++e){let t=e<<1;(0,i.g)(Number.isFinite(r[t]+r[t+1]))}return n}function Li(e,t,r){if(!r.hasNonLinearSegments())return void Yi(e,t,r);if(r.isEmpty())return;let s=e.getPECoordSys();Number.isNaN(t)&&(t=0);let i=e.isPannable(),n=e.getOneDegreeGCSUnit(),m=360*n,h=179*n,g=r.createInstance();g.reserveParts(r.getPointCount(),r.getPathCount());let u=r.getImpl(),_=new a.S;for(let n=0,a=r.getPathCount();n<a;++n)if(u.hasNonLinearSegmentsPath(n)){let r=!0,s=-1,i=u.getPathStart(n),a=i+u.getSegmentCountPath(n);u.isClosedPath(n)&&(s=a-1);let m=new l.P;for(let n=i;n<a;++n){if(u.getSegmentBuffer(n,_,!1),Xi(e,t,_.get()),r||_.get().getStartXY().equals(m)||_.get().moveTo(m),n!==s)g.addSegment(_.get(),r);else{if(r){let e=new o.P;_.get().queryStart(e),g.startPathPoint(e)}g.closeLastPathWithSegment(_.get())}m.assign(_.get().getEndXY()),r=!1}}else{let e,a=1e3,o=u.getPathSize(n),_=Math.min(o,a);g.insertPath(-1,r,n,!0);let p=u.getAttributeStreamRef(0),d=g.getAttributeStreamRef(0);for(let r=u.getPathStart(n),g=u.getPathEnd(n);r<g;){if(e=p.readRange(2*r,2*_),Ri(s,_,e,t),i)for(let s=0;s<_;s++){let i=s<<1,n=e[i]-t,a=(0,l.e)(n),o=p.read(2*r);a*(0,l.e)(o)<0&&Math.abs(n)>h&&(e[i]+=-a*m)}d.writeRangeFromArray(2*r,2*_,e,!0,1),r+=_,o-=_,_=Math.min(o,a)}}r.assignMove(g)}function zi(e,t,r,s){let i=e.getPECoordSys();Number.isNaN(t)&&(t=0);let n=e.isPannable(),a=e.getOneDegreeGCSUnit(),o=360*a,m=179*a,h=new Float64Array(512);for(let e=0;e<s;){for(let t=e;t<s&&r[t].isNAN();++t)e++;let a=Math.min(256,s-e);if(a>0){for(let t=1,s=e+1;t<a;++t,++s)if(r[s].isNAN()){a=t;break}for(let t=0;t<a;t++){let s=t<<1;h[s]=r[e+t].x,h[s+1]=r[e+t].y}if(Ri(i,a,h,t),n)for(let s=0,i=e;s<a;++s,++i){let e=s<<1,n=r[i].x,a=h[e]-t,g=(0,l.e)(a);g*(0,l.e)(n)<0&&Math.abs(a)>m&&(h[e]-=g*o)}for(let t=0;t<a;t++){let s=t<<1;r[e+t].x=h[s],r[e+t].y=h[s+1]}e+=a}}}function Wi(e,t,r,s){(0,i.g)(0)}function ji(e,t,r){let s=t.getPointCount();if(!s)return!1;let i=t.getImpl(),n=i.getAttributeStreamRef(0),a=null,o=e.getInputSR(),m=e.getOutputSR();o.getVCS(),m.getVCS();let h=o.getOneDegreeGCSUnit(),g=m.getOneDegreeGCSUnit(),u=e.isVertical();u&&t.hasAttribute(1)&&(a=i.getAttributeStreamRef(1));let _=e.getDatumTransformation(),p=!!_&&1===_.getType();if(!p&&null!==a&&(Wi(a.getArray()),a=null),!_||0===_.count()){let e=o.getGcsUnitFactor()/m.getGcsUnitFactor(),t=(o.getPrimeMeridian()-m.getPrimeMeridian())*g,r=-90*h,a=90*h,u=0,_=n.getArray(),p=[0];for(let e=1,t=2*s;e<t;)p[0]=_[e],u|=+!!(0,l._)(p,r,a),_[e]=p[0],e+=2;if(0!==t||1!==e){u=1;let r=n.getArray();for(let i=0,n=2*s;i<n;){let s=r[i];s*=e,s+=t,r[i]=s,r[i+1]*=e,i+=2}}return 0!==u&&i.notifyModifiedFlags(2001),!!u}let d=Math.min(s,1e3),c=(0,l.d)(d,NaN),f=(0,l.d)(d,NaN),x=null;null!==a&&(x=new Float64Array(d));let P=0,y=NaN,E=NaN,S=360*g,C=g/h;r&&(E=90*g,y=89.9*h,f.fill(0));let I=!0,v=0;for(;s;){let e=!1,t=n.readRange(2*P,2*d);for(let e=0;e<d;e++)c[e]=t[e<<1];if(r)for(let r=0;r<d;r++){let s=1+(r<<1),i=Math.abs(t[s])-y;if(i>0){let n=t[s];t[s]=(0,l.f)(y,n),f[r]=(0,l.f)(i,n),e=!0}}let i=t[0];if(p){let e=_;x&&a.queryRange(P,d,x,!0,1),e.transform(!1,t,x,d),x&&a.writeRangeFromArray(P,d,x,!0,1)}else _.transform(!1,t,d);I&&=(v=t[0]-C*i,!1);for(let e=0;e<d;e++){let r=e<<1,s=t[r]-c[e]*C-v;Math.abs(s)>200&&(t[r]+=s>0?-S:S)}if(e){for(let e=0;e<d;e++)if(f[e]){let r=1+(e<<1);t[r]+=C*f[e],t[r]>E?t[r]=E:t[r]<-E&&(t[r]=-E)}f.fill(0)}n.writeRangeFromArray(2*P,2*d,t,!0,1),u&&a&&a.writeRangeFromArray(P,d,x,!0,1),P+=d,s-=d,d=Math.min(s,1e3)}return i.notifyModifiedFlags(2001),!0}function Zi(e,t,r){switch(t.getGeometryType()){case i.G.enumLine:return function(e,t,r){let s=[t.getStartXY(),t.getEndXY()],i=null;t.hasAttribute(1)&&(i=[0,0],i[0]=t.getAttributeAsDbl(0,1,0),i[1]=t.getAttributeAsDbl(1,1,0));let n=en(e,s,i,2,r);return t.setStartXY(s[0]),t.setEndXY(s[1]),i&&(t.setStartAttribute(1,0,i[0]),t.setEndAttribute(1,0,i[1])),t.normalizeAfterEndpointChange(),n}(e,t,r);case i.G.enumBezier:return function(e,t,r){let s=(0,l.m)(l.P,4);t.queryControlPoints(s);let i=null;t.hasAttribute(1)&&(i=[0,0,0,0],i[0]=t.getAttributeAsDbl(0,1,0),i[3]=t.getAttributeAsDbl(1,1,0),i[1]=(0,l.r)(i[0],i[3],.5),i[2]=i[1]);let n=en(e,s,i||null,s.length,r);return t.setControlPoints(s),i&&(t.setStartAttribute(1,0,i[0]),t.setEndAttribute(1,0,i[3])),t.normalizeAfterEndpointChange(),n}(e,t,r);case i.G.enumEllipticArc:return function(e,t,r){if(0===t.projectionBehavior())return function(e,t,r){let s=[t.getStartXY(),t.getEndXY(),t.getInteriorPoint(),t.getCenter()],i=4;t.isDegenerateToLine()&&(i=2);let n=[0,0,0,0],a=null;if(t.hasAttribute(1)){a=n,a[0]=t.getAttributeAsDbl(0,1,0),a[1]=t.getAttributeAsDbl(1,1,0);let e=(0,l.r)(a[0],a[1],.5);a[2]=e,a[3]=e}let o=t.getStartXY().equals(t.getEndXY())&&!t.isDegenerateToLine(),m=en(e,s,a,i,r);return o?t.constructCircleCenterAndPoint(s[3],s[0],!t.isClockwise()):t.isDegenerateToLine()?t.constructLineCircularArc(s[0],s[1]):t.constructCircularArcThreePoint(s[0],s[1],s[2]),a&&(t.setStartAttribute(1,0,a[0]),t.setEndAttribute(1,0,a[1])),m}(e,t,r);let s=t.getStartXY().equals(t.getEndXY()),i=(0,l.m)(l.P,3),n=(0,l.m)(l.P,3),a=null;i[0].assign(t.getStartXY()),i[1].assign(s?t.getCenter():t.getEndXY());let o=!1;t.hasAttribute(1)&&(a=[0,0,0],a[0]=t.getAttributeAsDbl(0,1,0),a[1]=t.getAttributeAsDbl(1,1,0),a[2]=(0,l.r)(a[0],a[1],.5),s&&(a[1]=a[2])),n[0].setCoordsPoint2D(i[0]),n[1].setCoordsPoint2D(i[1]);let h=new m.T;if(s||t.isDegenerateToLine())o=en(e,n,a,2,r),h.initializeFromTwoPoints(i[0],i[1],n[0],n[1]);else{let s=new l.P;t.queryCoord2D(.5,s),i[2].setCoordsPoint2D(s),n[2].setCoordsPoint2D(s),o=en(e,n,a,3,r),h.setFromTwoTriangles(i,n)}return h.isIdentity()||(t.applyTransformation(h),t.setStartXY(n[0]),t.setEndXY(s?n[0]:n[1]),t.normalizeAfterEndpointChange()),a&&(t.setStartAttribute(1,0,a[0]),t.setEndAttribute(1,0,s?a[0]:a[1])),o}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return(0,i.g)(0),!1;default:(0,i.d)("")}}function Ki(e,t,r){if(!t.hasNonLinearSegments())return ji(e,t,r);if(t.isEmpty())return!1;let s=t.createInstance();s.reserveParts(t.getPointCount(),t.getPathCount());let i=t.getImpl(),n=new a.S;for(let a=0,m=t.getPathCount();a<m;++a){let t=!0,m=-1,h=i.getPathStart(a),g=h+i.getSegmentCountPath(a);i.isClosedPath(a)&&(m=g-1);let u=new l.P;for(let a=h;a<g;++a){if(i.getSegmentBuffer(a,n,!1),Zi(e,n.get(),r),t||n.get().getStartXY().equals(u)||n.get().moveTo(u),a!==m)s.addSegment(n.get(),t);else{if(t){let e=new o.P;n.get().queryStart(e),s.startPathPoint(e)}s.closeLastPathWithSegment(n.get())}u.assign(n.get().getEndXY()),t=!1}}return t.assignMove(s),!0}function Qi(e,t,r,s,i,n){if(e.isIdentityGeogToGeog()){let r=90*e.getInputSR().getOneDegreeGCSUnit(),i=0,n=[0];for(let e=0;e<s;e++)n[0]=t[e].y,i|=+!!(0,l._)(n,-r,r),t[e].y=n[0];return i}let a=e.getInputSR(),o=e.getOutputSR(),m=a.getVCS(),h=o.getVCS(),g=a.getOneDegreeGCSUnit(),u=90*g,_=o.getOneDegreeGCSUnit(),p=e.isVertical(),d=e.getDatumTransformation(),c=!!d&&1===d.getType();if(p||(r=null),!d||0===d.count()){let e=0,i=[0];for(let r=0;r<s;r++)i[0]=t[r].y,e|=+!!(0,l._)(i,-u,u),t[r].y=i[0];return e|=+!!ti(a.getGCS(),m,o.getGCS(),h,t,r,s),e}!c&&null!==r&&Wi();let f=Math.min(s,1024),x=(0,l.d)(f,NaN),P=(0,l.d)(f,NaN),y=0,E=NaN,S=NaN,C=360*_,I=_/g;i&&(S=90*_,E=89.9*g);let v=!0,G=0,w=s;for(;w;){let e=!1;for(let e=0;e<f;e++)x[e]=t[e+y].x;if(i)for(let r=0;r<f;r++){let s=Math.abs(t[r+y].y)-E;if(s>0){let i=t[r+y].y;t[r+y].y=(0,l.f)(E,i),P[r]=(0,l.f)(s,i),e=!0}}let s=t[0].x;c?d.transform(!1,t,r,f):d.transform(!1,t,f),v&&=(G=t[0].x-I*s,!1);for(let e=0;e<f;e++){let r=t[y+e].x-x[e]*I-G;Math.abs(r)>200&&(r>0?t[y+e].x-=C:t[y+e].x+=C)}if(e){for(let e=0;e<f;e++)P[e]&&(t[y+e].y+=I*P[e],t[y+e].y>S?t[y+e].y=S:t[y+e].y<-S&&(t[y+e].y=-S));P.fill(0,0,f)}y+=f,w-=f,f=Math.min(w,1024)}return 1}function Ji(e,t,r,s,n){return(0,i.g)(0),0}function $i(e,t,r,s,n){(0,i.g)(null===s),(0,i.g)(t<2147483647);let a,o=Array.isArray(r);a=o?(0,l.U)(r):r;let m=wa.geogToGeog(e,t,a,null,n);return o&&(0,l.V)(a,r),m}function en(e,t,r,s,i,n){let a=0,o=!0,l=0;for(let n=0;n<s;++n)t[n].isNAN()?o||=(a|=Qi(e,t.slice(l,n-l),r?r.slice(l,n-l):null,n-l,i),l=n,!0):o&&=(l=n,!1);return o||(a|=Qi(e,0===l?t:t.slice(l),r?0===l?r:r.slice(l):null,s-l,i)),0!==a}function tn(e,t,r,s){Mi(e,t,r,s)}function rn(e,t,r,s){zi(e,t,r,s);let i=new n.Envelope2D;i.setFromPoints(r,s);let a=e.getOneDegreeGCSUnit(),o=360*a,l=180*a;if(i.width()>l){for(let e=0;e<s;e++)for(;r[e].x<t;)r[e].x+=o;if(i.setFromPoints(r,s),i.xmax>l+t)for(let e=0;e<s;e++)r[e].x-=o}}function sn(e,t,r,s,i){let n=(0,l.m)(l.P,3),a=0,o=!1,m=!1,h=s.isDegenerateToLine();h?(n[0].assign(s.getStartXY()),n[1].assign(s.getEndXY()),n[2].setCoords(0,0),a=2):s.isClosed()&&s.isMajor()?(o=!0,m=!s.isClockwise(),n[0].assign(s.getStartXY()),n[1].assign(s.getCenter()),n[2].setCoords(0,0),a=2):(n[0].assign(s.getStartXY()),n[1].assign(s.getEndXY()),n[2].assign(s.getInteriorPoint()),a=3),e?tn(t,n,a,i):rn(t,r,n,a),h?s.constructLineCircularArc(n[0],n[1]):o?s.constructCircleCenterAndPoint(n[1],n[0],m):s.constructCircularArcThreePoint(n[0],n[1],n[2])}function nn(e,t,r){let s=(0,a.a4)(e),i=(0,a.a4)(t),n=(0,a.a3)(s,i),o=(0,a.a3)(s,(0,a.a4)(r));return 0===o||n>0&&o>0&&o<=n||n<0&&o<0&&o>=n}function an(e,t,r,n,a){let o={stack:[],error:void 0,hasError:!1};try{let m=r.clone(),h=n.clone();if(2===a){let e=[0,0];return V(0,t,m,h,0,e),e[0]}if(m.y>h.y){let e=new l.P;e.assign(m),m.assign(h),h.assign(e)}let g=(0,s.mS)(o,new Sa,!1),u=(0,s.mS)(o,new Sa,!1),_=(0,s.mS)(o,new Sa,!1),p=new l.E;if(p.setCoords(m.y,h.y),!p.containsCoordinate(0)||Math.abs(m.x-h.x)>=Math.PI)return NaN;if(m.x===h.x)return m.x;Da.geodeticDistance(e,t,m.x,m.y,h.x,h.y,u,g,null,a);let d=u.val,c=0,f=1,x=m.clone();for(;d*(f-c)>1e-12*e;){let r=.5*(c+f);if(Da.geodeticCoordinate(e,t,m.x,m.y,d*r,g.val,u,_,a),x.x=u.val,x.y=_.val,p.setCoords(m.y,x.y),0===x.y)return x.x;if(p.containsCoordinate(0))f=r;else{if(p.setCoords(h.y,x.y),!p.containsCoordinate(0))return(0,i.g)(!1),NaN;c=r}}return x.x}catch(e){o.error=e,o.hasError=!0}finally{(0,s.hk)(o)}}function on(e,t,r,s){let i=new l.E;i.setCoords(t,r);let n=s.width(),a=Math.floor((e-t)/n)*n+e,o=i.getCenter();for(;Math.abs(a-o)>Math.abs(a+n-o);)a+=n;return a}class ln extends u.G{m_geometryDeque=[];m_index=-1;constructor(){super()}next(){if(this.m_geometryDeque.length>0){this.m_index++;let e=this.m_geometryDeque[0];return this.m_geometryDeque.shift(),e}return null}getGeometryID(){return this.m_index}tick(e){this.m_geometryDeque.push(e)}tock(){return!0}getRank(){return 1}}class mn{m_csType;m_PCSHorizon=null;m_GCSHorizon=null;m_GCSSplitLines=null;m_bGCSHorisonIsInclusive=!1;m_oneMeterPCS=0;m_oneDegreeGCS=0;m_gcsUnitFactor=0;m_northPole=l.P.getNAN();m_southPole=l.P.getNAN();m_polesUpdated=0;m_domain=n.Envelope2D.constructEmpty();m_primeMeridian=NaN;m_geogToProjFactor=1;m_geogToProjOffset=0;m_geogToProjFactorsUpdated=0;m_oneMillimeter=0;m_centralMeridian=0;m_pPCSInfoNoDomain=null;m_WKID;m_oldWKID=-1973;m_vcsWKID=-1;m_bIsPannable=!1;m_bCached=!1;m_pannableExtent=n.Envelope2D.constructEmpty();m_pannableExtentGCS=n.Envelope2D.constructEmpty();m_unit;m_areaOfUse=null;m_canonicalWkt="";m_hashCode;m_peCoordSys;constructor(e,t=!0){this.m_peCoordSys=e,this.m_WKID=Ia.getCode(e),this.m_WKID<=0?(this.m_WKID=0,this.m_canonicalWkt=ci(e,0,!0),this.m_hashCode=(0,l.L)(this.m_canonicalWkt)):this.m_hashCode=(0,l.Q)(this.m_WKID);let r=this.m_peCoordSys.getType();this.m_csType=r===va.PE_TYPE_PROJCS?2:1,(0,i.g)(r===va.PE_TYPE_PROJCS||r===va.PE_TYPE_GEOGCS),r===va.PE_TYPE_PROJCS&&(e.loadConstants()||(0,i.a)("PeProjcs.loadConstants failed"));let s=r===va.PE_TYPE_GEOGCS?this.m_peCoordSys:this.m_peCoordSys.getGeogcs();r!==va.PE_TYPE_GEOGCS&&Ia.getCode(s),this.m_unit=function(e){let t=Ca(null);return e.getType()===va.PE_TYPE_PROJCS||e.getType()===va.PE_TYPE_GEOGCS?t.reset(e.getUnit()):(0,i.a)("PE_coord_sys"),t.get()||(0,i.d)("cannot create units from coord sys"),function(e){return e.getType()===va.PE_TYPE_LINUNIT?new kn(e):e.getType()===va.PE_TYPE_ANGUNIT?new x(e):void(0,i.a)("peUnit")}(t.get())}(e),this.m_primeMeridian=s.getPrimem().getLongitude();{let e=s.getUnit().getUnitFactor();this.m_gcsUnitFactor=e;let t=Math.PI/(180*e);Math.abs(t-1)<1e-10&&(t=1),this.m_oneDegreeGCS=t}if(r===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=e.getUnit().getUnitFactor();this.m_oneMeterPCS=1/t,this.m_oneMillimeter=.001/t,this.m_pPCSInfoNoDomain=ba.generate(e,ba.PE_PCSINFO_OPTION_NONE),this.m_pPCSInfoNoDomain||(0,i.d)("cannot create pcs info"),this.m_bIsPannable=this.m_pPCSInfoNoDomain.isPannableRectangle(),this.m_centralMeridian=this.m_pPCSInfoNoDomain.getCentralMeridian()}else{this.m_bIsPannable=!0,this.m_polesUpdated=1,this.m_oneMeterPCS=0;let e=1/s.getUnit().getUnitFactor(),t=s.getDatum().getSpheroid().getAxis();this.m_oneMillimeter=.001/t*e,this.m_centralMeridian=0}this.m_bIsPannable&&(this.updateGCSHorizon(),this.updatePCSHorizon(),this.updatePoles(),this.updateDomain(),this.updatePannableExtent(),this.updatePannableExtentGCS())}[Symbol.dispose](){}getHashCode(){return this.m_hashCode}getPCSHorizonPannable(){return this.m_PCSHorizon}getGCSHorizonPannable(){return this.m_GCSHorizon}getPCSInfo(){return(0,i.g)(this.m_pPCSInfoNoDomain),this.m_pPCSInfoNoDomain}getCentralMeridian(){return this.m_centralMeridian}updateGCSHorizon(){if(this.m_peCoordSys.getType()!==va.PE_TYPE_PROJCS)return;let e=!0,t=this.m_peCoordSys,r=t.getGeogcs(),s=t.horizonGcsGenerate();if(!s)return;(0,i.g)(s.length>0);let g,u=s[0].getNump(),_=s[0].getKind();e=s[0].getInclusive()>0;let p,d=this.getOneDegreeGCSUnit(),c=90*d,f=360*d,x=370*d,P=180*d*va.PE_HORIZON_DELTA/Math.PI,y=n.Envelope2D.constructEmpty(),E=null;if(u>1)for(let e=1;e<u;e++)if(s[e].getKind()===va.PE_HORIZON_LINE){E||=new a.a;let t=s[e].getCoord();E.startPathCoords(t[0][0],t[0][1]),E.lineToCoords(t[1][0],t[1][1])}if(_===va.PE_HORIZON_RECT){let t=s[0].getCoord();if(y.setFromPoints([new l.P(t[0][0],t[0][1]),new l.P(t[1][0],t[1][1])],2),Math.abs(y.ymax-c)<1e-7*P&&(y.ymax=c),Math.abs(y.ymin+c)<1e-7*P&&(y.ymin=-c),y.width()>x){let e=-400*d,t=e+5*f;y.setCoords({xmin:e,ymin:y.ymin,xmax:t,ymax:y.ymax})}let r=new o.E({env2D:y});this.m_GCSHorizon||(this.m_GCSHorizon=r,this.m_bGCSHorisonIsInclusive=e)}else{let t=this.getPCSInfo().isGcsHorizonMultiOverlap(),o=Zn(r,null,0,1),_=[],x=new l.E;for(let e=0;e<u;e++){if(s[e].getKind()!==va.PE_HORIZON_POLY)continue;g=s[e].getSize();let t=s[e].getCoord(),r=n.Envelope2D.constructEmpty();r.setFromPoints((0,l.R)(t),g),_.push(new l.E(r.xmin,r.xmax)),r.width(),x.merge(_.at(-1))}let P=!1,y=new l.E;x.width()>f&&_.length>1?(y.vmin=this.getCentralMeridian()-f,y.vmax=y.vmin+2*f,P=!0,t=!0):(y.vmin=x.vmin,y.vmax=y.vmin+f);let S=e=>{let t=0;for(;_[e].vmin+t<y.vmin;)t+=f;for(;_[e].vmax+t-f>y.vmin;)t-=f;return t},C=new a.P;if(t){let e=new ln,t=(new gi).executeMany(e,o,null);for(let r=0;r<u;r++){if(s[r].getKind()!==va.PE_HORIZON_POLY)continue;g=s[r].getSize();let i=s[r].getCoord();p=s[r].getInclusive()>0;let n=new a.P;if(n.addPathPoint2D((0,l.R)(i),g-1,!0),P){let t=S(r),s=_[r].clone();s.move(t);let i=t,a=new m.T;do{a.setShiftCoords(i,0);let t=n.clone();t.applyTransformation(a),e.tick(t),e.tock(),i+=f,s.move(f)}while(s.vmin<y.vmax)}else e.tick(n),t.tock()}C=t.next()}else{C=new a.P;for(let t=0;t<u;t++){if(s[t].getKind()!==va.PE_HORIZON_POLY)continue;g=s[t].getSize();let r=s[t].getCoord();if(p=s[t].getInclusive()>0,(0,i.g)(p===e),P){let e=new a.P;e.addPathPoint2D((0,l.R)(r),g-1,!0);let s=S(t),i=_[t].clone();i.move(s);let n=s,o=new m.T;do{if(0!==n){o.setShiftCoords(n,0);let t=new a.P({copy:e});t.applyTransformation(o),C.addPath(t,0,!0)}else C.addPath(e,0,!0);n+=f,i.move(f)}while(i.vmin<y.vmax)}else C.addPathPoint2D((0,l.R)(r),g-1,!0)}}P&&(C=(new h.O).execute(C,new n.Envelope2D(y.vmin,-c-d,y.vmax,c+d),o,null)),e?(new ns).accelerateGeometry(C,o,1):(new mi).accelerateGeometry(C,o,1),(new pi).accelerateGeometry(C,o,1),null===this.m_GCSHorizon&&(this.m_GCSHorizon=C,this.m_bGCSHorisonIsInclusive=e,this.m_GCSSplitLines=E)}}updateAreaOfUse(){return null}updatePCSHorizon(){if(this.m_peCoordSys.getType()!==va.PE_TYPE_PROJCS)return;let e,t=this.m_peCoordSys.horizonPcsGenerate();if(!t)return;this.getPCSInfo();let r=t[0].getKind();t[0].getInclusive();let s=n.Envelope2D.constructEmpty(),m=t[0].getNump(),h=!1;if(r===va.PE_HORIZON_RECT){let r=t[0].getCoord();s.setFromPoints((0,l.R)(r),2),e=new o.E({env2D:s})}else{let r=-1;for(let e=0;e<m;e++)t[e].getKind()===va.PE_HORIZON_POLY&&(r=e);(0,i.g)(r>=0);let s=t[r].getSize()-1,n=t[r].getCoord(),o=new a.P;e=o,o.addPathPoint2D((0,l.R)(n),s,!0),h=!0}if(this.getPCSInfo().isDensificationNeeded()){(0,i.g)(r!==va.PE_HORIZON_RECT);let t=1e5*this.getOneMeterPCSUnit();e=(new g.O).execute(e,t,0,0,null)}if(h){{let t=new o.E;e.queryEnvelope(t),e.calculateArea2D(),e.calculateLength2D(),e.getExteriorRingCount()}(new ns).accelerateGeometry(e,null,1)}null===this.m_PCSHorizon&&(this.m_PCSHorizon=e)}updatePannableExtent(){let e=this.m_peCoordSys.getType();if(e===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.getPCSInfo().getCentralMeridian(),r=e.getGeogcs();r||(0,i.d)("");let s=[t+1/r.getUnit().getUnitFactor()*Math.PI,0];Ga.geogToProj(e,1,s);let a=s[0],o=e.getParameters()[va.PE_PARM_X0].getValue(),l=this.getPCSHorizon(),m=n.Envelope2D.constructEmpty();l.queryEnvelope(m);let h=Math.abs(a-o),g=h+o,u=-1*h+o,_=m.ymax,p=m.ymin;this.m_pannableExtent.setCoords({xmin:u,ymin:p,xmax:g,ymax:_})}else if(e===va.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtent.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,i.d)("")}updatePannableExtentGCS(){let e=this.m_peCoordSys.getType();if(e===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.m_centralMeridian,r=e.getGeogcs();r||(0,i.d)("");let s=1/r.getUnit().getUnitFactor()*Math.PI,a=this.getGCSHorizon(),o=n.Envelope2D.constructEmpty();a.queryEnvelope(o),this.m_pannableExtentGCS.setCoords({xmin:t-s,ymin:o.ymin,xmax:t+s,ymax:o.ymax})}else if(e===va.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtentGCS.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,i.d)("")}updateDomain(){if(1===this.m_csType){let e=400*this.getOneDegreeGCSUnit();this.m_domain=n.Envelope2D.construct(-e,-e,e,e)}else{(0,i.g)(2===this.m_csType);let e=ba.generate(this.m_peCoordSys,ba.PE_PCSINFO_OPTION_DOMAIN);e||(0,i.d)("generate pcs info failed");let t=new n.Envelope2D(e.getDomainMinx(),e.getDomainMiny(),e.getDomainMaxx(),e.getDomainMaxy());this.m_domain.isEmpty()&&this.m_domain.setCoords({env2D:t})}}updatePoles(){if(this.m_peCoordSys.getType()===va.PE_TYPE_PROJCS){let e=90*this.getOneDegreeGCSUnit(),t=[[0,e],[0,-e]];Ga.geogToProj(this.m_peCoordSys,2,t);let r=this.getPCSInfo().getNorthPoleLocation()!==ba.PE_POLE_OUTSIDE_BOUNDARY,s=this.getPCSInfo().getSouthPoleLocation()!==ba.PE_POLE_OUTSIDE_BOUNDARY;this.m_polesUpdated||=(r&&this.m_northPole.setCoords(t[0][0],t[0][1]),s&&this.m_southPole.setCoords(t[1][0],t[1][1]),1)}else this.m_polesUpdated=1}updateGeogToProjFactors(){if(this.m_peCoordSys.getType()===va.PE_TYPE_PROJCS){let e=this.getOneDegreeGCSUnit(),t=this.m_pPCSInfoNoDomain.getCentralMeridian(),r=[0,0,0,0];r[0]=t,r[1]=0,r[2]=t+e,r[3]=0;let s=Ga.geogToProj(this.m_peCoordSys,2,r);(0,i.g)(2===s);let n=(r[2]-r[0])/e,a=r[0];0===this.m_geogToProjFactorsUpdated&&(this.m_geogToProjFactor=n,this.m_geogToProjOffset=a,this.m_geogToProjFactorsUpdated=1)}else this.m_geogToProjFactorsUpdated=1}getOneMeterPCSUnit(){return this.m_oneMeterPCS}getOneDegreeGCSUnit(){return this.m_oneDegreeGCS}getGcsUnitFactor(){return this.m_gcsUnitFactor}getUnitsPerMillimeter(){return this.m_oneMillimeter}getGCSSplitLines(){return this.m_bIsPannable?null:(this.m_GCSHorizon||this.updateGCSHorizon(),this.m_GCSSplitLines)}getGCSHorizon(){return this.m_bIsPannable?this.getGCSHorizonPannable():(null===this.m_GCSHorizon&&this.updateGCSHorizon(),this.m_GCSHorizon)}getGCSHorisonIsInclusive(){return this.m_bIsPannable||this.getGCSHorizon(),this.m_bGCSHorisonIsInclusive}getPCSHorizon(){return this.m_bIsPannable?this.getPCSHorizonPannable():(null===this.m_PCSHorizon&&this.updatePCSHorizon(),this.m_PCSHorizon)}getPole(e){return this.m_bIsPannable||0!==this.m_polesUpdated||this.updatePoles(),e?this.m_southPole:this.m_northPole}getGeogToProjFactors(){return 0===this.m_geogToProjFactorsUpdated&&this.updateGeogToProjFactors(),(0,l.o)(this.m_geogToProjFactor,this.m_geogToProjOffset)}getDomainXY(){if(this.m_bIsPannable)return this.m_domain.clone();let e=!1;return e=this.m_domain.isEmpty(),e&&this.updateDomain(),this.m_domain.clone()}getPrimeMeridian(){return this.m_primeMeridian}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;if(e<0){if(e=0,this.m_WKID>0){let t=[0];(function(e,t,r,s){return t<=0?(r[0]=0,s[0]=0,!1):(r[0]=t,s[0]=t,!0)})(this.m_peCoordSys.getType(),this.m_WKID,t,[0])||(0,i.d)("query_code_change"),e=t[0]}this.m_oldWKID=e}return e}isCustomWkid(){return!1}isPannable(){return this.m_bIsPannable}getPannableExtent(){return this.m_pannableExtent.clone()}getPannableExtentGCS(){return this.m_pannableExtentGCS.clone()}getAreaOfUse(){return null===this.m_areaOfUse?this.updateAreaOfUse():this.m_areaOfUse}getVcsCode(){return 0}saveMemory(){}getCSType(){return this.m_csType}getUnit(){return this.m_unit}setCached(){this.m_bCached=!0}getCached(){return this.m_bCached}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}class hn{m_oneMeter=0;m_WKID=-1;m_oldWKID=-1;m_canonicalWkt="not yet implemented";m_model=0;m_unit=new kn;m_cached=!1;m_peVertcs;static st_DeadWeedCount;constructor(e,t=!0){}setCached(e=!0){this.m_cached=e}getCached(){return this.m_cached}getOneMeterUnit(){return 0}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;return e<0&&(e=0,this.m_WKID>0&&(e=this.m_WKID),this.m_oldWKID=e),e}getModel(){return 0}isCustomWkid(){return!1}getVerticalUnit(){return this.m_unit}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}function gn(e,t,r){return un(e,t,n.Envelope2D.constructEmpty())}function un(e,t,r,s){return function(e,t,r,s){return Rn()||(0,i.e)("cannot create projection transformation"),t.hasVCS()&&r.hasVCS()?((0,i.g)(0),{}):function(e,t,r){(!e||!t)&&(0,i.a)("!inputSR || !outputSR");let s=e.getLatestID(),a=t.getLatestID();if(3857===s&&4326===a){if(e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return Tn()}else if(4326===s&&3857===a&&e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return wn||=Tn().getInverse(),wn;let o=n.Envelope2D.constructEmpty();o.setCoords({env2D:r});let l=e.getCoordinateSystemType(),m=t.getCoordinateSystemType();if(0===l||0===m)return cn(e,t);let h=e.getGCS().getLatestID(),g=t.getGCS().getLatestID();if(h>0&&h===g)return cn(e,t);let u=new In(e,t,r);{let e=function(e){if(vn.has(e.getHashCode()))return vn.get(e.getHashCode())}(u);if(e)return e}let _=pn(0,e,t,o,1,!0);return function(e,t){return vn.set(e.getHashCode(),t),t}(u,cn(e,t,_.length?_[0]:void 0))}(t,r,s)}(0,e,t,r)}function _n(e,t,r,s){return function(e,t,r,s,n){return Rn()||(0,i.e)("cannot create projection transformation"),new Pn(2,t,r,s,n,void 0)}(0,e,t,r,s)}function pn(e,t,r,n,a,m=!1){if((!t||!r)&&(0,i.a)(""),Rn()||(0,i.e)("cannot obtain geotransformation list"),1===e&&t.hasVCS()&&r.hasVCS())return(0,i.t)("hv xform not impl"),[];{let e=function(e,t,r,n,a){let m=e.getGCS(),h=t.getGCS(),g=m.getPECoordSys(),u=h.getPECoordSys(),_=null;if(!r.isEmpty()){let t=r.clone();if(!t.isEmpty()&&2===e.getCoordinateSystemType()){let r=new o.E({env2D:t}),s=_n(e,m,null);r=(new ps).execute(r,s,null),r.queryEnvelope(t)}if(!t.isEmpty()){let e=g.getPrimem().getLongitude(),r=g.getUnit().getUnitFactor();_=new ka(t.xmin,t.ymin,t.xmax,t.ymax,e,r)}}let p=n;p>=(0,l.i)()&&(p=0);let d=[],c=Ta.PE_GTLIST_OPTS_COMMON;a||(c&=~Ta.PE_GTLIST_OPTS_USABLE);for(let e=0;e<2;e++){let e={stack:[],error:void 0,hasError:!1};try{d.length=0;let t=Ta.getGTlist(g,u,2,c,_,p);if(null==t||0===t.length)break;(0,s.mS)(e,{[Symbol.dispose](){Na.destroy(t)}},!1);let r=!1;for(let e of t){let t=La(e);if((0,i.g)(t),a&&t.referencesMissingData())r=!0,p=0;else if(d.push(t),d.length===n)break}if(!r)break}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}return _&&_.destroy(),d}(t,r,n,a,m),h=[];for(let t of e)h.push(t);return h}}function dn(){return{centralMeridianOfOutputGCS:NaN,densificationStep:NaN,clipWithInputHorizon:!0,clipWithOutputHorizon:!0,legacyHorizonClipping:!1,normalizeResultGeometry:!1,equals(e){return(0,l.G)(this.centralMeridianOfOutputGCS,e.centralMeridianOfOutputGCS)&&(0,l.G)(this.densificationStep,e.densificationStep)&&this.clipWithInputHorizon===e.clipWithInputHorizon&&this.clipWithOutputHorizon===e.clipWithOutputHorizon&&this.legacyHorizonClipping===e.legacyHorizonClipping&&this.normalizeResultGeometry===e.normalizeResultGeometry}}}function cn(e,t,r,s,i){return new Pn(1,e,t,r,s,i)}function fn(){return{m_extendedParams:dn(),m_extendedParamsInternal:{flagsMask:0,setFlag(e,t){t?this.flagsMask|=e:this.flagsMask&=~e},hasFlag(e){return 0!==(this.flagsMask&e)}}}}function xn(){return fn()}class Pn{m_inputSR;m_outputSR;m_datumTran=null;m_params;m_bIdentity=!0;m_bIdentityGeogToGeog=!0;m_bVertical=!1;m_bNormalize=!1;m_projector;constructor(e,t,r,s,n,a){let o,l;(!t||!r)&&(0,i.a)("!inputSR || !outputSR"),s&&0===s.getType()&&(s.m_bReadOnly=!0),this.m_bNormalize=!1,1!==e&&(o=t.getVCS(),l=r.getVCS(),this.m_bVertical=null!=o&&null!=l),this.m_inputSR=t,this.m_outputSR=r,this.m_bIdentity=!1,this.m_bIdentityGeogToGeog=!1,(0,i.g)(!this.m_params),n&&(this.m_params=fn(),this.m_params.m_extendedParams=n),a&&(this.m_params||=fn(),this.m_params.m_extendedParamsInternal=a);let m=!1,h=null!=s,g=t.getCoordinateSystemType(),u=r.getCoordinateSystemType();if(r.isPannable()&&0!==g&&n){let e=n.centralMeridianOfOutputGCS;if(!Number.isNaN(e)&&r.isPannable()){let t=r.getPannableExtent(),s=t.getCenterX();if(s!==e){let r=Math.ceil(t.width());e+r!==s+r&&(m=!0)}}}let _=n&&n.normalizeResultGeometry;if(t.equals(r))return this.m_bIdentity=!m,this.m_bIdentityGeogToGeog=!0,void this.updateProjector();let p=!h&&t.equalForProjection(r,this.m_bVertical);this.m_bIdentity=p&&!m,this.m_bIdentity?this.m_bIdentityGeogToGeog=!0:0!==g&&0!==u&&(_&&this.m_outputSR.isPannable()&&(this.m_bNormalize=_),this.m_datumTran=s||null,this.m_bIdentityGeogToGeog=(!this.m_datumTran||0===this.m_datumTran.count())&&this.m_inputSR.getGCS().equalForProjection(this.m_outputSR.getGCS(),this.m_bVertical)),this.updateProjector()}getInputSR(){return this.m_inputSR}getOutputSR(){return this.m_outputSR}getDatumTransformation(){return this.m_datumTran}getInverse(){let e=new Pn(1,this.m_outputSR,this.m_inputSR,this.m_datumTran?.createInverse());return e.m_bIdentity=this.m_bIdentity,e.m_bVertical=this.m_bVertical,e.m_bIdentityGeogToGeog=this.m_bIdentityGeogToGeog,e.updateProjector(),e}isIdentity(){return this.m_bIdentity}getExtendedParams(){return this.m_params?this.m_params.m_extendedParams:xn().m_extendedParams}equals(e){return(0,i.g)(0),!1}isVertical(){return this.m_bVertical}isMatchingTransformation(e,t){return(0,i.g)(0),!1}getGeographicTransformations(){return this.m_datumTran}getExtendedParamsImpl(){return this.m_params?this.m_params.m_extendedParams:xn().m_extendedParams}getExtendedParamsInternal(){return this.m_params?this.m_params.m_extendedParamsInternal:xn().m_extendedParamsInternal}isIdentityGeogToGeog(){return this.m_bIdentityGeogToGeog}normalizeOutput(){return this.m_bNormalize}updateProjector(){this.m_projector=new gs(this)}}const yn=new Map,En=new Map,Sn=new Map;function Cn(e){let t=e.getCode();if(t>0)return Vn(t)||Dn(Ia.coordsys(t));let r=e.getName();if(En.has(r)){let t=En.get(r);if(t&&t.deref()){let r=t.deref();if(r.m_peCoordSys.isEqual(e))return r}}return t=Ia.getCode(e),Dn(t>0?Ia.coordsys(t):e)}class In{m_inputSR;m_outputSR;m_env;m_hashCode=-1;constructor(e,t,r){e&&(this.m_inputSR=e,this.m_outputSR=t,this.m_env=r.clone(),this.m_hashCode=this.m_inputSR.getHashCode(),this.m_hashCode=(0,l.B)(this.m_hashCode,this.m_outputSR.getHashCode()),this.m_env.isEmpty()||(this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.xmin)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.xmax)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.ymin)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.ymax))))}getHashCode(){return this.m_hashCode}equals(e){return!(this.m_inputSR&&!e.m_inputSR||!this.m_inputSR&&e.m_inputSR)&&this.m_env.equals(e.m_env)&&this.m_inputSR.equals(e.m_inputSR)&&this.m_outputSR.equals(e.m_outputSR)}clear(){this.m_inputSR=void 0,this.m_outputSR=void 0,this.m_hashCode=-1,this.m_env=void 0}}const vn=new Map;let Gn,wn,bn;function Tn(){return Gn||=_n(ha(),ua()),Gn}const Nn=new Map;function Dn(e){let t=Ca(e),r=e.getCode();if(r>0){let e=Vn(r);if(e)return e}let s=e.getName(),i=En.get(s);if(i){let t=i.deref();if(t&&t.m_peCoordSys.isEqual(e))return t}let n=new mn(t.release());if(r>0)return n.setCached(),yn.set(r,new WeakRef(n)),En.set(s,new WeakRef(n)),n;let a=ci(e,0,!1);if(i=Sn.get(a),i){let e=i.deref();if(e)return e}return n.setCached(),Sn.set(a,new WeakRef(n)),n}function Vn(e){let t=yn.get(e);if(t)return t.deref()}class kn extends d{constructor(e){return void 0===e?(super(),this.m_wkid=9001,void(this.m_peUnit=null)):"number"==typeof e?(super(),this.m_factor=e,void(this.m_wkid=0)):(super(e),void(e||(this.m_factor=1,this.m_wkid=9001,this.m_peUnit=(bn||=Ia.unit(9001),bn))))}getUnitType(){return 0}convertFromMeters(e){return e/this.getUnitToBaseFactor()}convertToMeters(e){return e*this.getUnitToBaseFactor()}}const Fn="0123456789bcdefghjkmnpqrstuvwxyz".split("");function Hn(e,t,r,s,n){(0,i.g)(s>>5<n.length);let a=t,o=r;for(let t=s;t>=0;t-=2){let r=31&t,s=.5*(o+a);e>=s?(n[t>>5]|=1<<r,a=s):o=s}}let An=new Set;const Mn=2147483645n,Un=9007199254740990n,qn="operation is not supported for unknown coordinate systems";var Bn;function On(){return{majorSemiAxis:0,e2:0,minorSemiAxis:0,flattening:0,isSphere(){return 0===this.e2}}}function Yn(e){if(Ia)return;!function(e){let t=e;Ia=t.PeFactory,(0,i.g)(Ia),ka=t.PeGCSExtent,(0,i.g)(ka),Da=t.PeLineType,(0,i.g)(Da),Va=t.PeMath,(0,i.g)(Va),Sa=t.PeDouble,(0,i.g)(Sa),va=t.PeDefs,(0,i.g)(va),Ga=t.PeCSTransformations,(0,i.g)(Ga),wa=t.PeGTTransformations,(0,i.g)(wa),ba=t.PePCSInfo,(0,i.g)(ba),Ta=t.PeGTlistExtended,(0,i.g)(Ta),Ia.initialize(),Na=t.PeGTlistExtendedEntry,(0,i.g)(Na),va.PE_TYPE_ANGUNIT=512,va.PE_STR_AUTH_ALL=2,ba.PE_POLE_LINE_STRAIGHT=2,ba.PE_POLE_LINE_CURVED=3,va.PE_PARM_LAM0=2,va.PE_PARM_PHI0=6,va.PE_PRJ_AZIMUTHAL_EQUIDISTANT=43032,va.PE_PRJ_LAMBERT_AZIMUTHAL_EQAREA=43033,va.PE_PRJ_ALBERS=43007,va.PE_PRJ_CYLINDRICAL_EQAREA=43034,va.PE_TYPE_VERTCS=8,va.PE_LINETYPE_GEODESIC=0,va.PE_LINETYPE_LOXODROME=1,va.PE_LINETYPE_GREAT_ELLIPTIC=2,va.PE_LINETYPE_NORMAL_SECTION=3,Ta.PE_GTLIST_OPTS_USABLE=1,Fa=null}(e);let t=An;An=null,t.forEach(e=>{let t=e.deref();t&&t.attachToPe()})}function Xn(e){!function(e){Fa=e,(0,i.g)(Fa)}(e)}function Rn(){return!!Ia}function Ln(){return!!Fa}function zn(){return!!Ia||!!Fa}function Wn(e,t,r){return(0,i.g)(zn()),fa(e,void 0===t?0:t,0,!1)}function jn(e,t){(0,i.g)(zn());let r,s=new la;return Rn()?(r=function(e){let t=Ca(Ia.fromString(va.PE_TYPE_COORDSYS,e));return t.get()||(0,i.z)(e),Cn(t.release())}(e),s.setHorzProj_(r),s.m_vertcs=null,s.m_userWKID=r.getLatestID()):(r=Ha(e),s.m_unit=r.isPCS?new kn(r.metersOrRadiansPerUnit):new x(r.metersOrRadiansPerUnit)),pa(s.m_precisionDescriptor,r,null,1),s.m_bDefaultDescriptor=!0,s.m_userWKT=e,s.calculateHashCode(),s.initDbgName(),s}function Zn(e,t,r,s,n=!0){let a=null;return t&&((0,i.g)(0),a={}),function(e,t,r,s,n){e||(0,i.a)("!PE_coord_sys");let a,o=new la;return a=n?Cn(e):new mn(e,!1),pa(o.m_precisionDescriptor,a,t,s),o.m_bDefaultDescriptor=!0,o.setHorzProj_(a),o.m_vertcs=t,o.m_userWKID=a.getLatestID(),o.calculateHashCode(),o.initDbgName(),o}(e,a,0,s,n)}function Kn(e,t,r=!1){3===e.getCoordinateSystemType()&&(0,i.a)("image spatial reference cannot be altered");let s=new la,n=e;return s.m_peCoordSysVal=n.m_peCoordSysVal,s.m_vertcs=n.m_vertcs,s.m_unit=n.m_unit,s.m_precisionDescriptor.assign(t),s.m_localZToXYFactor=n.m_localZToXYFactor,(Number.isNaN(s.m_precisionDescriptor.m_falseX)||Number.isNaN(s.m_precisionDescriptor.m_falseY))&&(s.m_precisionDescriptor.m_falseX=n.m_precisionDescriptor.m_falseX,s.m_precisionDescriptor.m_falseY=n.m_precisionDescriptor.m_falseY),s.m_precisionDescriptor.snapPrecision(),s.m_precisionDescriptor.fixTolerance(),s.m_userWKID=n.m_userWKID,s.m_bDefaultDescriptor=!!s.m_precisionDescriptor.equals(n.m_precisionDescriptor)&&n.m_bDefaultDescriptor,r&&(s.m_bDefaultDescriptor=!0),s.calculateHashCode(),s.initDbgName(),s}function Qn(e,t,r){void 0===t&&(t=1),(t<=0||!Number.isFinite(t))&&(0,i.a)(""),!e&&1!==t&&(0,i.a)("null Unit has to have z_to_xy_factor equal to 1");let s=new la;s.m_unit=e;let n=e||new kn(9001);return ca(s.m_precisionDescriptor,n,null,1),s.m_bDefaultDescriptor=!0,Number.isNaN(s.m_precisionDescriptor.m_falseX)&&(0,i.a)("NAN false X/Y are not allowed here"),s.m_localZToXYFactor=t,s.calculateHashCode(),s.initDbgName(),s}function Jn(e){let t=e.getCoordinateSystemType();return 1===t?e:(3===t&&(0,i.g)(0),e.getGCS())}function $n(e){return(0,i.g)(zn()),Ln()?function(e){return(0,i.g)(Ln()),!!Fa(e).isPCS||function(e){return Ia&&(0,i.q)("pe has been loaded. no-pe methods should not be used at this point."),Pa||Ma(),Pa.has(e)}(e)}(e):function(e){if(Nn.has(e))return Nn.get(e);{let t=function(e){return null!==Ca(Ia.coordsys(e)).get()}(e);return Nn.set(e,t),t}}(e)}function ea(e){if(Rn()){let t={stack:[],error:void 0,hasError:!1};try{return null!==(0,s.mS)(t,Ia.fromString(va.PE_TYPE_COORDSYS,e,!0),!1)}catch(e){t.error=e,t.hasError=!0}finally{(0,s.hk)(t)}}try{return Ha(e),!0}catch{}return!1}let ta;function ra(){return ta||=(()=>{let e=Math.trunc(Math.random()*(0,l.i)()),t=Date.now();return`|abba_000|${e.toString(16)}|${t.toString(16)}|`})(),ta}!function(e){e[e.utmDefault=0]="utmDefault",e[e.utmNorthSouth=1]="utmNorthSouth"}(Bn||={});let sa,ia,na,aa=0;function oa(e=""){let t=`${ra()}${aa++}`;return""!==e&&(t+=`|${e}`),t}class la{m_vertcs=null;m_peCoordSysVal=null;m_unit;m_userWKID=0;m_userWKT=null;m_geogSpatialReference=null;m_srToGcs=null;m_gcsToSr=null;m_defaultPrecisionSR=null;m_localZToXYFactor=-1;m_precisionDescriptor=new ma;m_hashCode=0;m_bDefaultDescriptor=!1;destroy(){(function(e){En.delete(e.m_peCoordSys.getName()),Sn.delete(ci(e.m_peCoordSys,0,!1))})(this.m_peCoordSysVal),1===this.getCoordinateSystemType()||2===this.getCoordinateSystemType()?this.getPECoordSys().destroy():(0,i.d)("SpatialReference.destroy")}constructor(){_a(this.m_precisionDescriptor),An&&An.add(new WeakRef(this))}attachToPe(){(this.m_userWKID>0?Wn(this.m_userWKID):jn(this.m_userWKT)).copyTo(this,!1)}copyTo(e,t=!0){(t||e.m_bDefaultDescriptor)&&(e.m_bDefaultDescriptor=this.m_bDefaultDescriptor,e.m_precisionDescriptor.assign(this.m_precisionDescriptor)),e.m_defaultPrecisionSR=null,e.m_gcsToSr=this.m_gcsToSr,e.m_geogSpatialReference=this.m_geogSpatialReference,e.m_hashCode=this.m_hashCode,e.m_localZToXYFactor=this.m_localZToXYFactor,e.m_peCoordSysVal=this.m_peCoordSysVal,e.m_srToGcs=this.m_srToGcs,e.m_userWKID=this.m_userWKID,e.m_userWKT=this.m_userWKT,e.m_vertcs=this.m_vertcs,e.m_unit=this.m_unit}getHashCode(){return this.m_hashCode}getHashCodeHorizontal(){let e=0;return e=this.m_peCoordSysVal?this.m_peCoordSysVal.getHashCode():this.m_unit?this.m_unit.getHashCode():305419891,e}updateTransform(e){if(1===this.getCoordinateSystemType())return _n(this,this,null);let t=e?this.m_srToGcs:this.m_gcsToSr;if(t)return t;let r=this.getGCS();t=e?_n(this,r,null):_n(r,this,null);let s=t;return(e?this.m_srToGcs:this.m_gcsToSr)||(e?this.m_srToGcs=s:this.m_gcsToSr=s,t)}getHashCodeVertical(){return this.m_vertcs?this.m_vertcs.getHashCode():0}calculateHashCode(){let e=this.getHashCodeHorizontal(),t=this.getHashCodeVertical(),r=this.m_precisionDescriptor.getHashCode();e=(0,l.B)(e,t),this.m_hashCode=(0,l.B)(e,r)}initDbgName(){}setHorzProj_(e){this.m_peCoordSysVal=e,this.m_unit=this.m_peCoordSysVal.getUnit()}getTolerance(e=0){return this.m_precisionDescriptor.getTolerance(e)}getResolution(e=0){return this.m_precisionDescriptor.getResolution(e)}getPECoordSys(){return this.m_peCoordSysVal?this.m_peCoordSysVal.m_peCoordSys:null}getPCSInfo(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPCSInfo()}getCentralMeridian(){return this.throwIfNotGCSOrPCS(),1===this.getCoordinateSystemType()?0:this.getPCSInfo().getCentralMeridian()}getCoordinateSystemType(){let e=this.getPECoordSys();if(e)switch(e.getType()){case va.PE_TYPE_GEOGCS:return 1;case va.PE_TYPE_PROJCS:return 2;default:return 0}else{if((this.m_userWKID>0||this.m_userWKT)&&this.m_unit instanceof kn)return 2;if(this.m_unit instanceof x)return 1}return 0}getID(){return this.m_userWKID}getLatestID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getLatestID():this.m_userWKID}getOldID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getOldID():this.m_userWKID}getVerticalID(){return(0,i.t)("vcs not implemented"),0}getLatestVerticalID(){return this.m_vertcs?this.m_vertcs.getLatestID():0}getOldVerticalID(){return(0,i.t)("vcs not implemented"),0}getPEVerticalCoordSys(){return null}getPole(e){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPole(e)}getText(){let e=this.getPECoordSys();return e?fi(e):this.m_userWKT??""}getTextExtended(e){let t=this.getPECoordSys();return t?this.getPEVerticalCoordSys()?(this.getPEVerticalCoordSys(),(0,i.g)(0),""):fi(t,e):this.m_userWKT??""}getText2(e=-1){let t=this.getPECoordSys();return t?function(e,t){(t>1||t<-1)&&(0,i.a)("verbosity");let r=va.PE_STR_FMT_WKT2;return-1!==t&&(r|=0===t?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL),e.toString(r)}(t,e):this.m_userWKT??""}getUnit(){return this.m_unit}getUnitsPerMillimeter(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getUnitsPerMillimeter():this.m_unit instanceof kn?.001/this.m_unit.getUnitToBaseFactor():this.m_unit instanceof x?.001/(Ha(this.m_userWKT??this.m_userWKID).semiMajor*this.m_unit.getUnitToBaseFactor()):((0,i.q)("sr object not in valid state"),0)}getAuthorityName(){return this.getPECoordSys()?((0,i.g)(0),""):""}getVerticalUnit(){return(0,i.t)("vcs not implemented"),{}}getVCS(){return this.m_vertcs}hasVCS(){return!1}getGCSHorisonIsInclusive(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSHorisonIsInclusive()}getGCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSHorizon()}getGCS(){let e,t=this.getCoordinateSystemType();if(0===t)(0,i.q)(qn);else{if(1===t)return this;3===t&&(0,i.q)("image cs not supported")}if(this.m_geogSpatialReference)return this.m_geogSpatialReference;if(this===ha()||this===ga())e=ua();else{(0,i.g)(this.m_peCoordSysVal);let t=this.m_peCoordSysVal.m_peCoordSys.getGeogcs();t||(0,i.d)(""),e=Zn(t,this.m_vertcs,0,this.m_precisionDescriptor.getPrecision(),this.m_peCoordSysVal.getCached())}return this.m_geogSpatialReference?e=this.m_geogSpatialReference:this.m_geogSpatialReference=e,e}getGCSSplitLines(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSSplitLines()}toGCS(e,t){if(0===e.length)return 0;e.length>t.length&&(0,i.a)("coordsSrc.size() > coordsDst.size()");let r=this.getCoordinateSystemType();if(0===r&&(0,i.q)(qn),1===r)return(0,l.F)(t,e,e.length),e.length;(0,i.g)(this.m_peCoordSysVal);let s=this.getSRToGCSTransform();return(new ps).transform(s,e,e.length,t)}toGeohash(e,t=8){let r=e.clone();r.scale(9102===this.getGCS().getUnit().getID()?1:this.getGCS().getUnit().getUnitToBaseFactor()/Math.PI*180),r.x<-180?(r.x=(0,l.p)(r.x,360),r.x<-180&&(r.x+=360)):r.x>180&&(r.x=(0,l.p)(r.x,360),r.x>180&&(r.x-=360)),r.y>90&&(r.y=90),r.y<-90&&(r.y=-90);let s=5*t,i=new Uint32Array(4);return Hn(r.x,-180,180,s-1,i),Hn(r.y,-90,90,s-2,i),function(e,t,r){let s=(0,l.d)(t,"R"),i=0,n=0;for(let r=0;r<t;r++){let a=e[i]>>n&31;if(n+=5,n>31){let t=37-n;a&=(1<<t)-1,n-=32,i++,a|=(e[i]&(1<<n)-1)<<t}let o=Fn[a];s[t-1-r]=o}return r>t?s.push(..."0".repeat(r-t)):r<t&&(s.length=r),s.join("")}(i,t,t)}isPannable(){let e=this.getCoordinateSystemType();return 0!==e&&3!==e&&((0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.isPannable())}getPannableExtent(){return this.isPannable()||(0,i.a)("!is_pannable"),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPannableExtent()}getPannableExtentInGCS(){return this.isPannable()||(0,i.a)("!is_pannable"),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPannableExtentGCS()}throwIfNotGCSOrPCS(){let e=this.getCoordinateSystemType();1!==e&&2!==e&&(0,i.a)("Not a GCS or PCS")}getDomainXY(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getDomainXY()}getFullWorldExtent(){return this.throwIfNotGCSOrPCS(),this.isPannable()?this.getPannableExtent():this.getDomainXY()}queryPrecisionDescriptor(e){if(e.assign(this.m_precisionDescriptor),Number.isNaN(e.m_falseX))if(Rn()||(0,i.e)("cannot query precision descriptor"),(0,i.g)(null!==this.m_peCoordSysVal),2!==this.m_precisionDescriptor.m_precision){let t=this.m_peCoordSysVal.getDomainXY();e.m_falseX=t.xmin,e.m_falseY=t.ymin}else e.m_falseX=-Number.MAX_VALUE,e.m_falseY=-Number.MAX_VALUE}queryPrecisionDescriptorWithoutFalseXY(e){e.assign(this.m_precisionDescriptor),e.m_falseX=NaN,e.m_falseY=NaN}queryDefaultPrecisionDescriptorWithoutFalseXY(e){if(this.m_bDefaultDescriptor)e.assign(this.m_precisionDescriptor);else{let t=this.getCoordinateSystemType();0===t?ca(e,this.m_unit,this.m_vertcs,this.m_precisionDescriptor.getPrecision()):3===t?(0,i.t)("image cs"):pa(e,this.m_peCoordSysVal,this.m_vertcs,this.m_precisionDescriptor.getPrecision())}e.m_falseX=NaN,e.m_falseY=NaN}horizontalEqual(e){return function(e,t){return e===t||null!==e&&null!==t&&e.m_csType===t.m_csType&&(0===e.m_WKID&&0===t.m_WKID?e.m_hashCode===t.m_hashCode&&e.m_canonicalWkt===t.m_canonicalWkt:e.m_WKID===t.m_WKID)}(this.m_peCoordSysVal,e.m_peCoordSysVal)}verticalEqual(e){return null!==this.m_vertcs==(null!==e.m_vertcs)&&(!this.m_vertcs||this.m_vertcs.equals(e.m_vertcs))}equals(e){let t=e;if(this===t)return!0;if(!this.horizontalEqual(t)||!this.verticalEqual(t)||!t.m_peCoordSysVal&&((0,i.g)(!this.m_peCoordSysVal),null!==this.m_unit!=(null!==t.m_unit)||this.m_unit&&!this.m_unit.equals(t.m_unit)||this.m_localZToXYFactor!==t.m_localZToXYFactor))return!1;if(!this.m_bDefaultDescriptor||!t.m_bDefaultDescriptor){if(this.m_peCoordSysVal){if(!this.m_precisionDescriptor.equalsWithoutFalseXY(t.m_precisionDescriptor))return!1;(0,i.g)(t.m_peCoordSysVal);let e=this.m_precisionDescriptor.m_falseX,r=this.m_precisionDescriptor.m_falseY;if(Number.isNaN(e)){let t=this.m_peCoordSysVal.getDomainXY();e=t.xmin,r=t.ymin}let s=t.m_precisionDescriptor.m_falseX,n=t.m_precisionDescriptor.m_falseY;if(Number.isNaN(s)){let e=t.m_peCoordSysVal.getDomainXY();s=e.xmin,n=e.ymin}return e===s&&r===n}return this.m_precisionDescriptor.equals(t.m_precisionDescriptor)}return!0}equalForProjection(e,t){if(this===e)return!0;let r=this.getCoordinateSystemType(),s=e.getCoordinateSystemType();if(0===r||0===s)return 0===r&&0===s?(!t||this.getZToXYFactor()===e.getZToXYFactor())&&(!this.getUnit()||!e.getUnit()||this.getUnit().equals(e.getUnit())):3!==r&&3!==s&&(null===this.getUnit()||null===e.getUnit()||(!t||this.getZToXYFactor()===e.getZToXYFactor())&&this.getUnit().equals(e.getUnit()));if(r!==s)return!1;if(3===r)return this.equals(e);if(function(e,t){return e===t||null!==e&&null!==t&&e.m_csType===t.m_csType&&(0===e.m_WKID&&0===t.m_WKID?1===e.m_csType?e.m_peCoordSys.isEqual(t.m_peCoordSys):e.m_peCoordSys===t.m_peCoordSys:e.m_WKID===t.m_WKID)}(this.m_peCoordSysVal,e.m_peCoordSysVal)){if(!t)return!0;if(null!==this.m_vertcs==(null!==e.m_vertcs))return!this.m_vertcs||this.m_vertcs.equalForProjection(e.m_vertcs)}return!1}equalHorizontal(e){return this.horizontalEqual(e)}equalVertical(e){return(0,i.g)(0),!1}equalVerticalVCS(e){return(0,i.g)(0),!1}convergenceAngle(e){return(0,i.g)(0),0}getPeCoordsysCopy(){if(this.m_peCoordSysVal){let e=this.m_peCoordSysVal.m_peCoordSys;return e||(0,i.d)("cannot clone coord sys"),e}return null}getPeVertcsCopy(){return(0,i.g)(0),0}throwIfLocal(){0===this.getCoordinateSystemType()&&(0,i.a)(qn)}getPrimeMeridian(){return this.throwIfLocal(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPrimeMeridian()}getSRToGCSTransform(){return this.updateTransform(!0)}getGCSToSRTransform(){return this.updateTransform(!1)}getOneMeter(){return 1e3*this.getUnitsPerMillimeter()}getOneMeterPCSUnit(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getOneMeterPCSUnit()}getDefaultPrecisionSR(){if(this.m_bDefaultDescriptor)return this;if(null===this.m_defaultPrecisionSR){let e=new ma;this.queryDefaultPrecisionDescriptorWithoutFalseXY(e),this.m_defaultPrecisionSR=Kn(this,e,!0)}return this.m_defaultPrecisionSR}getPCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPCSHorizon()}getHorzUnitFactor(){return this.m_unit?this.m_unit.getUnitToBaseFactor():1}querySpheroidData(e){this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal);let t=this.getGCS().getPECoordSys().getDatum().getSpheroid(),r=t.getFlattening();!function(e,t,r){e.majorSemiAxis=t,e.minorSemiAxis=t*(1-r),e.e2=r*(2-r),e.flattening=r}(e,t.getAxis(),r)}getAreaOfUse(){0===this.getCoordinateSystemType()&&(0,i.q)(""),(0,i.g)(this.m_peCoordSysVal);let e=this.m_peCoordSysVal.getAreaOfUse();return null===e?new p:new p({geom:e.clone(),sr:Wn(4326)})}getZToXYFactor(){return 1}isCustomWkid(){return!1}getOneDegreeGCSUnit(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getOneDegreeGCSUnit()}getGcsUnitFactor(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGcsUnitFactor()}snapGeometry(e){if(e.isEmpty()||2===this.m_precisionDescriptor.getPrecision())return!1;let t=e.getGeometryType();if((0,i.i)(t))return this.snapMultiVertex_(e);if(t===i.G.enumPoint)return this.snapPoint_(e);if(t===i.G.enumEnvelope)return this.snapEnvelope_(e);if((0,i.h)(t))return this.snapSegment_(e);if(t===i.G.enumGeometryCollection){let t=e,r=!1;for(let e=0,s=t.getGeometryCount();e<s;++e)r=this.snapGeometry(t.getGeometry(e))||r;return r}(0,i.d)("what else?")}snapMultiVertex_(e){if((0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision()),(0,i.j)(e.getGeometryType())){let t=e;if(t.hasNonLinearSegments())return this.snapGeometryWithCurves_(t)}let t=e.getImpl(),r=t.getDescription(),s=!1;for(let e=0,i=r.getAttributeCount();e<i;e++){let i=r.getSemantics(e),n=t.getAttributeStreamRef(i);s=this.snapAttributes(i,n,0,t.getPointCount())||s}return s&&t.notifyModifiedFlags(2001),s}snapPoint_(e){return!1}snapEnvelope_(e){return!1}snapSegment_(e){(0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision());let t=new ma;this.queryPrecisionDescriptor(t);let r=e.getStartXY(),s=new l.P;s.x=xa(r.x,t.getFalseX(),t.getGridUnitsXY()),s.y=xa(r.y,t.getFalseY(),t.getGridUnitsXY());let n=!s.equals(r),a=e.getEndXY(),o=new l.P;o.x=xa(a.x,t.getFalseX(),t.getGridUnitsXY()),o.y=xa(a.y,t.getFalseY(),t.getGridUnitsXY()),n||=!o.equals(a),n&&e.changeEndPoints2D(s,o);let m=(t,r,s)=>{let i=!1;{let n=e.getStartAttributeAsDbl(t,0),a=xa(n,r,s),o=!(0,l.G)(a,n);i||=o,o&&e.setStartAttribute(t,0,a)}{let n=e.getEndAttributeAsDbl(t,0),a=xa(n,r,s),o=!(0,l.G)(a,n);i||=o,o&&e.setEndAttribute(t,0,a)}return i},h=+!!n;return e.hasAttribute(1)&&(h|=+!!m(1,t.getFalseZ(),t.getGridUnitsZ())),e.hasAttribute(2)&&(h|=+!!m(2,t.getFalseM(),t.getGridUnitsM())),!!h}snapGeometryWithCurves_(e){(0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision());let t=e.createInstance(),r=new a.S,s=0;for(let i=0,n=e.getPathCount();i<n;++i){let n=e.getSegmentCountPath(i);if(0===n){if(t.addPath(e,i,!0),1===t.getPathSize(i)){let e=new o.P;t.getPointByVal(t.getPointCount()-1,e),s|=+!!this.snapGeometry(e),t.setPointByVal(t.getPointCount()-1,e)}continue}let a=e.isClosedPath(i);for(let o=0,l=a?n-1:n;o<l;++o)e.getSegmentFromPath(i,o,r,!1),s|=+!!this.snapGeometry(r.get()),t.addSegment(r.get(),0===o);a&&(e.getSegmentFromPath(i,n-1,r,!1),s|=+!!this.snapGeometry(r.get()),1===n?t.addPathFromClosedSegment(r.get(),!1):t.closeLastPathWithSegment(r.get()))}return s&&t.copyTo(e),!!s}snapAttributes(e,t,r,s){let i=!1,n=new ma;if(this.queryPrecisionDescriptor(n),0===e){let e=t;for(let t=r;t<s;t++){let r=e.read(2*t),s=la.s_SnapValue(r,n.getFalseX(),n.getGridUnitsXY()),a=e.read(2*t+1),o=la.s_SnapValue(a,n.getFalseY(),n.getGridUnitsXY());i=i||s!==r||o!==a,i&&(e.write(2*t,s),e.write(2*t+1,o))}}else if(1===e){let e=t;for(let t=r;t<s;t++){let r=e.read(t),s=la.s_SnapValue(r,n.getFalseZ(),n.getGridUnitsZ());i||=!(0,l.G)(s,r),i&&e.write(t,s)}}else if(2===e){let e=t;for(let t=r;t<s;t++){let r=e.read(t),s=la.s_SnapValue(r,n.getFalseM(),n.getGridUnitsM());i||=!(0,l.G)(s,r),i&&e.write(t,s)}}return i}static s_SnapValue(e,t,r){return(0,l.H)((e-t)*r)/r+t}}class ma{m_falseX;m_falseY;m_unitsXY;m_falseZ;m_unitsZ;m_falseM;m_unitsM;m_toleranceXY;m_toleranceZ;m_toleranceM;m_precision;constructor(){let e=Un,t=1e-4,r=.001,s=t*Number(e)*.5;this.m_precision=1,this.m_falseX=-s,this.m_falseY=-s,this.m_unitsXY=Number(e)/(2*s),this.m_falseM=-1e5,this.m_unitsM=1/t,this.m_falseZ=-1e5,this.m_unitsZ=1/t,this.m_toleranceXY=r,this.m_toleranceM=r,this.m_toleranceZ=r}getHashCode(){let e=7777,t=7777;return t=(0,l.B)(t,this.m_falseM),t=(0,l.B)(t,this.m_unitsM),e=(0,l.B)(e,this.m_unitsXY),t=(0,l.B)(t,this.m_toleranceXY),e=(0,l.B)(e,this.m_falseZ),t=(0,l.B)(t,this.m_toleranceZ),e=(0,l.B)(e,this.m_unitsZ),t=(0,l.B)(t,this.m_toleranceM),e=(0,l.B)(e,this.m_precision),(0,l.B)(e,t)}clone(){let e=new ma;return e.m_falseX=this.m_falseX,e.m_falseY=this.m_falseY,e.m_unitsXY=this.m_unitsXY,e.m_falseZ=this.m_falseZ,e.m_unitsZ=this.m_unitsZ,e.m_falseM=this.m_falseM,e.m_unitsM=this.m_unitsM,e.m_toleranceXY=this.m_toleranceXY,e.m_toleranceZ=this.m_toleranceZ,e.m_toleranceM=this.m_toleranceM,e.m_precision=this.m_precision,e}assign(e){return this.m_falseX=e.m_falseX,this.m_falseY=e.m_falseY,this.m_unitsXY=e.m_unitsXY,this.m_falseZ=e.m_falseZ,this.m_unitsZ=e.m_unitsZ,this.m_falseM=e.m_falseM,this.m_unitsM=e.m_unitsM,this.m_toleranceXY=e.m_toleranceXY,this.m_toleranceZ=e.m_toleranceZ,this.m_toleranceM=e.m_toleranceM,this.m_precision=e.m_precision,this}initialize2D(e,t){}getTolerance(e){switch(e){case 0:return this.m_toleranceXY;case 1:return this.m_toleranceZ;case 2:return this.m_toleranceM;default:return 0}}getResolution(e){if(2===this.m_precision)return 0;switch(e){case 0:return 1/this.m_unitsXY;case 1:return 1/this.m_unitsZ;case 2:return 1/this.m_unitsM;default:return 0}}getFalseX(){return this.m_falseX}getFalseY(){return this.m_falseY}getFalseZ(){return this.m_falseZ}getFalseM(){return this.m_falseM}getGridUnitsXY(){return this.m_unitsXY}getGridUnitsZ(){return this.m_unitsZ}getGridUnitsM(){return this.m_unitsM}getPrecision(){return this.m_precision}static getLimit32(){return 2147483645}static getLimit64(){return 9007199254740990n}static getLimitFloat(){return 0}getXYGridRange(){let e=new n.Envelope2D;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 2:e.setCoords({xmin:-Number.MAX_VALUE,ymin:-Number.MAX_VALUE,xmax:Number.MAX_VALUE,ymax:Number.MAX_VALUE});break;default:e.setEmpty(),(0,i.d)("")}return e}getZGridRange(){let e=new l.E;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,i.d)("")}return e}getMGridRange(){let e=new l.E;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,i.d)("")}return e}setTolerance(e,t){switch(t<0&&(0,i.a)("tol < 0"),Number.isFinite(t)||(0,i.a)("tol is not finite"),e){case 0:this.m_toleranceXY=t;break;case 1:this.m_toleranceZ=t;break;case 2:this.m_toleranceM=t;break;default:(0,i.a)("cannot set tolerance for this attribute")}}setGridParams(e,t,r){(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(r))&&(0,i.a)("grid params are not finite"),r<1&&(0,i.a)("grid units cannot be smaller than 1.0"),this.m_falseX=e,this.m_falseY=t,this.m_unitsXY=r}setZParams(e,t){(!Number.isFinite(e)||!Number.isFinite(t))&&(0,i.a)("grid params are not finite"),t<1&&(0,i.a)("grid units cannot be smaller than 1.0"),this.m_falseZ=e,this.m_unitsZ=t}setMParams(e,t){(!Number.isFinite(e)||!Number.isFinite(t))&&(0,i.a)("grid params are not finite"),t<1&&(0,i.a)("grid units cannot be smaller than 1.0"),this.m_falseM=e,this.m_unitsM=t}setPrecision(e){}equals(e){return this===e||(0,l.G)(this.m_falseX,e.m_falseX)&&(0,l.G)(this.m_falseY,e.m_falseY)&&this.equalsWithoutFalseXY(e)}snapPrecision(){if(2===this.m_precision)return;let e=(e,t,r,s)=>{if(!Number.isFinite(t)||!Number.isFinite(r))return r;if(r<1)return 1;if(!s)return r;let i=Number(e)/r;return Math.trunc((t+i-t)*r)>e&&(r=e/(t+i-t)),Math.max(1,r)},t=Number(0===this.m_precision?Mn:Un);this.m_unitsXY=e(t,this.m_falseX,this.m_unitsXY,!0),this.m_unitsXY=e(t,this.m_falseY,this.m_unitsXY,!0),this.m_unitsZ=e(t,this.m_falseZ,this.m_unitsZ,!1),this.m_unitsM=e(t,this.m_falseM,this.m_unitsM,!1)}verifyPrecision(){if(2===this.m_precision)return!0;let e=(e,t,r,s)=>{if(r<1||!Number.isFinite(t)||!Number.isFinite(r))return!1;if(!s)return!0;let i=Number(e)/r;return!(BigInt((t+i-t)*r)>e)},t=0===this.m_precision?Mn:Un;return!!(e(t,this.m_falseX,this.m_unitsXY,!0)&&e(t,this.m_falseY,this.m_unitsXY,!0)&&e(t,this.m_falseZ,this.m_unitsZ,!1)&&e(t,this.m_falseM,this.m_unitsM,!1))}fixTolerance(){2!==this.m_precision&&(this.m_toleranceXY=Math.max(2/this.m_unitsXY,this.m_toleranceXY),this.m_toleranceZ=Math.max(2/this.m_unitsZ,this.m_toleranceZ),this.m_toleranceM=Math.max(2/this.m_unitsM,this.m_toleranceM),(Number.isNaN(this.m_falseX)||Number.isNaN(this.m_falseY))&&(this.m_falseX=this.m_falseY=NaN))}equalsWithoutFalseXY(e){return this===e||this.m_unitsXY===e.m_unitsXY&&this.m_falseZ===e.m_falseZ&&this.m_unitsZ===e.m_unitsZ&&this.m_falseM===e.m_falseM&&this.m_unitsM===e.m_unitsM&&this.m_toleranceXY===e.m_toleranceXY&&this.m_toleranceZ===e.m_toleranceZ&&this.m_toleranceM===e.m_toleranceM&&this.m_precision===e.m_precision}setBestXyDomainFromEnvelope(e,t){}setBestZDomainFromZRange(e,t,r){}setBestMDomainFromMRange(e,t,r){}}function ha(){return(!sa||Rn()&&null===sa.getPECoordSys())&&(sa=fa(3857,0,0,!0)),sa}function ga(){return(!ia||Rn()&&null===ia.getPECoordSys())&&(ia=fa(102100,0,0,!0)),ia}function ua(){return(!na||Rn()&&null===na.getPECoordSys())&&(na=fa(4326,0,0,!0)),na}function _a(e){e.m_falseX=0,e.m_falseY=0,e.m_unitsXY=1,e.m_falseZ=0,e.m_unitsZ=1,e.m_falseM=0,e.m_unitsM=1,e.m_toleranceXY=100*(0,l.I)(),e.m_toleranceZ=100*(0,l.I)(),e.m_toleranceM=100*(0,l.I)(),e.m_precision=2}function pa(e,t,r,s){let n=t instanceof mn;_a(e),e.m_precision=s,e.m_falseX=NaN,e.m_falseY=NaN;let a=1e-4,o=.001,l=n?t.m_csType:t.isPCS?2:1;1===l?e.m_unitsXY=1/((0===s?5.555555555555555e-7:1e-9)*(n?t.getOneDegreeGCSUnit():Math.PI/t.metersOrRadiansPerUnit/180)):2===l?e.m_unitsXY=1/((0===s?o:a)*(n?t.getOneMeterPCSUnit():1/t.metersOrRadiansPerUnit)):(0,i.a)("unrecognized cs type"),e.m_falseM=-1e5,e.m_unitsM=1/(0===s?o:a),e.m_unitsM=Math.max(1,e.m_unitsM),e.m_unitsXY=Math.max(1,e.m_unitsXY);let m=0,h=0;(0===s||1===s)&&(m=2/e.m_unitsXY,h=2/e.m_unitsM),e.m_toleranceXY=Math.max(m,n?t.getUnitsPerMillimeter():2===l?.001/t.metersOrRadiansPerUnit:.001/(t.semiMajor*t.metersOrRadiansPerUnit)),e.m_toleranceM=Math.max(o,h),da(e,r)}function da(e,t){let r=1e-4,s=.001;e.m_falseZ=-1e5,e.m_unitsZ=t?1/((0===e.m_precision?s:r)*t.getOneMeter()):1/(0===e.m_precision?s:r),e.m_unitsZ=Math.max(1,e.m_unitsZ);let i=0;(0===e.m_precision||1===e.m_precision)&&(i=2/e.m_unitsZ),e.m_toleranceZ=Math.max(t?t.getOneMeter()*s:s,i)}function ca(e,t,r,s){_a(e),e.m_precision=s;let i=0===s?Mn:Un,n=1e-4,a=.001,o=1,l=1,m=.001;t&&(l=t.getUnitToBaseFactor()),t&&1===t.getUnitType()?(o=400*Math.PI/180,m=8.983152841195215e-9*Math.PI/180/l):(o=(0===s?a:n)*Number(i)*.5,m=a/l),o/=l,e.m_falseX=-o,e.m_falseY=-o,e.m_unitsXY=Number(i)/(2*o),e.m_falseM=-1e5,e.m_unitsM=1/(0===s?a:n),e.m_unitsM=Math.max(1,e.m_unitsM),e.snapPrecision();let h=0,g=0;(0===e.m_precision||1===e.m_precision)&&(g=2/e.m_unitsM,h=2/e.m_unitsXY),e.m_toleranceXY=Math.max(h,m),e.m_toleranceM=Math.max(a,g),da(e,r)}function fa(e,t,r,s){if(!s&&t<=0){if(3857===e)return ha();if(102100===e)return ga();if(4326===e)return ua()}let n,a=new la,o=null;return Rn()?(n=function(e){e<=0&&(0,i.y)(e);{let t=Vn(e);if(t)return t}let t=Ca(Ia.coordsys(e));t.get()||(0,i.y)(e);let r=Dn(t.release());return r.getLatestID()!==e&&yn.set(e,new WeakRef(r)),r}(e),t>0?o=null:t=0,a.setHorzProj_(n),a.m_vertcs=o):(n=Ha(e),a.m_unit=n.isPCS?new kn(n.metersOrRadiansPerUnit):new x(n.metersOrRadiansPerUnit)),pa(a.m_precisionDescriptor,n,o,1),a.m_bDefaultDescriptor=!0,a.m_userWKID=e,a.calculateHashCode(),a.initDbgName(),a}function xa(e,t,r){return(0,l.H)((e-t)*r)/r+t}let Pa=null;const ya=3552713678800501e-30;function Ea(e,t){return function(e,t,r){return e===t||Math.abs(e-t)<=r*(1+(Math.abs(e)+Math.abs(t))/2)}(e,t,ya)}let Sa;function Ca(e){return{_this:e,get(){return this._this},reset(e){this._this=e},release(){let e=this._this;return this._this=null,e}}}let Ia,va,Ga,wa,ba,Ta,Na,Da,Va,ka,Fa=null;function Ha(e){(0,i.g)(Fa);let t=Fa(e);return t.semiMajor=t.isPCS?NaN:function(e){if(Ia&&(0,i.q)("pe has been loaded. no-pe methods should not be used at this point."),"string"==typeof e){let t=e.match(Aa);(!t||2!==t.length)&&(0,i.a)("bad gcs wkt");let r=Number.parseFloat(t[1]);return Number.isFinite(r)||(0,i.a)("bad gcs wkt"),r}return Pa||Ma(),Pa.has(e)||(0,i.q)("gcs wkid not found"),Pa.get(e)}(e),t}const Aa=/(?:ELLIPSOID|SPHEROID)\["(?:\w|[-()])+",(\d+\.\d+)/;function Ma(){Pa=new Map;for(let e in f){let t=Number.parseFloat(e),r=f[e];if(Array.isArray(r))for(let e of r)Pa.set(e,t);else Pa.set(r,t)}!function(){for(let e in f)delete f[e]}()}function Ua(e,t){let r=Ia.geogtran(e);return r||(0,i.y)(e),new Xa(r,t)}function qa(e,t){let r=Ia.fromString(va.PE_TYPE_GEOGTRAN,e);return r||(0,i.z)(e),new Xa(r,t)}function Ba(e,t){return new Xa(e,t)}const Oa=(0,l.C)(0),Ya=(0,l.C)(1);class Xa{m_geogTranWrapper;m_hashCode;m_bInverted;constructor(e,t){if(e instanceof Xa)return this.m_geogTranWrapper=e.m_geogTranWrapper,this.m_bInverted=t?!e.m_bInverted:e.m_bInverted,void(this.m_hashCode=(0,l.B)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?Ya:Oa));this.m_geogTranWrapper=new ei(e),this.m_bInverted=t,this.m_hashCode=(0,l.B)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?Ya:Oa)}getID(){return this.m_geogTranWrapper.getLatestId()}getLatestID(){return this.m_geogTranWrapper.getLatestId()}getText(){return this.m_geogTranWrapper.getText()}getTextExtended(e){if(!this.m_geogTranWrapper.getGeogtran())return"";if(-1===e)return this.m_geogTranWrapper.getGeogtran().toString();{let t=0===e?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL;return this.m_geogTranWrapper.getGeogtran().toString(t)}}getText2(e=-1){let t=va.PE_STR_FMT_WKT2;return-1!==e&&(t|=0===e?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL),this.m_geogTranWrapper.getGeogtran().toString(t)}getName(){return this.m_geogTranWrapper&&this.m_geogTranWrapper.getGeogtran()?this.m_geogTranWrapper.getGeogtran().getName():""}getInputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getOutputSr(!1):this.m_geogTranWrapper.getInputSr(!1)}getOutputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getInputSr(!1):this.m_geogTranWrapper.getOutputSr(!1)}getInverse(){return new Xa(this,!0)}isInverted(){return this.m_bInverted}getHashCode(){return this.m_hashCode}GetPeGeogtran(){return this.m_geogTranWrapper.getGeogtran()}equals(e){let t=e;return t===this||this.m_bInverted===t.m_bInverted&&(this.GetPeGeogtran()===t.GetPeGeogtran()||!(this.getID()!==t.getID()||0===this.getID()&&!this.GetPeGeogtran().isEqual(t.GetPeGeogtran())))}referencesMissingData(){return!!this.m_geogTranWrapper&&!this.m_geogTranWrapper.isUsable()}getWrapper(){return this.m_geogTranWrapper}}function Ra(){return new za([],null,null,null)}function La(e){let t=new Wa,r=e.getSteps();if(r){let s=e.getEntries();for(let e=0;e<r;e++){let r,i=0!==s[e].getDirection(),n=s[e].getGeogtran().getCode();if(n>=0)r=Ia.geogtran(n);else{let t=s[e].getGeogtran().toString(va.PE_STR_FMT_WKT);r=Ia.fromString(va.PE_TYPE_GEOGTRAN,t)}if(null==r)return null;let a=Ba(r,i);t.add(a)}return t.create()}return null}class za{m_bReadOnly=!0;m_transforms;m_inputSr;m_outputSr;m_name="";m_fastTrack=-1;m_bNameIsSet=!1;constructor(e,t,r,s){this.m_transforms=e,t&&(this.m_name=t,this.m_bNameIsSet=!0),this.m_inputSr=r,this.m_outputSr=s}getType(){return 0}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}createInverse(){return this.getInverse()}getHashCode(){let e=1973;for(let t=0;t<this.m_transforms.length;t++)e=(0,l.B)(e,this.m_transforms[t].getHashCode());return e}equals(e){return(0,i.g)(0),!1}referencesMissingData(){if(0===this.m_transforms.length)return!1;for(let e of this.m_transforms)if(e.referencesMissingData())return!0;return!1}isMatchingTransformation(e,t){return(0,i.g)(0),!1}validateTransformation(e,t){return(0,i.g)(0),!1}nameIsSet(){return(0,i.g)(0),!1}getInputSpatialReference(){return this.m_inputSr}getOutputSpatialReference(){return this.m_outputSr}getStep(e){return(e<0||e>this.count())&&(0,i.r)(""),this.m_transforms[e]}getInverse(){let e=new Wa;return e.addSteps(this,!0),e.setInputSpatialReference(this.m_outputSr),e.setOutputSpatialReference(this.m_inputSr),e.create()}transform(e,t,r){if(0===this.count())return;let s=this.m_inputSr,i=this.m_outputSr;if(e&&(i=(0,l.c)(s,s=i)),0===this.m_transforms.length)return void ti(s,null,i,null,t,null,r);let n=this.m_fastTrack;if(1===n)return void(0,a.R)(e,this.m_transforms,s=>{!function(e,t,r,s,i){let n=e.getVerttran(),a=e.getGeogtran();if(i>0){e.prepareOrThrow();let s=t?va.PE_TRANSFORM_2_TO_1:va.PE_TRANSFORM_1_TO_2;n?Ji():$i(a,i,r,null,s)}}(s.getWrapper(),e!==s.isInverted(),t,0,r)});let o=$s();-1===n&&o.initFromGcsAndVcs(s,null);let m=$s(),h=e?this.m_transforms.length-1:0,g=e?-1:1;for(let i=0,a=this.m_transforms.length;i<a;i++,h+=g){if(0===i){let i=this.m_transforms[h];ri(s.getPECoordSys(),null,i.getWrapper(),e!==i.isInverted(),t,null,r,m),-1===n&&(o.equals(m)||(n=0)),o.assign(m)}else{let s=this.m_transforms[h-g],i=this.m_transforms[h];si(o,s.getWrapper(),e!==s.isInverted(),i.getWrapper(),e!==i.isInverted(),t,null,r,m),-1===n&&(o.equals(m)||(n=0)),o.assign(m)}let a=this.m_transforms[h];ii(o,a.getWrapper(),e!==a.isInverted(),t,null,r,m),o.assign(m)}let u=this.m_transforms[h-g];(function(e,t,r,s,i,n,a,o){let l=$s();l.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),l.processUnitParams(e);let m=null;s&&(m=s.getPECoordSys());let h=$s();h.initFromGcsAndVcsPe(m,null),h.processUnitParams(l),l.processUnitParams(h),o>0&&Js(l,h,n,null,o)})(o,u.getWrapper(),e!==u.isInverted(),i,0,t,0,r),-1===n&&(m.initFromGcsAndVcs(i,null),o.equals(m)||(n=0)),this.m_fastTrack=0===n?0:1}}class Wa{m_transforms=[];m_inputGCS=null;m_outputGCS=null;m_name="";m_bNameIsSet=!1;getInputSpatialReference(){return null===this.m_inputGCS?this.count()>0?this.m_transforms[0].getInputSpatialReference():null:this.m_inputGCS}setInputSpatialReference(e){this.m_inputGCS=e?e.getGCS():null}getOutputSpatialReference(){return null===this.m_outputGCS?this.count()>0?this.m_transforms.at(-1).getOutputSpatialReference():null:this.m_outputGCS}setOutputSpatialReference(e){this.m_outputGCS=e?e.getGCS():null}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}getStep(e){return(e<0||e>this.count())&&(0,i.r)(""),this.m_transforms[e]}setStep(e,t){(0,i.g)(0)}add(e){this.m_transforms.push(e)}addSteps(e,t){if(t)for(let t=e.count()-1;t>=0;--t)this.add(e.getStep(t).getInverse());else for(let t=0;t<e.count();++t)this.add(e.getStep(t))}clear(){this.m_transforms=[],this.m_name="",this.m_bNameIsSet=!1,this.m_inputGCS=null,this.m_outputGCS=null}remove(e){(0,i.g)(0)}create(){let e=this.getInputSpatialReference(),t=this.getOutputSpatialReference(),r=new za(this.m_transforms,this.m_bNameIsSet?this.m_name:null,e,t);return r.m_bReadOnly=!0,this.clear(),r}}}}]);
1
+ "use strict";(self.webpackChunkRemoteClient=self.webpackChunkRemoteClient||[]).push([[9117],{31139(e,t,r){r.d(t,{O:()=>_,a:()=>g,c:()=>m});var s=r(61691),i=r(55537),n=r(95213),a=r(79187),o=r(88885),l=r(83661);function m(e,t,r,s,i){return h(e,t,null,r,s,i)}function h(e,t,r,s,o,l){let h=e.getGeometryType();if(h===i.G.enumPoint){let r=e.getXY();return t.contains(r)?e:e.createInstance()}if(h===i.G.enumEnvelope){let r=a.Envelope2D.constructEmpty();if(e.queryEnvelope(r),r.intersect(t)){let t=e.clone();return t.setEnvelope(r),t}return e.createInstance()}if(e.isEmpty())return e;if(t.isEmpty())return e.createInstance();let g=t.clone();{let t=new a.Envelope2D;if(e.queryLooseEnvelope(t),g.containsEnvelope(t))return e;if(!g.isIntersecting(t))return e.createInstance();0===o&&(t.intersect(g),t.inflate(Math.max(.1*t.maxDimension(),1)),t.intersect(g),g.assign(t))}let _=s;if((null!==r||Number.isNaN(_))&&(_=(0,n.c)(r,g,!1).total()),h===i.G.enumGeometryCollection){let t=e,r=e.createInstance();for(let e=0,s=t.getGeometryCount();e<s;e++){let s=t.getGeometry(e);if(s.isEmpty())continue;let i=m(s,g,_,o,l);i.isEmpty()||(i===s?r.addGeometry(i.clone()):r.addGeometry(i))}return r}(0,i.i)(h)||(0,i.b)("Clip: geometry not supported");let p=e.getImpl().getAccelerators();if(null!==p){let e=p.getRasterizedGeometry();(0,i.g)(null===e)}switch(h){case i.G.enumMultiPoint:{let t,r=e,s=r.getPointCount(),n=r.getImpl().getAttributeStreamRef(0),a=0;for(let e=0;e<s;e++){let s=n.readPoint2D(2*e);g.contains(s)||(0===a&&(t=r.createInstance()),a<e&&t.addPoints(r,a,e),a=e+1)}return a>0&&t.addPoints(r,a,s),0===a?r:((0,i.g)(null!==t),t)}case i.G.enumPolygon:case i.G.enumPolyline:return function(e,t,r,s,i){return new u(t,i).clipMultiPath2(e,r,s)}(e,g,_,o,l);default:(0,i.d)("")}}function g(e,t,r,s,i,n){let o=new u(t,n),l=new a.Envelope2D;return e.queryLooseEnvelope(l),t.containsEnvelope(l)?e:t.isIntersecting(l)?o.clipPolesOut(e,i):e.createInstance()}class u{m_extent;m_shape=new o.E;m_geometry=-1;m_verticesOnExtentIndex=-1;m_verticesOnExtent=[];m_progressTracker;m_progressCounter=0;constructor(e,t){this.m_extent=new a.Envelope2D(e),this.m_progressTracker=t}progress_(){}clipMultiPath2(e,t,r){return e.getGeometryType()===i.G.enumPolygon?this.clipPolygonOrProjectedPolyline2(e,r):this.clipPolyline(e,t)}clipPolygonOrProjectedPolyline2(e,t){let r=e.getGeometryType()===i.G.enumPolyline;if(0===this.m_extent.width()||0===this.m_extent.height())return e.createInstance();let s=a.Envelope2D.constructEmpty();e.queryLooseEnvelope(s),this.m_geometry=r?this.m_shape.addGeometry(e):this.m_shape.addGeometry(e,this.m_extent);let n=a.Envelope2D.constructEmpty(),m=a.Envelope2D.constructEmpty(),h=new l.P,g=new l.P,_=(0,l.c)(9,NaN),p=(0,l.c)(9,NaN),d=(0,l.d)(l.P,9),c=null,f=new o.L,x=[],P=!1;for(let e=0;!P&&e<4;e++){let t=!1,a=!!(1&e),o=0;switch(e){case 0:o=this.m_extent.xmin,t=s.xmin<=o&&s.xmax>=o;break;case 1:o=this.m_extent.ymin,t=s.ymin<=o&&s.ymax>=o;break;case 2:o=this.m_extent.xmax,t=s.xmin<=o&&s.xmax>=o;break;case 3:o=this.m_extent.ymax,t=s.ymin<=o&&s.ymax>=o}if(t){P=!0;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;){let s=!0,l=-1,y=-1,E=this.m_shape.getFirstVertex(t),S=E;do{this.progress_(),c=this.m_shape.getSegment(S);let t=c;if(null===t){let e=this.m_shape.getNextVertex(S);if(-1===e){(0,i.g)(r),0===l&&x.push(S);break}this.m_shape.queryXY(S,h),f.setStartXY(h),this.m_shape.queryXY(e,g),f.setEndXY(g),t=f}t.queryLooseEnvelope(n);let E=u.checkSegmentIntersection(n,e,o);t.isCurve()&&0===E&&t.isCurve()&&(f.setStartXY(t.getStartXY()),f.setEndXY(t.getEndXY()),this.m_shape.replaceCurveWithLine(S),t=f,f.queryEnvelope(n),E=u.checkSegmentIntersection(n,e,o));let C=0,I=-1;if(-1===E){let r=t.intersectionWithAxis2D(a,o,_,p);if(r>0){let e=null;if(t.isCurve()){e=d,(0,i.g)(r<=9);for(let e=0;e<r;e++)a?d[e].setCoords(_[e],o):d[e].setCoords(o,_[e]);C=this.m_shape.splitSegmentAxisAware(S,p,r,e,+!!a)}else C=this.m_shape.splitSegmentAxisAware(S,p,r,null,-1)}else C=0;C+=1;let n=S,E=this.m_shape.getNextVertex(n);t=null;for(let t=0;t<C;t++){this.m_shape.queryXY(n,h),this.m_shape.queryXY(E,g),c=this.m_shape.getSegment(n);let t=c;null===t&&(f.setStartXY(h),f.setEndXY(g),t=f),t.queryEnvelope(m);let r=u.checkSegmentIntersection(m,e,o);t.isCurve()&&0===r&&(this.m_shape.replaceCurveWithLine(n),f.setStartXY(h),f.setEndXY(g),t=f,t.queryEnvelope(m),r=u.checkSegmentIntersection(m,e,o)),-1===r&&(a?Math.abs(h.y-o)<Math.abs(g.y-o)?(h.y=o,this.m_shape.setXY(n,h)):(g.y=o,this.m_shape.setXY(E,g)):Math.abs(h.x-o)<Math.abs(g.x-o)?(h.x=o,this.m_shape.setXY(n,h)):(g.x=o,this.m_shape.setXY(E,g)),c=this.m_shape.getSegment(n),t=c,null===t&&(f.setStartXY(h),f.setEndXY(g),t=f),t.queryEnvelope(m),r=u.checkSegmentIntersection(m,e,o),-1===r&&(r=u.checkSegmentIntersectionLoose(m,e,o)));let i=l;l=r,-1===y&&(y=l),0===i&&1===l||1===i&&0===l||0===i&&0===l&&x.push(n),1===l&&(P=!1,s=!1),n=E,I=n,E=this.m_shape.getNextVertex(E)}}if(0===C){let e=l;l=E,-1===y&&(y=l),0===e&&l>=1||e>=1&&0===l||0===e&&0===l&&x.push(S),1===l&&(P=!1,s=!1),I=this.m_shape.getNextVertex(S)}if(S=I,x.length>=256){for(let e=1,t=x.length-1;e<t;e++){let t=x[e];r?this.m_shape.snapVertexForPoleClipping(t,o):this.m_shape.removeVertex(t,!1)}x[1]=x.at(-1),x.length=2}}while(S!==E);if(!s){0===y&&(r||0===l||2===l)&&x.push(E);for(let e=0,t=x.length;e<t;e++){let t=x[e];r?this.m_shape.snapVertexForPoleClipping(t,o):this.m_shape.removeVertex(t,!1)}}x.length=0,t=s||0===this.m_shape.getPathSize(t)?this.m_shape.removePath(t):this.m_shape.getNextPath(t)}}}if(P)return e.createInstance();c=null,r?this.removeSpikesAlongPoles():this.resolveBoundaryOverlaps(),t>0&&this.densifyAlongClipExtent(t);let y=this.m_shape.getGeometry(this.m_geometry);return y.getGeometryType()===i.G.enumPolygon&&y.setFillRule(e.getFillRule()),y}clipPolyline(e,t){let r=a.Envelope2D.constructEmpty(),s=a.Envelope2D.constructEmpty(),i=(0,l.c)(9,NaN),n=(0,l.c)(9,NaN),m=new o.S,h=e,g=a.Envelope2D.constructEmpty();e.queryLooseEnvelope(g);for(let t=0;t<4;t++){let a=!1,o=!!(1&t),_=0;switch(t){case 0:_=this.m_extent.xmin,a=g.xmin<=_&&g.xmax>=_;break;case 1:_=this.m_extent.ymin,a=g.ymin<=_&&g.ymax>=_;break;case 2:_=this.m_extent.xmax,a=g.xmin<=_&&g.xmax>=_;break;case 3:_=this.m_extent.ymax,a=g.ymin<=_&&g.ymax>=_}if(!a)continue;let p=h;h=e.createInstance();let d=p.getImpl().querySegmentIterator();d.resetToFirstPath();let c=new l.P,f=new l.P;for(;d.nextPath();){let e=-1,a=!0;for(;d.hasNextSegment();){this.progress_();let l=d.nextSegment(),g=l.isDegenerate(0);l.queryLooseEnvelope(r);let p=u.checkSegmentIntersection(r,t,_);if(-1===p){let r=l.intersectionWithAxis2D(o,_,i,n),p=0;c.assign(l.getStartXY());for(let d=0;d<=r;d++){let x=d<r?n[d]:1;if(p===x)continue;l.queryCut(p,x,m,!1);let P=m.get(),y=!1;if(P.getStartXY().equals(c)||(P.setStartXY(c),y=!0),d<r&&(o?(f.x=i[d],f.y=_):(f.x=_,f.y=i[d]),P.getEndXY().equals(f)||(P.setEndXY(f),y=!0)),y&&P.normalizeAfterEndpointChange(),!g&&P.isDegenerate(0))continue;P.queryEnvelope(s);let E=u.checkSegmentIntersection(s,t,_);if(-1===E){let e=P.getStartXY(),r=P.getEndXY();y=!1,o?Math.abs(e.y-_)<Math.abs(r.y-_)?(e.y=_,P.setStartXY(e),e.equals(P.getStartXY())||(P.setStartXY(e),y=!0)):(r.y=_,r.equals(P.getEndXY())||(P.setEndXY(r),y=!0)):Math.abs(e.x-_)<Math.abs(r.x-_)?(e.x=_,e.equals(P.getStartXY())||(P.setStartXY(e),y=!0)):(r.x=_,r.equals(P.getEndXY())||(P.setEndXY(r),y=!0)),y&&P.normalizeAfterEndpointChange(),P.queryEnvelope(s),E=u.checkSegmentIntersection(s,t,_),-1===E&&(E=u.checkSegmentIntersectionLoose(s,t,_))}c.assign(P.getEndXY()),p=x,e=E,e>=1?(h.addSegment(P,a),a=!1):a=!0}}else e=p,e>=1?(h.addSegment(l,a),a=!1):a=!0}}}return h}static checkSegmentIntersection(e,t,r){switch(t){case 0:return e.xmin<r&&e.xmax<=r?0:e.xmin>=r?e.xmax===r?2:1:-1;case 1:return e.ymin<r&&e.ymax<=r?0:e.ymin>=r?e.ymax===r?2:1:-1;case 2:return e.xmin>=r&&e.xmax>r?0:e.xmax<=r?e.xmin===r?2:1:-1;case 3:return e.ymin>=r&&e.ymax>r?0:e.ymax<=r?e.ymin===r?2:1:-1}return(0,i.d)(""),0}static checkSegmentIntersectionLoose(e,t,r){switch(t){case 0:{let t=Math.abs(e.xmin-r),s=Math.abs(e.xmax-r);return e.xmin<r?t>s?0:1:((0,i.d)(""),1)}case 1:{let t=Math.abs(e.ymin-r),s=Math.abs(e.ymax-r);return e.ymin<r?t>s?0:1:((0,i.d)(""),1)}case 2:{let t=Math.abs(e.xmin-r),s=Math.abs(e.xmax-r);return e.xmax>r?t<s?0:1:((0,i.d)(""),1)}case 3:{let t=Math.abs(e.ymin-r),s=Math.abs(e.ymax-r);return e.ymax>r?t<s?0:1:((0,i.d)(""),1)}}return(0,i.d)(""),0}resolveBoundaryOverlaps(){this.m_verticesOnExtentIndex=-1,this.splitSegments(!1,this.m_extent.xmin),this.splitSegments(!1,this.m_extent.xmax),this.splitSegments(!0,this.m_extent.ymin),this.splitSegments(!0,this.m_extent.ymax),this.m_verticesOnExtent.length=0,this.m_verticesOnExtentIndex=this.m_shape.createUserIndex();let e=new l.P;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;t=this.m_shape.getNextPath(t)){let r=this.m_shape.getFirstVertex(t);for(let s=0,i=this.m_shape.getPathSize(t);s<i;s++,r=this.m_shape.getNextVertex(r))this.progress_(),this.m_shape.queryXY(r,e),(this.m_extent.xmin===e.x||this.m_extent.xmax===e.x||this.m_extent.ymin===e.y||this.m_extent.ymax===e.y)&&(this.m_shape.setUserIndex(r,this.m_verticesOnExtentIndex,this.m_verticesOnExtent.length),this.m_verticesOnExtent.push(r))}this.dbgCheckPathFirst(),this.resolveOverlaps(!1,this.m_extent.xmin),this.dbgCheckPathFirst(),this.resolveOverlaps(!1,this.m_extent.xmax),this.dbgCheckPathFirst(),this.resolveOverlaps(!0,this.m_extent.ymin),this.dbgCheckPathFirst(),this.resolveOverlaps(!0,this.m_extent.ymax),this.fixPaths()}densifyAlongClipExtent(e){let t=new l.P(0,0),r=new l.P(0,0),s=(0,l.c)(2048,NaN);for(let n=this.m_shape.getFirstPath(this.m_geometry);-1!==n;n=this.m_shape.getNextPath(n)){let a=this.m_shape.getFirstVertex(n),o=a;do{let n=this.m_shape.getNextVertex(o);this.m_shape.queryXY(o,t);let a=-1;if(t.x===this.m_extent.xmin?(this.m_shape.queryXY(n,r),r.x===this.m_extent.xmin&&(a=1)):t.x===this.m_extent.xmax&&(this.m_shape.queryXY(n,r),r.x===this.m_extent.xmax&&(a=1)),t.y===this.m_extent.ymin?(this.m_shape.queryXY(n,r),r.y===this.m_extent.ymin&&(a=0)):t.y===this.m_extent.ymax&&(this.m_shape.queryXY(n,r),r.y===this.m_extent.ymax&&(a=0)),-1===a){o=n;continue}if(this.isCurve(o)){o=n;continue}let m=t.clone(),h=new l.P(0,0);if(a){let s=t.y-this.m_extent.ymin;h.y=(0,l.h)(r.y-t.y),m.y=e*(0,l.j)(Math.floor(Math.abs(s)/e),s)+this.m_extent.ymin,h.y<0&&(m.y+=e)}else{let s=t.x-this.m_extent.xmin;h.x=(0,l.h)(r.x-t.x),m.x=e*(0,l.j)(Math.floor(Math.abs(s)/e),s)+this.m_extent.xmin,h.x<0&&(m.x+=e)}let g=a?r.y-t.y:r.x-t.x,u=Math.abs(g);if(u/e>65536&&(0,i.d)(""),u>0){let r=Math.trunc(u/e)+2;s.length<r&&(s.length=r);let n=0;for(let r=0;;r++){let o=m.add(h.mul(r*e)),l=(a?o.y-t.y:o.x-t.x)/g;if(l>=1)break;l<=0||((0,i.g)(n<=s.length),s[n]=l,n++)}0!==n&&this.m_shape.splitSegment(o,s,n)}o=n}while(o!==a)}}splitSegments(e,t){let r=-1,s=new l.P,i=[];for(let n=this.m_shape.getFirstPath(this.m_geometry);-1!==n;n=this.m_shape.getNextPath(n)){let a=this.m_shape.getFirstVertex(n),o=-1;for(let l=0,m=this.m_shape.getPathSize(n);l<m;l++,a=o)if(this.progress_(),o=this.m_shape.getNextVertex(a),this.m_shape.queryXY(a,s),(e?s.y===t:s.x===t)&&(this.m_shape.queryXY(o,s),e?s.y===t:s.x===t)){if(this.isCurve(a))continue;-1===r&&(r=this.m_shape.createUserIndex()),1!==this.m_shape.getUserIndex(a,r)&&(i.push(a),this.m_shape.setUserIndex(a,r,1)),1!==this.m_shape.getUserIndex(o,r)&&(i.push(o),this.m_shape.setUserIndex(o,r,1))}}if(-1!==r&&this.m_shape.removeUserIndex(r),i.length<3)return;i.sort((e,t)=>this.compareVertices(e,t));let n=new l.P,a=new l.P,o=new l.P;a.setNAN();let m=-1,h=[],g=[],u=this.m_shape.createUserIndex(),_=this.m_shape.createUserIndex();for(let r=0,p=i.length;r<p;r++){let p=i[r];if(this.m_shape.queryXY(p,s),!s.isEqualPoint2D(a)){if(-1===m){m=r,a.setCoordsPoint2D(s);continue}for(let s=m;s<r;s++){let r=i[s],o=this.m_shape.getNextVertex(r),l=this.m_shape.getPrevVertex(r),m=!1;this.m_shape.queryXY(o,n),a.compare(n)<0&&(e?n.y===t:n.x===t)&&(this.isCurve(r)||(h.push(r),m=!0,this.m_shape.setUserIndex(r,_,1))),this.m_shape.queryXY(l,n),a.compare(n)<0&&(e?n.y===t:n.x===t)&&(this.isCurve(l)||(m||h.push(r),this.m_shape.setUserIndex(r,u,1)))}for(let e=0,t=h.length;e<t;e++){let t=h[e],r=this.m_shape.getUserIndex(t,u),i=this.m_shape.getUserIndex(t,_);if(1===r){let e=this.m_shape.getPrevVertex(t);this.m_shape.queryXY(e,o);let r=0;if(!o.isEqualPoint2D(s)){let i=l.P.distance(a,o);r=l.P.distance(o,s)/i,0===r?r=2**-52:1===r&&(r=1-2**-52),this.m_shape.splitSegment(e,[r],1);let n=this.m_shape.getPrevVertex(t);this.m_shape.setXY(n,s),g.push(n),this.m_shape.setUserIndex(n,u,1),this.m_shape.setUserIndex(n,_,-1)}}if(1===i){let e=this.m_shape.getNextVertex(t);this.m_shape.queryXY(e,o);let r=0;if(!o.isEqualPoint2D(s)){let e=l.P.distance(a,o);r=l.P.distance(a,s)/e,0===r?r=2**-52:1===r&&(r=1-2**-52),this.m_shape.splitSegment(t,[r],1);let i=this.m_shape.getNextVertex(t);this.m_shape.setXY(i,s),g.push(i),this.m_shape.setUserIndex(i,u,-1),this.m_shape.setUserIndex(i,_,1)}}}let p=h;h=g,g=p,g.length=0,m=r,a.setCoordsPoint2D(s)}}this.m_shape.removeUserIndex(u),this.m_shape.removeUserIndex(_)}resolveOverlaps(e,t){let r=new l.P,s=[],n=-1;for(let i=0,a=this.m_verticesOnExtent.length;i<a;i++){this.progress_();let a=this.m_verticesOnExtent[i];if(-1===a)continue;let o=this.m_shape.getNextVertex(a);if(this.m_shape.queryXY(a,r),(e?r.y===t:r.x===t)&&(this.m_shape.queryXY(o,r),e?r.y===t:r.x===t)){if(this.isCurve(a))continue;-1===n&&(n=this.m_shape.createUserIndex()),-2!==this.m_shape.getUserIndex(a,n)&&(s.push(a),this.m_shape.setUserIndex(a,n,-2)),-2!==this.m_shape.getUserIndex(o,n)&&(s.push(o),this.m_shape.setUserIndex(o,n,-2))}}if(0===s.length)return void(-1!==n&&this.m_shape.removeUserIndex(n));(0,i.g)(-1!==n),s.sort((e,t)=>this.compareVertices(e,t));for(let e=0,t=s.length;e<t;e++){let t=s[e];this.m_shape.setUserIndex(t,n,e)}let a=new l.P,o=new l.P;o.setNAN();let m=-1;for(let i=0,l=s.length;i<l;i++){this.progress_();let l=s[i];if(-1!==l&&(this.m_shape.queryXY(l,r),!r.isEqualPoint2D(o))){if(-1!==m)for(;;){let r=!1,l=i;for(let h=m;h<l;h++){let l=s[h];if(-1===l)continue;let m=-1,g=this.m_shape.getNextVertex(l);this.m_shape.queryXY(g,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(l)||(m=g));let u=-1,_=this.m_shape.getPrevVertex(l);if(this.m_shape.queryXY(_,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(_)||(u=_)),-1===m||-1===u){if(-1!==m||-1!==u){for(let g=h+1;g<i;g++){let i=s[g];if(-1===i)continue;let h=this.m_shape.getNextVertex(i),_=-1;this.m_shape.queryXY(h,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(i)||(_=h));let p=this.m_shape.getPrevVertex(i),d=-1;if(this.m_shape.queryXY(p,a),o.compare(a)<0&&(e?a.y===t:a.x===t)&&(this.isCurve(p)||(d=p)),-1!==_&&-1!==d){this.beforeRemoveVertex(i,s,n),this.m_shape.removeVertex(i,!1),this.beforeRemoveVertex(_,s,n),this.m_shape.removeVertex(_,!1),r=!0;break}if(-1!==m&&-1!==d){this.removeOverlap(s,l,m,i,d,n),r=!0;break}if(-1!==u&&-1!==_){this.removeOverlap(s,i,_,l,u,n),r=!0;break}}if(r)break}}else this.beforeRemoveVertex(l,s,n),this.m_shape.removeVertex(l,!1),this.beforeRemoveVertex(m,s,n),this.m_shape.removeVertex(m,!1),r=!0}if(!r)break}m=i,o.setCoordsPoint2D(r)}}this.m_shape.removeUserIndex(n)}beforeRemoveVertex(e,t,r){let s=this.m_shape.getUserIndex(e,r);(0,i.g)(s>=0),t[s]=-1,s=this.m_shape.getUserIndex(e,this.m_verticesOnExtentIndex),(0,i.g)(s>=0),this.m_verticesOnExtent[s]=-1;let n=this.m_shape.getPathFromVertex(e);-1!==n&&this.m_shape.getFirstVertex(n)===e&&(this.m_shape.setFirstVertex(n,-1),this.m_shape.setLastVertex(n,-1))}removeOverlap(e,t,r,s,i,n){this.m_shape.setNextVertex(t,s),this.m_shape.setPrevVertex(s,t),this.m_shape.setPrevVertex(r,i),this.m_shape.setNextVertex(i,r),this.beforeRemoveVertex(s,e,n),this.m_shape.removeVertexInternal(s,!1),this.beforeRemoveVertex(i,e,n),this.m_shape.removeVertexInternal(i,!0)}removeSpikesAlongPoles(){this.removeSpikesOnPole(this.m_extent.ymin),this.removeSpikesOnPole(this.m_extent.ymax)}removeSpikesOnPole(e){for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;t=this.m_shape.getNextPath(t)){let r=this.m_shape.getPathSize(t);if(r<3)continue;let s=this.m_shape.getFirstVertex(t),i=new l.P;this.m_shape.queryXY(s,i);let n=i.y===e&&!this.isCurve(s);s=this.m_shape.getNextVertex(s);let a=new l.P;this.m_shape.queryXY(s,a);let o=a.y===e&&!this.isCurve(s);s=this.m_shape.getNextVertex(s);let m=new l.P;for(let t=0,l=r-2;t<l;t++,s=this.m_shape.getNextVertex(s)){this.progress_(),this.m_shape.queryXY(s,m);let t=m.y===e;o&&n&&t&&(a.x-i.x)*(m.x-a.x)<=0?(this.m_shape.removeVertex(this.m_shape.getPrevVertex(s),!1),a.setCoordsPoint2D(m),o=t&&!this.isCurve(s)):(i.setCoordsPoint2D(a),n=o,a.setCoordsPoint2D(m),o=t&&!this.isCurve(s))}}}fixPaths(){for(let e=0,t=this.m_verticesOnExtent.length;e<t;e++){let t=this.m_verticesOnExtent[e];-1!==t&&this.m_shape.setPathToVertex(t,-1)}let e=this.m_shape.hasCurves(),t=0,r=0;for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;){let s=this.m_shape.getFirstVertex(e);if(-1===s||e!==this.m_shape.getPathFromVertex(s)){let t=e;e=this.m_shape.getNextPath(e),this.m_shape.setFirstVertex(t,-1),this.m_shape.removePathOnly(t);continue}let i=s,n=0;do{this.m_shape.setPathToVertex(i,e),n++,i=this.m_shape.getNextVertex(i)}while(i!==s);this.m_shape.setRingAreaValid(e,!1),this.m_shape.setLastVertex(e,this.m_shape.getPrevVertex(s)),this.m_shape.setPathSize(e,n),r+=n,t++,e=this.m_shape.getNextPath(e)}for(let s=0,n=this.m_verticesOnExtent.length;s<n;s++){let n=this.m_verticesOnExtent[s];if(-1===n)continue;let a=this.m_shape.getPathFromVertex(n);if(-1!==a)continue;a=this.m_shape.insertPath(this.m_geometry,-1);let o=!1,l=0,m=n;do{this.m_shape.setPathToVertex(n,a),l++,e&&l<=2&&(o||=this.isCurve(n)),n=this.m_shape.getNextVertex(n)}while(n!==m);if(o?0===l:l<=2){let e=this.m_shape.getUserIndex(m,this.m_verticesOnExtentIndex);(0,i.g)(e>=0),this.m_verticesOnExtent[e]=-1;let t=this.m_shape.removeVertex(m,!1);2===l&&(e=this.m_shape.getUserIndex(t,this.m_verticesOnExtentIndex),e>=0&&(this.m_verticesOnExtent[e]=-1),this.m_shape.removeVertex(t,!1));let r=a;a=this.m_shape.getNextPath(a),this.m_shape.setFirstVertex(r,-1),this.m_shape.removePathOnly(r);continue}this.m_shape.setClosedPath(a,!0),this.m_shape.setPathSize(a,l),this.m_shape.setFirstVertex(a,m),this.m_shape.setLastVertex(a,this.m_shape.getPrevVertex(m)),this.m_shape.setRingAreaValid(a,!1),r+=l,t++}this.m_shape.setGeometryPathCount(this.m_geometry,t),this.m_shape.setGeometryVertexCount(this.m_geometry,r);let s=0;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))s+=this.m_shape.getPointCount(e);this.m_shape.setTotalPointCount(s)}dbgCheckPathFirst(){}isCurve(e){return null!==this.m_shape.getSegment(e)}compareVertices(e,t){let r=new l.P;this.m_shape.queryXY(e,r);let s=new l.P;return this.m_shape.queryXY(t,s),r.compare(s)}clipPolesOut(e,t){return this.clipPolygonOrProjectedPolyline2(e,t)}}class _{getOperatorType(){return 10004}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s){return new p(e,t,r,s)}execute(e,t,r,s){return function(e,t,r,s){return h(e,t,r,NaN,0,s)}(e,t,r,s)}}class p extends s.G{m_inputGeometryCursor;m_spatialRefImpl;m_progressTracker;m_envelope;m_tolerance;m_index;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_index=-1,e||(0,i.b)(""),this.m_envelope=t,this.m_inputGeometryCursor=e,this.m_spatialRefImpl=r,this.m_tolerance=(0,n.c)(r,t,!1).total()}next(){let e;return(e=this.m_inputGeometryCursor.next())?((0,i.t)(e),this.m_index=this.m_inputGeometryCursor.getGeometryID(),m(e,this.m_envelope,this.m_tolerance,0,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}},5247(e,t,r){r.d(t,{O:()=>l});var s=r(61691),i=r(55537),n=r(88885),a=n.D;class o extends s.G{m_inputGeoms;m_densificator;m_index;constructor(e,t,r,s,i,n){super(),this.m_densificator=new a(t,r,s,n,!1,i),this.m_index=-1,this.m_inputGeoms=e}tock(){return!0}getRank(){return 1}next(){let e=null;for(;e=this.m_inputGeoms.next();)return(0,i.t)(e),this.m_index=this.m_inputGeoms.getGeometryID(),this.densify(e);return null}getGeometryID(){return this.m_index}densify(e){return this.m_densificator.densify(e)}}class l{getOperatorType(){return 10202}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}executeMany(e,t,r,s,i,n=12e3){return new o(e,t,r,s,n,i)}execute(e,t,r,s,i,a=12e3){return(0,n.d)(e,t,r,s,i,a)}}},39117(e,t,r){r.d(t,{$:()=>Me,B:()=>pn,C:()=>gn,D:()=>_n,E:()=>un,H:()=>dn,J:()=>ts,K:()=>tr,M:()=>ur,N:()=>_r,O:()=>ps,Q:()=>lr,U:()=>dr,W:()=>c,X:()=>Or,Y:()=>Rr,Z:()=>ni,_:()=>et,a:()=>ma,a$:()=>p,a0:()=>Ue,a1:()=>ai,a2:()=>oi,a3:()=>mi,a4:()=>ns,a5:()=>gi,a6:()=>Ar,a7:()=>br,a8:()=>hr,a9:()=>Ne,aA:()=>Di,aB:()=>rr,aC:()=>b,aD:()=>Ga,aE:()=>Ii,aF:()=>Ui,aN:()=>va,aQ:()=>mr,aR:()=>Vr,aX:()=>Ia,aY:()=>Ai,aZ:()=>F,a_:()=>Ks,aa:()=>ir,ab:()=>Nr,ac:()=>Wa,ad:()=>Ra,ae:()=>Va,af:()=>cs,ag:()=>Ti,ah:()=>fs,ai:()=>P,aj:()=>ln,ak:()=>Os,al:()=>bi,am:()=>Ea,an:()=>Sa,ao:()=>Da,ap:()=>Bs,aq:()=>ys,ar:()=>Es,as:()=>xs,at:()=>Ps,au:()=>Ys,av:()=>v,aw:()=>Mi,ax:()=>zi,ay:()=>C,az:()=>Hi,b:()=>jn,c:()=>Wn,e:()=>Qn,f:()=>Kn,i:()=>Yn,j:()=>oa,l:()=>Rn,m:()=>Xn,p:()=>$n,q:()=>ea,r:()=>On,v:()=>pi,x:()=>li,y:()=>Ua,z:()=>qa});var s=r(32198),i=r(55537),n=r(79187),a=r(88885),o=r(95213),l=r(83661),m=r(11878),h=r(31139),g=r(5247),u=r(61691),_=r(76061);class p{constructor(e){if(this.m_geom=this.m_sr=null,e){if(e.move)return this.m_geom=e.move.m_geom,e.move.m_geom=null,this.m_sr=e.move.m_sr,void(e.move.m_sr=null);if(e.copy)return this.m_geom=e.copy.m_geom?e.copy.m_geom.clone():null,void(this.m_sr=e.copy.m_sr);e.geom&&(this.m_geom=e.geom),e.sr&&(this.m_sr=e.sr)}}getGeometry(){return this.m_geom}getSpatialReference(){return this.m_sr}setGeometry(e){this.m_geom=e}setSpatialReference(e){this.m_sr=e}equals(e,t){let r=e;return!(!this.m_sr&&r.m_sr||this.m_sr&&!r.m_sr||!this.m_geom&&r.m_geom||this.m_geom&&!r.m_geom||this.m_sr&&r.m_sr&&!this.m_sr.equals(r.m_sr)||this.m_geom&&r.m_geom&&!this.m_geom.equals(r.m_geom,t))}clone(){let e=null;return this.m_geom&&(e=this.m_geom.clone()),new p({geom:e,sr:this.m_sr})}hasGeom(){return!!this.m_geom}m_geom;m_sr}class d{m_factor=1;m_wkid=0;m_peUnit=null;constructor(e){e&&(this.m_peUnit=e,this.m_factor=e.getUnitFactor(),this.m_wkid=e.getCode(),this.m_wkid<0&&(this.m_wkid=0))}getName(){return this.m_peUnit?this.m_peUnit.getName():""}getID(){return this.m_wkid}getConversionFactor(e){return this.getUnitType()!==e.getUnitType()&&(0,i.b)("unit type mismatch"),this.getUnitToBaseFactor()/e.getUnitToBaseFactor()}getUnitToBaseFactor(){return this.m_factor}getHashCode(){return(0,l.B)((0,l.C)(this.getUnitType()),(0,l.C)(this.getUnitToBaseFactor()))}equals(e){return!!e&&this.getUnitType()===e.getUnitType()&&this.getUnitToBaseFactor()===e.getUnitToBaseFactor()&&this.getID()===e.getID()&&this.getName()===e.getName()}static isValidWkid(e){return!1}}class c{m_reason;m_vertexIndex1;m_vertexIndex2;assign(e){this.m_reason=e.m_reason,this.m_vertexIndex1=e.m_vertexIndex1,this.m_vertexIndex2=e.m_vertexIndex2}constructor(e,t,r){void 0===e?(this.m_reason=0,this.m_vertexIndex1=-1,this.m_vertexIndex2=-2):(this.m_reason=e,this.m_vertexIndex1=t,this.m_vertexIndex2=r)}clear(){this.m_reason=0,this.m_vertexIndex1=-1,this.m_vertexIndex2=-1}}const f={330:104878,500:104879,1300:104899,1450:104986,2230:104988,3800:104978,5e3:104919,6200:104906,8200:104909,9500:104927,9600:104977,1e4:[104911,104936],11e3:104941,11080:104872,11100:104907,12e3:104920,12400:104995,13e3:104948,14e3:[104923,104989],15e3:[104913,104954],15100:104976,16e3:[104926,104931],18e3:[104922,104982],21e3:104947,21500:104877,27e3:[104950,104957],29e3:104964,3e4:104921,31e3:104949,33e3:104946,4e4:[104914,104967],40600:104897,41900:104937,42e3:104951,43100:104993,49300:104924,50100:104939,54e3:104955,58200:104981,59500:104930,74e3:104961,77e3:104956,79e3:104962,83500:104910,85e3:104917,88800:104934,89200:104985,96e3:104997,104e3:104963,106500:104898,11e4:104938,133e3:104932,135e3:104983,17e4:104965,198200:104987,198630:104935,208e3:104966,235800:104952,249400:104929,252100:104980,255e3:104973,47e4:104972,529800:104942,531e3:104996,56e4:104928,561400:104979,578900:104945,584700:104959,593e3:104970,606e3:104999,718e3:104933,745700:104984,761400:104953,763500:104994,764e3:104940,788900:104958,1188300:104998,1195e3:104969,1352600:104968,1560800:104874,1562090:104915,1737400:104903,1821460:104918,1821490:104876,2409300:104912,2410300:104873,2439400:104974,2439700:104900,2575e3:104943,2631200:104875,2632345:104916,3393400:104904,3396190:[104905,104971],6051e3:104901,6051800:104902,637e4:104128,6370997:[4052,37008],6371e3:4035,6371007:4047,6371228:[4053,10346],6376045:[8042,8043],6376523:[4027,4901,4902],6376896:37007,6378135:[4122,4322,4324,4720,4985,4987],6378136:[4740,4923,7678,7680,9474,9475,104017,104018],6378137:[3823,3824,3888,3889,4017,4019,4023,4031,4040,4046,4055,4074,4075,4080,4081,4121,4126,4130,4133,4140,4141,4148,4151,4152,4163,4166,4167,4170,4171,4172,4173,4176,4180,4189,4190,4258,4269,4283,4318,4319,4326,4463,4466,4469,4470,4480,4482,4483,4490,4557,4558,4612,4617,4619,4624,4627,4659,4661,4667,4669,4670,4674,4686,4687,4693,4694,4702,4737,4742,4747,4749,4750,4755,4756,4757,4758,4759,4761,4762,4763,4764,4765,4883,4885,4887,4889,4893,4895,4898,4907,4909,4921,4925,4927,4929,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4965,4967,4971,4975,4977,4979,4981,4983,4989,4997,4999,5012,5013,5245,5246,5251,5252,5263,5264,5323,5324,5340,5342,5353,5354,5359,5360,5364,5365,5370,5371,5372,5373,5380,5381,5392,5393,5488,5489,5545,5546,5592,5593,5885,5886,6134,6135,6310,6311,6318,6319,6321,6322,6324,6325,6364,6365,6667,6668,6705,6706,6782,6783,6980,6982,6983,6987,6989,6990,7034,7035,7036,7037,7038,7039,7040,7041,7042,7072,7073,7084,7085,7086,7087,7133,7135,7136,7138,7139,7372,7373,7657,7659,7661,7663,7665,7685,7686,7797,7798,7816,7843,7844,7880,7881,7885,7886,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7915,7917,7919,7921,7923,7925,7927,7929,7931,8085,8086,8231,8232,8235,8237,8239,8240,8244,8246,8248,8249,8251,8252,8254,8255,8399,8403,8426,8427,8449,8542,8544,8545,8684,8685,8698,8699,8817,8818,8860,8888,8899,8900,8901,8902,8906,8907,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934,8936,8938,8940,8942,8944,8946,8948,8949,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,8993,8994,8995,8996,8997,8998,8999,9e3,9002,9003,9005,9006,9008,9009,9011,9012,9013,9014,9016,9017,9018,9019,9053,9054,9055,9056,9057,9059,9060,9061,9062,9063,9064,9065,9066,9067,9068,9069,9071,9072,9074,9075,9139,9140,9147,9148,9152,9153,9183,9184,9293,9294,9299,9308,9309,9332,9333,9364,9372,9379,9380,9384,9453,9469,9470,9546,9547,9695,9696,9701,9702,9739,9754,9755,9758,9763,9776,9777,9778,9779,9781,9782,9783,9784,9866,9871,9939,9964,9969,9974,9989,9990,10175,10177,10178,10185,10191,10196,10204,10209,10214,10219,10224,10229,10237,10272,10277,10283,10284,10298,10299,10300,10304,10305,10307,10309,10310,10311,10312,10327,10328,10413,10414,10468,10474,10475,10570,10571,10605,10606,10623,10628,10638,10639,10670,10671,10672,10673,10689,10690,10724,10725,10738,10739,10761,10762,10780,10781,10784,10785,10790,10791,10799,10800,10830,10831,10849,10860,10909,10910,10940,10941,10951,10952,10955,10956,10958,10959,10992,10993,11030,11033,11042,11043,11225,11226,20033,20040,20041,20045,20046,104009,104010,104011,104012,104013,104014,104015,104016,104019,104020,104021,104022,104024,104027,104028,104030,104031,104033,104048,104049,104050,104100,104107,104108,104110,104111,104114,104115,104116,104117,104118,104119,104120,104121,104122,104123,104124,104129,104133,104134,104137,104141,104142,104143,104144,104145,104179,104180,104181,104182,104183,104184,104185,104186,104199,104220,104221,104223,104257,104258,104259,104260,104286,104287,104602,104613,104644,104645,104646,104647,104653,104804,104896,104991],6378140:4610,6378145:[4025,4276,4760,4891,37001],6378150:37003,6378155:[37004,37207],6378160:[3821,4003,4021,4036,4202,4203,4237,4238,4291,4618,4708,5527,37231,104023,104136],6378166:37002,6378200:[4020,4229,4286,4303,4706],6378245:[4024,4147,4164,4178,4179,4191,4200,4205,4214,4284,4317,4555,4676,4677,4678,4991,4993,5560,5561,37257,104135],6378270:[4732,37005,37229],6378273:[4054,10345],6378300:[4029,4168,4174],6378388:[4022,4123,4153,4154,4158,4159,4160,4161,4165,4181,4182,4183,4184,4185,4192,4194,4195,4196,4199,4204,4207,4208,4215,4218,4221,4224,4225,4230,4231,4233,4235,4236,4247,4248,4249,4254,4255,4259,4264,4265,4271,4272,4274,4285,4287,4288,4292,4297,4309,4311,4313,4316,4472,4475,4611,4614,4615,4616,4621,4622,4623,4625,4626,4628,4629,4630,4631,4632,4633,4636,4637,4639,4641,4642,4643,4644,4645,4646,4658,4660,4662,4663,4664,4665,4668,4672,4673,4684,4688,4689,4690,4691,4692,4698,4704,4705,4707,4709,4710,4711,4712,4714,4715,4716,4718,4719,4721,4722,4724,4725,4727,4728,4729,4730,4733,4734,4735,4739,4741,4753,4754,4802,4803,4806,4809,4810,4823,4824,4900,5524,6883,8428,8430,8431,9248,9251,9253,9403,9893,10158,10249,10252,10635,10636,10735,10736,10758,37e3,37201,37204,37205,37212,37213,37214,37215,37216,37217,37218,37219,37221,37222,37224,37226,37227,37230,37232,37233,37234,37235,37237,37238,37241,37242,37245,37246,37247,37249,37250,37251,37253,37259,104104,104106,104125,104126,104127,104130,104138,104248],6378523:104786,24764e3:104960,25559e3:104944,60268e3:104925,71492e3:104908,6957e5:104975,6377397.155:[3819,3906,4004,4120,4124,4125,4149,4150,4156,4162,4211,4219,4257,4262,4280,4289,4294,4295,4301,4306,4308,4312,4314,4613,4666,4745,4746,4801,4804,4805,4808,4813,4814,4815,4818,4820,4904,5132,5228,5229,5681,5830,8351,9267,10268,10898,37255,104101,104102,104105,104131,104648,104696,104697,104990,104992],6377563.396:[4001,4188,4277,4278,4279],6377340.189:[4002,4299,4300],6377492.018:[4005,4273,4817],6377483.865280418:[4006,4293],6378293.645208759:[4007,4157,4302,4738,5464],6378206.4:[4008,4127,4128,4129,4135,4136,4137,4138,4139,4169,4216,4242,4253,4267,4608,4609,4638,4675,4683,4695,4717,4723,4726,4995,5451,5467,37220,37239,37243,37252,37260,104e3,104109,104112,104113,104132],6378450.047:[4009,4268],6378300.789:[4010,4281],6378249.2:[4011,4014,4155,4193,4206,4213,4223,4226,4227,4228,4252,4261,4266,4275,4282,4296,4304,4310,4315,4671,4807,4811,4816,4821,37223,37225,104139,104140,104261,104304],6378249.145:[4012,4013,4132,4134,4142,4143,4175,4197,4198,4201,4209,4210,4212,4220,4222,4232,4234,4246,4250,4251,4256,4260,4263,4270,4305,4307,4600,4601,4602,4603,4604,4605,4606,4607,4620,4679,4680,4696,4697,4699,4700,4701,4703,4713,4731,4736,4743,4744,4812,4819,6881,6882,6892,6894,8694,37206,37208,37211,37228,37240,37254,104025,104026,104032,104103,104305],6377276.345:[4015,4131,4144,4239,4240,4244,4682,5233,6207,37202,104256,104664,104693],6377298.556:[4016,4298],6377304.063:[4018,4245],6378298.3:[4028,4903],6378136.2:4032,6378136.3:4033,6378249.144808011:[4034,4241],20922931.8:[4042,4243],6377301.243:[4044,4145,37203],6377299.151:[4045,4146],6377019.27:[4657,10256,10260,10265],6378306.3696:[4748,4752],6377295.664:[4751,37006],6378136.5:[7682,7683],6371008.7714:104047,6378418.941:[104700,104726,104760],6378586.581:[104701,104743],6378505.809:104702,6378544.823:104703,6378490.569:104704,6378470.757:[104705,104776],6378403.701:[104706,104750],6378434.181:[104707,104724,104739,104764],6378454.907:104708,6378400.653:104709,6378567.378:104710,6378546.957:[104711,104717,104780],6378476.853:[104712,104736],6378411.321:[104713,104728],6378647.541:[104714,104715],6378514.953:[104716,104782],6378421.989:[104718,104770],6378481.425:[104719,104753,104774,104781],6378518.001:[104720,104725],6378521.049:[104721,104723,104731,104745,104748],6378464.661:104722,6378436.619:104727,6378574.389:[104729,104730],6378472.281:[104732,104756],6378498.189:[104733,104746],6378449.421:[104734,104766],6378525.621:[104735,104754],6378466.185:104737,6378496.665:104738,6378643.579:104740,6378559.758:104741,6378414.369:[104742,104763,104772],6378441.801:104744,6378502.761:[104747,104759,104773,104775],6378617.061:104749,6378624.681:[104751,104765],6378468.623:104752,6378445.763:[104755,104758,104761],6378670.401:104757,6378438.753:104762,6378543.909:104767,6378605.783:104768,6378540.861:104769,6378443.325:[104771,104784],6378548.481:104777,6378463.746:104778,6378426.561:104779,6378453.688:104783,6378530.193:104785,6378376.271:[104800,104828],6378471.92:104801,6378472.931:104802,6378411.351:104803,6378380.991:104805,6378414.96:104806,6378345.09:[104807,104819,104844,104870],6378412.542:104808,6378470.401:104809,6378376.331:104810,6378379.031:104811,6378407.621:104812,6378376.811:[104813,104827],6378313.92:104814,6378414.93:104815,6378413.021:104816,6378380.381:104817,6378530.851:104818,6378591.521:104820,6378378.881:104821,6378408.481:[104822,104832],6378375.601:[104823,104838],6378408.041:104824,6378655.071:104825,6378409.151:104826,6378315.7:[104829,104840,104845,104851],6378285.86:[104830,104835,104859],6378379.301:104831,6378560.121:104833,6378531.821:104834,6378500.6:104836,6378376.041:104837,6378406.601:104839,6378438.991:104841,6378345.42:104842,6378593.86:104843,6378381.271:[104846,104847],6378413.671:104848,6378344.377:104849,6378563.891:104850,6378408.091:104852,6378377.671:104853,6378472.751:104854,6378412.511:104855,6378407.281:104856,6378534.451:104857,6378406.051:104858,6378532.921:104860,6378380.091:104861,6378408.941:104862,6378624.171:104863,6378377.411:104864,6378474.591:104865,6378407.141:104866,6378376.871:104867,6378375.251:104868,6378405.971:104869,6378437.651:104871};class x extends d{constructor(e){if("number"==typeof e)return super(),this.m_factor=e,void(this.m_wkid=0);super(e)}getUnitType(){return 1}convertFromRadians(e){return e/this.getUnitToBaseFactor()}convertToRadians(e){return e*this.getUnitToBaseFactor()}}function P(e){return new kn}class y{x;y;z;constructor(e,t,r){void 0===e?(this.x=new l.Z,this.y=new l.Z,this.z=new l.Z):e instanceof o.k?(this.x=new l.Z(e.x),this.y=new l.Z(e.y),this.z=new l.Z(e.z)):e instanceof l.Z?(this.x=e.clone(),this.y=t.clone(),this.z=r.clone()):(0,i.b)("EPoint3D constructor")}dotProduct(e){return this.x.mulE(e.x).addE(this.y.mulE(e.y)).addE(this.z.mulE(e.z))}crossProduct(e){return new y(this.y.mulE(e.z).subE(this.z.mulE(e.y)),this.z.mulE(e.x).subE(this.x.mulE(e.z)),this.x.mulE(e.y).subE(this.y.mulE(e.x)))}crossProductVector(e){let t=this.y.mulE(e.z).subE(e.y.mulE(this.z)),r=e.x.mulE(this.z).subE(this.x.mulE(e.z)),s=this.x.mulE(e.y).subE(e.x.mulE(this.y));return new y(t,r,s)}sqrLength(){return this.x.mulE(this.x).addE(this.y.mulE(this.y)).addE(this.z.mulE(this.z))}length(){return this.sqrLength().sqrt()}static distance(e,t){return e.sub(t).length()}negate(){return new y(this.x.negate(),this.y.negate(),this.z.negate())}add(e){return new y(this.x.addE(e.x),this.y.addE(e.y),this.z.addE(e.z))}sub(e){return new y(this.x.subE(e.x),this.y.subE(e.y),this.z.subE(e.z))}subThis(e){return this.x.subThisE(e.x),this.y.subThisE(e.y),this.z.subThisE(e.z),this}addThis(e){return this.x.addThisE(e.x),this.y.addThisE(e.y),this.z.addThisE(e.z),this}mul(e){return new y(this.x.mulE(e),this.y.mulE(e),this.z.mulE(e))}div(e){return new y(this.x.divE(e),this.y.divE(e),this.z.divE(e))}eq(e){return this.x.eq(e.x)&&this.y.eq(e.y)&&this.z.eq(e.z)}isZero(){return this.x.isZero()&&this.y.isZero()&&this.z.isZero()}value(){return o.k.construct(this.x.value(),this.y.value(),this.z.value())}}class E{m_origin=new o.k;m_normal=new o.k;m_axisX=new o.k;m_axisY=new o.k;constructor(e){if(!e)return this.m_origin=new o.k,this.m_normal=new o.k(0,0,1),this.m_axisX=new o.k(1,0,0),void(this.m_axisY=new o.k(0,1,0));e.pt0&&e.pt1&&e.pt2?this.setFromPoints(e.pt0,e.pt1,e.pt2):(0,i.g)(0,`unimplemented constructor options ${JSON.stringify(e)}`)}assign(e){return(0,i.g)(0),this}set(e,t,r,s){(0,i.g)(0)}setFromPoints(e,t,r){let s=t.sub(e),i=r.sub(e);this.m_normal=s.crossProductVector(i);let n=!0;if(this.m_normal.isZero()){if(n=!1,s.isZero()&&(s=i),s.isZero())return this.m_normal.setCoords(0,0,1),this.m_axisX.setCoords(1,0,0),this.m_axisY.setCoords(0,1,0),this.m_origin=e,!1;this.m_axisX=s.getUnitVector(),this.m_normal=this.m_axisX.createAPerpendicular()}else this.m_normal.normalizeThis(),this.m_axisX=s.getUnitVector();return this.m_axisY=this.m_normal.crossProductVector(this.m_axisX),this.m_origin=e,n}getCoord(e,t){return(0,i.g)(0),{}}getCoord2D(e){return(0,i.g)(0),{}}getCoordX(e,t){return(0,i.g)(0),0}getCoordY(e,t){return(0,i.g)(0),0}getCoordZ(e,t){return(0,i.g)(0),0}setPreferredAxisX(e){(0,i.g)(0)}getOrigin(){return(0,i.g)(0),{}}getNormal(){return(0,i.g)(0),{}}getAxisX(){return this.m_axisX.clone()}getAxisY(){return this.m_axisY.clone()}setAxisX(e,t=!1){(0,i.g)(0)}setAxisY(e,t=!1){(0,i.g)(0)}recalculateAxisY(){(0,i.g)(0)}setOrigin(e){(0,i.g)(0)}setNormal(e,t){(0,i.g)(0)}intersect(e,t){return(0,i.g)(0),!1}intersectLine(e){return(0,i.g)(0),0}intersectLineEx(e,t){return(0,i.g)(0),0}closestCoordinate(e){let t=e.sub(this.m_origin),r=new l.P;return r.x=t.dotProduct(this.m_axisX),r.y=t.dotProduct(this.m_axisY),r}projectVector(e){return(0,i.g)(0),{}}signedDistance(e){return(0,i.g)(0),0}distance(e){return(0,i.g)(0),0}}function S(e,t){return!1}function C(e,t,r,s,n=100,a=S){(0,i.g)(s>0);let o,m,h,g,u,_,p,d,c,f,x,P,y=0,E=0,C=(0,l.a2)();t>r&&(r=(0,l.s)(t,t=r));let I=e(t),v=e(r);I<v?(o=m=h=t,g=u=_=I):(o=m=h=r,g=u=_=v);let G=0;for(;G<n&&(P=.5*(r-t),c=t+P,f=s*(Math.abs(o)+.25),x=2*f,!(a(o,g)||Math.abs(o-c)<=x-P));++G){if(Math.abs(E)>f){let e=(o-m)*(g-_),s=(o-h)*(g-u),i=(o-h)*s-(o-m)*e;s=2*(s-e),s>0&&(i=-i),s=Math.abs(s);let n=E;E=y,Math.abs(i)>=Math.abs(s*n*.5)||i<=s*(t-o)||i>=s*(r-o)?(E=o>=c?t-o:r-o,y=(0,l.a2)()*E):(y=i/s,d=o+y,(d-t<x||r-d<x)&&(y=c-o<0?-Math.abs(f):Math.abs(f)))}else E=o>=c?t-o:r-o,y=E*C;d=o+y,p=e(d),p<g?(d>=o?t=o:r=o,h=m,m=o,o=d,_=u,u=g,g=p):(d<o?t=d:r=d,p<=u||m===o?(h=m,m=d,_=u,u=p):(p<=_||h===o||h===m)&&(h=d,_=p))}return(0,l.o)(o,g)}function I(e,t,r){return e>r?e-=Math.ceil((e-r)/l.n)*l.n:e<t&&(e+=Math.ceil((t-e)/l.n)*l.n),e}function v(e,t,r){return function(e,t,r){let s=r.x,i=r.y;return G(e,t,Math.cos(s),Math.sin(s),Math.cos(i),Math.sin(i),0)}(e,t,r)}function G(e,t,r,s,i,n,a){let l=e/Math.sqrt(1-t*n*n),m=l+a,h=m*i*r,g=m*i*s,u=(l*(1-t)+a)*n;return o.k.construct(h,g,u)}function w(e,t,r){let s=new l.Z,i=new l.Z,n=new l.Z,a=new l.Z;s.setCos(r.x),i.setSin(r.x),n.setCos(r.y),a.setSin(r.y);let o=a.negate().mulE(a.mul(t)).add(1).sqrt(),m=new l.Z(e).divE(o),h=m.mulE(n).mulE(s),g=m.mulE(n).mulE(i),u=m.mul(1-t).mulE(a);return new y(h,g,u)}function b(e,t,r){let s=r.x,i=r.y,n=r.z,a=Math.atan2(i,s),o=Math.sqrt(s*s+i*i),m=Math.atan2(n,(1-t)*o);return l.P.construct(a,m)}function T(e,t,r){let s=1-t,i=e/Math.sqrt((0,l.e)(r.x)+(0,l.e)(r.y)+(0,l.e)(r.z)/s);return r.mul(i)}function N(e,t,r,s,i){let n=v(e,t,r),a=v(e,t,s);return b(0,t,o.k.lerp(n,a,i))}function D(e,t,r,n,a,m=0,h){if(2===m||3===m)return function(e,t,r,s,i,n=!1,a){let m=T(e,t,r);if(n){let n=new E({pt0:new o.k(0,0,0),pt1:s,pt2:i}),h=n.closestCoordinate(r),g=n.closestCoordinate(s),u=n.closestCoordinate(i),_=l.P.getClosestCoordinate(g,u,h),p=T(e,t,o.k.lerp(s,i,_)),d=o.k.distance(p,m);return a&&a.assign(p),(0,l.o)(_,d)}let h=r=>{let n=T(e,t,o.k.lerp(s,i,r));return o.k.distance(n,m)},g=o.k.distance(s,i);if(g>0){let{first:r,second:n}=C(h,0,1,A(e,g));return a&&a.assign(T(e,t,o.k.lerp(s,i,r))),(0,l.o)(r,n)}{let e=o.k.distance(r,s);return a&&a.assign(r),(0,l.o)(.5,e)}}(e,t,r,n,a,3===m,h);let g=b(0,t,r),u=r=>{let l=b(0,t,o.k.lerp(n,a,r));return function(e,t,r,n,a){switch((0,i.g)(r.isFinite()&&n.isFinite()),a){case 0:return function(e,t,r,i){let n={stack:[],error:void 0,hasError:!1};try{let a=(0,s.mS)(n,new Sa,!1);return Da.geodeticDistance(e,t,r.x,r.y,i.x,i.y,a,null,null,va.PE_LINETYPE_GEODESIC),a.val}catch(e){n.error=e,n.hasError=!0}finally{(0,s.hk)(n)}}(e,t,r,n);case 1:return function(e,t,r){let i={stack:[],error:void 0,hasError:!1};try{let n=(0,s.mS)(i,new Sa,!1);return Da.greatEllipticDistance(e,t,r.x,r.y,r.x,r.y,n,null,null),n.val}catch(e){i.error=e,i.hasError=!0}finally{(0,s.hk)(i)}}(e,t,r);case 2:case 3:{let s=v(e,t,r),i=v(e,t,n);return o.k.distance(s,i)}default:(0,i.a)("")}}(e,t,g,l,m)},_=o.k.distance(n,a);if(_>0){let{first:r,second:s}=C(u,0,1,A(e,_));return h&&h.assign(T(e,t,o.k.lerp(n,a,r))),(0,l.o)(r,s)}{let e=u(0);return h&&h.assign(n),(0,l.o)(.5,e)}}function V(e,t,r,s,i,n){if(n[0]=NaN,n[1]=NaN,Math.abs(r.x-s.x)>Math.PI||Math.abs(r.y)>l.l||Math.abs(s.y)>l.l||(Math.abs(r.y)===l.l||Math.abs(s.y)===l.l)&&r.x!==s.x||Math.abs(i)>=l.l||r.y>0&&s.y>0&&r.y>i&&s.y>i||r.y<0&&s.y<0&&r.y<i&&s.y<i)return 0;let o=a.Z.constructPoint2D(r),m=a.Z.constructPoint2D(s),h=w(1,t,o),g=w(1,t,m),u=h.crossProductVector(g);if(u.z.isZero())return l.E.construct(r.y,s.y).containsCoordinate(i)?(n[0]=r.x,1):0;let _=u.x.divE(u.z.negate()),p=u.y.divE(u.z.negate()),d=_.mulE(_).addE(p.mulE(p)).sqrt();if(d.isZero()||_.isZero()&&p.isZero())return 0===i?(n[0]=r.x,n[1]=s.x,2):0;let c=(1-t)*Math.tan(i)/d.value();if(Math.abs(c)>1)return 0;let f=Math.acos(c),x=Math.atan2(p.value(),_.value()),P=x-f,y=x+f,E=Math.min(r.x,s.x),S=Math.max(r.x,s.x);I(P,E,S),0===i?y=P:I(y,E,S);let C=0;return E<=P&&P<=S&&(n[C]=P,C++),y!==P&&E<=y&&y<=S&&(n[C]=y,C++),C}function k(e,t){t[0]>.5*Math.PI?(e[0]+=Math.PI,t[0]=Math.PI-t[0]):t[0]<.5*-Math.PI&&(e[0]-=Math.PI,t[0]=-Math.PI-t[0]),(0,i.g)(t[0]>=.5*-Math.PI&&t[0]<=.5*Math.PI)}function F(e,t,r,s,i){s=(0,l.a)(s,-l.l,l.l),i=(0,l.a)(i,-l.l,l.l);let n,a=l.l-.03;n=s>a&&i>a||s<-a&&i<-a?function(e,t,r){let s=1;if(t<0&&(s=-1,t=-t,r=-r),0!==e){let i=e*e,n=i*e,a=[1,(1+11*e)/12,(1+118*e+241*i)/360,(1+1089*e+10419*i+8651*n)/20160,(1+9836*e+318246*i+1027436*n+n*e*458881)/1814400],o=t=>{let r=0,s=(0,l.e)(t)/(e-1);for(let e=a.length-1;e>=0;--e)r=a[e]+r*s;return r*=-(0,l.e)(t/(1-e)),r},m=o(l.l-t);return(o(l.l-r)-m)*s}{let e=l.l-t,i=l.l-r,n=-4*(0,l.e)(Math.sin(e/2));return(-4*(0,l.e)(Math.sin(i/2))-n)*s}}(e,s,i):H(e,i)-H(e,s);let o=function(e){return 1-e}(e);return.5*(r-t)*n*o}function H(e,t){if(0===t)return 0;let r=Math.sin(t),s=r,i=r;return 0!==e&&(s/=1-e*r*r,i=r*(0,l.z)(Math.sqrt(e)*r)),s+i}function A(e,t){if(0!==t){let r=e*(0,l.a1)()/t;return Math.min(r,1e-10)}return 0}class M{m_parent;m_currentShift=63n;m_currentElt=0n;m_iCurrentElt=-1;m_aiSetElts;constructor(e){this.m_parent=e,this.m_aiSetElts=e.m_bits.flatMap((e,t)=>t)}next(){if(this.m_currentShift++,64n===this.m_currentShift){if(this.m_iCurrentElt++,this.m_iCurrentElt===this.m_aiSetElts.length)return M.npos();this.m_currentShift=0n,this.m_currentElt=this.m_parent.m_bits[this.m_aiSetElts[this.m_iCurrentElt]]}for(;this.m_currentShift<63n&&!(this.m_currentElt&1n<<this.m_currentShift);)this.m_currentShift++;return this.m_currentElt&1n<<this.m_currentShift?64*this.m_aiSetElts[this.m_iCurrentElt]+Number(this.m_currentShift):this.next()}static npos(){return 2**53-1}}function U(e){return 1n<<(63n&BigInt(e))}function q(e){return e>>6}class B{m_bits=[];constructor(e){void 0!==e&&e.copy&&(this.m_bits=e.copy.m_bits.slice())}assignMove(){return this}assignCopy(){return this}hasBit(e){let t=U(e),r=q(e);return void 0!==this.m_bits[r]&&!!(this.m_bits[r]&t)}setBit(e){let t=U(e),r=q(e);void 0===this.m_bits[r]&&(this.m_bits[r]=0n),this.m_bits[r]|=t}clearBit(e){}flipBit(e){let t=U(e),r=q(e);return void 0===this.m_bits[r]&&(this.m_bits[r]=0n),this.m_bits[r]^=t,0n!==(this.m_bits[r]&t)}clear(){this.m_bits.length=0}isZero(){let e=0;return this.m_bits.forEach(t=>{e|=t?2:1}),!(2&e)}equals(e){if(this===e)return!0;if(this.m_bits.length!==e.m_bits.length)return!1;let t=0;return this.m_bits.forEach((r,s)=>{t|=r===e.m_bits[s]?2:1}),!(1&t||(e.m_bits.forEach((e,r)=>{t|=e===this.m_bits[r]?2:1}),1&t))}notEquals(e){return!this.equals(e)}assignOr(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]|=e}),this}assignSubtract(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=~e)}),this}assignAnd(e){return e.m_bits.forEach((e,t)=>{void 0!==this.m_bits[t]&&(this.m_bits[t]&=e)}),this}assignXor(e){return e.m_bits.forEach((e,t)=>{void 0===this.m_bits[t]?this.m_bits[t]=e:this.m_bits[t]^=e}),this}getHashCode(){return this.m_bits.reduce((e,t)=>(0,l.O)(e,t),(0,l.C)(0))}getUnorderedBitIterator(){return new M(this)}}class O{m_map=new Map;m_hf;m_ef;constructor(e,t){this.m_hf=e,this.m_ef=t}add(e){let t=this.m_hf(e);if(!this.m_map.has(t))return this.m_map.set(t,e),this;let r=this.m_map.get(t);return r instanceof Array?r.find(t=>this.m_ef(t,e))||r.push(e):this.m_ef(r,e)||this.m_map.set(t,[r,e]),this}clear(){this.m_map.clear()}delete(e){return!1}has(e){let t=this.m_hf(e);if(!this.m_map.has(t))return!1;let r=this.m_map.get(t);return r instanceof Array?void 0!==r.find(t=>this.m_ef(t,e)):this.m_ef(r,e)}get(e){let t=this.m_hf(e),r=this.m_map.get(t);if(void 0!==r)return r instanceof Array?r.find(t=>this.m_ef(t,e)):r}get size(){let e=0;for(let t of this.m_map.values())e+=t instanceof Array?t.length:1;return e}forEach(e,t){}[Symbol.iterator](){return(new Set)[Symbol.iterator]()}entries(){return(new Set).entries()}keys(){return(new Set).keys()}values(){return(new Set).values()}get[Symbol.toStringTag](){return"ValueSet"}}class Y extends o.F{m_helper;m_bufferLeft=new a.S;m_bufferRight=new a.S;m_intervalLeft=l.E.constructEmpty();m_intervalRight=l.E.constructEmpty();m_yScanline=NaN;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=t,i=e.getElement(r);this.m_helper.querySegmentXY(s,this.m_bufferLeft),this.m_helper.querySegmentXY(i,this.m_bufferRight);let n=this.m_bufferLeft.get(),a=this.m_bufferRight.get();if(this.m_intervalLeft.setCoords(n.getStartX(),n.getEndX()),this.m_intervalRight.setCoords(a.getStartX(),a.getEndX()),this.m_intervalLeft.vmax<this.m_intervalRight.vmin)return-1;if(this.m_intervalLeft.vmin>this.m_intervalRight.vmax)return 1;let o=n.getStartY()===n.getEndY(),l=a.getStartY()===a.getEndY();if(o||l){if(o&&l)return 0;if(n.getStartY()===a.getStartY()&&n.getStartX()===a.getStartX())return o?1:-1;if(n.getEndY()===a.getEndY()&&n.getEndX()===a.getEndX())return o?-1:1}let m=n.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalLeft.vmin),h=a.intersectionOfYMonotonicWithAxisX(this.m_yScanline,this.m_intervalRight.vmin);if(m===h){let e=n.getEndY(),t=a.getEndY(),r=Math.min(e,t),s=.5*(r+this.m_yScanline);s===this.m_yScanline&&(s=r),m=n.intersectionOfYMonotonicWithAxisX(s,this.m_intervalLeft.vmin),h=a.intersectionOfYMonotonicWithAxisX(s,this.m_intervalRight.vmin)}return m<h?-1:+(m>h)}setY(e){this.m_yScanline=e}}class X{m_parent;m_segmentBuffer=new a.S;m_point=l.P.getNAN();constructor(e){this.m_parent=e}setPointXY(e){this.m_point.assign(e)}compare(e,t){let r=e.getElement(t);this.m_parent.querySegmentXY(r,this.m_segmentBuffer);let s=this.m_segmentBuffer.get(),i=new l.E;if(i.setCoords(s.getStartX(),s.getEndX()),this.m_point.x<i.vmin)return-1;if(this.m_point.x>i.vmax)return 1;let n=s.intersectionOfYMonotonicWithAxisX(this.m_point.y,this.m_point.x);return this.m_point.x<n?-1:+(this.m_point.x>n)}}var R,L,z;function W(e,t){return{parentage:e,rank:t}}function j(e,t){let r=e.length;if(r!==t.length)return!1;let s=e[0].parentage;if(s!==t[0].parentage)return!1;if(-1===s)return!0;for(let s=1;s<r;++s)if(e[s].parentage!==t[s].parentage)return!1;return!0}function Z(e,t,r){r.length=0;let s=!1;{let i=e.getHalfEdgeVertexIterator(t);for(;-1!==i;){let t=e.getVertexFromVertexIterator(i),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);s||=a>=0,r.push(W(a,n)),i=e.incrementVertexIterator(i)}}{let i=e.getHalfEdgeVertexIterator(e.getHalfEdgeTwin(t));for(;-1!==i;){let t=e.getVertexFromVertexIterator(i),n=e.getShape().getSegmentRank(t),a=e.getShape().getSegmentParentage(t);s||=a>=0,r.push(W(a,n)),i=e.incrementVertexIterator(i)}}s&&r.sort((e,t)=>e.rank>t.rank?-1:e.rank<t.rank?1:e.parentage<t.parentage?-1:+(e.parentage>t.parentage)),-1===r[0].parentage&&(r.length=1)}(L=R||={})[L.enumInputModeBuildGraph=0]="enumInputModeBuildGraph",L[L.enumInputModeSimplifyAlternate=1]="enumInputModeSimplifyAlternate",L[L.enumInputModeSimplifyWinding=2]="enumInputModeSimplifyWinding",function(e){e[e.enumSegmentParentageBreakNode=1]="enumSegmentParentageBreakNode",e[e.enumPathBreakNode=2]="enumPathBreakNode"}(z||={});class K{m_shape=null;m_clusterData=new o.S(8);m_clusterVertices=new o.S(2);m_firstCluster=-1;m_lastCluster=-1;m_halfEdgeData=new o.S(8);m_chainData=new o.S(8);m_chainAreas=null;m_chainPerimeters=null;static c_EdgeParentageMask=2147483647;static c_EdgeBitMask=1<<31;m_universeChain=-1;m_simplifiedGeometry=-1;m_edgeIndices=[];m_clusterIndices=[];m_chainIndices=[];m_bBuildGeometryParentageSets=!1;m_chainBitSetIndex=-1;m_edgeBitSetIndex=-1;m_edgeBitSetIndexLeft=-1;m_emptyBitSet=null;m_geometryMapID=null;m_uniqueBitSets=null;m_chainBitSets=[];m_edgeBitSets=[];m_checkDirtyPlanesweepTolerance=NaN;m_geometryIDIndex=-1;m_clusterIndex=-1;m_halfEdgeIndex=-1;m_tmpHalfEdgeParentageIndex=-1;m_tmpHalfEdgeParentageIndexLeft=-1;m_tmpHalfEdgeWindingNumberIndex=-1;m_tmpHalfEdgeOddEvenNumberIndex=-1;m_segmentParentageIndex=-1;m_segmentIndexHe=-1;m_clusterBreakNodeIndex=-1;m_universeGeomID=-1;m_pointCount=0;m_progressCounter=0;m_bBuildChains=!0;m_bDirtyCheckFailed=!1;constructor(){}setCheckDirtyPlanesweepTolerance(e){this.m_checkDirtyPlanesweepTolerance=e}dirtyCheckFailed(){return this.m_bDirtyCheckFailed}getShape(){return this.m_shape}setEditShape(e,t,r=!0,s=!1){s?this.setEditShapeImpl3D_(e,R.enumInputModeBuildGraph,null,t,!1):this.setEditShapeImpl_(e,R.enumInputModeBuildGraph,null,t,r)}setAndSimplifyEditShapeAlternate(e,t,r=null,s=!1){let n=[];n.push(t),this.m_simplifiedGeometry=t,s?this.setEditShapeImpl3D_(e,R.enumInputModeSimplifyAlternate,n,r,!1):this.setEditShapeImpl_(e,R.enumInputModeSimplifyAlternate,n,r,e.getGeometryType(t)===i.G.enumPolygon)}setAndSimplifyEditShapeWinding(e,t,r=null){let s=[];s.push(t),this.m_simplifiedGeometry=t,this.setEditShapeImpl_(e,R.enumInputModeSimplifyWinding,s,r,!0)}removeShape(){null!==this.m_shape&&(-1!==this.m_geometryIDIndex&&(this.m_shape.removeGeometryUserIndex(this.m_geometryIDIndex),this.m_geometryIDIndex=-1),-1!==this.m_clusterIndex&&(this.m_shape.removeUserIndex(this.m_clusterIndex),this.m_clusterIndex=-1),-1!==this.m_halfEdgeIndex&&(this.m_shape.removeUserIndex(this.m_halfEdgeIndex),this.m_halfEdgeIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1),-1!==this.m_segmentParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_segmentParentageIndex),this.m_segmentParentageIndex=-1),-1!==this.m_segmentIndexHe&&(this.deleteUserIndexForHalfEdges(this.m_segmentIndexHe),this.m_segmentIndexHe=-1),-1!==this.m_clusterBreakNodeIndex&&(this.deleteUserIndexForClusters(this.m_clusterBreakNodeIndex),this.m_clusterBreakNodeIndex=-1),this.deleteEdgeBitSets_(),this.deleteChainBitSets_(),this.m_emptyBitSet=null,this.m_geometryMapID=null,this.m_shape=null,this.m_clusterData.deleteAll(!0),this.m_clusterVertices.deleteAll(!0),this.m_firstCluster=-1,this.m_lastCluster=-1,this.m_halfEdgeData.deleteAll(!0),this.m_edgeIndices.length=0,this.m_clusterIndices.length=0,this.m_chainIndices.length=0,this.m_chainData.deleteAll(!0),this.m_universeChain=-1,this.m_chainAreas=null)}getClusterHalfEdge(e){return this.m_clusterData.getField(e,2)}queryXY(e,t){let r=this.getClusterVertexIndex_(e);t.assign(this.m_shape.getXYWithIndex(r))}queryXYZ(e,t){(0,i.g)(0)}getClusterParentage(e){return this.m_clusterData.getField(e,1)}getFirstCluster(){return this.m_firstCluster}getPrevCluster(e){return this.m_clusterData.getField(e,3)}getNextCluster(e){return this.m_clusterData.getField(e,4)}getClusterChain(e){return this.m_clusterData.getField(e,6)}getClusterVertexIterator(e){return this.m_clusterData.getField(e,7)}incrementVertexIterator(e){return this.m_clusterVertices.getField(e,1)}getVertexFromVertexIterator(e){return this.m_clusterVertices.getField(e,0)}getClusterUserIndex(e,t){let r=this.getClusterIndex_(e),s=this.m_clusterIndices[t];return s.size()<=r?-1:s.read(r)}setClusterUserIndex(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1),i.write(s,r)}hasClusterUserIndexFlags(e,t,r){if(-1===t)return!1;let s=this.getClusterUserIndex(e,t);return-1!==s&&0!==(r&s)}setClusterUserIndexFlags(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1);let n=i.read(s);-1===n&&(n=0),i.write(s,r|n)}clearClusterUserIndexFlags(e,t,r){let s=this.getClusterIndex_(e),i=this.m_clusterIndices[t];i.size()<=s&&i.resize(this.m_clusterData.size(),-1);let n=i.read(s);-1===n&&(n=0),i.write(s,~r&n)}createUserIndexForClusters(e=-1){let t=new o.a(this.m_clusterData.capacity(),e);for(let e=0,r=this.m_clusterIndices.length;e<r;e++)if(null===this.m_clusterIndices[e])return this.m_clusterIndices[e]=t,e;return this.m_clusterIndices.push(t),this.m_clusterIndices.length-1}deleteUserIndexForClusters(e){this.m_clusterIndices[e]=null}getHalfEdgeOrigin(e){return this.m_halfEdgeData.getField(e,1)}getHalfEdgeTo(e){return this.getHalfEdgeOrigin(this.getHalfEdgeTwin(e))}getHalfEdgeTwin(e){return this.m_halfEdgeData.getField(e,4)}getHalfEdgePrev(e){return this.m_halfEdgeData.getField(e,5)}getHalfEdgeNext(e){return this.m_halfEdgeData.getField(e,6)}getHalfEdgeChain(e){return this.m_halfEdgeData.getField(e,2)}getHalfEdgeFaceParentage(e){return this.getChainParentage(this.getHalfEdgeChain(e))}getHalfEdgeVertexIterator(e){return this.m_halfEdgeData.getField(e,7)}getHalfEdgeFromXY(e,t){this.queryXY(this.getHalfEdgeOrigin(e),t)}getHalfEdgeToXY(e,t){this.queryXY(this.getHalfEdgeTo(e),t)}isHalfEdgeCurve(e){return-1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}getHalfEdgeFromXYZ(e,t){(0,i.g)(0)}getHalfEdgeToXYZ(e,t){(0,i.g)(0)}getHalfEdgeParentage(e){return this.m_halfEdgeData.getField(e,3)&K.c_EdgeParentageMask}getHalfEdgeUserIndex(e,t){let r=this.getHalfEdgeIndex_(e),s=this.m_edgeIndices[t];return s.size()<=r?-1:s.read(r)}setHalfEdgeUserIndex(e,t,r){let s=this.getHalfEdgeIndex_(e),i=this.m_edgeIndices[t];i.size()<=s&&i.resize(this.m_halfEdgeData.size(),-1),i.write(s,r)}createUserIndexForHalfEdges(e){void 0===e&&(e=-1);let t=new o.a(this.m_halfEdgeData.capacity(),e);for(let e=0,r=this.m_edgeIndices.length;e<r;e++)if(null===this.m_edgeIndices[e])return this.m_edgeIndices[e]=t,e;this.m_edgeIndices.push(t);let r=this.m_edgeIndices.length-1;return(0,i.g)(r>=0&&r<=2**53-1),r}deleteUserIndexForHalfEdges(e){this.m_edgeIndices[e]=null}deleteEdgesBreakFaces_(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.getHalfEdgeChain(r),i=this.getHalfEdgeTwin(r),n=this.getHalfEdgeChain(i);this.setChainHalfEdge_(s,-1),this.setChainHalfEdge_(n,-1),this.updateVertexToHalfEdgeConnection_(r,!0),this.deleteEdgeImpl_(r)}}doesHalfEdgeBelongToAPolygonInterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolygonExterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolygonBoundary(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolylineInterior(e,t){return(0,i.g)(0),!1}doesHalfEdgeBelongToAPolylineExterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonInterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonExterior(e,t){return(0,i.g)(0),!1}doesClusterBelongToAPolygonBoundary(e,t){return(0,i.g)(0),!1}getFirstChain(){return this.m_universeChain}getChainHalfEdge(e){return this.m_chainData.getField(e,1)}getChainParentage(e){return this.m_chainData.getField(e,2)}getChainParent(e){return this.m_chainData.getField(e,3)}getChainFirstIsland(e){return this.m_chainData.getField(e,4)}getChainNextInParent(e){return this.m_chainData.getField(e,5)}getChainNext(e){return this.m_chainData.getField(e,7)}getChainArea(e){let t=this.getChainIndex_(e),r=this.m_chainAreas.read(t);return Number.isNaN(r)&&(this.updateChainAreaAndPerimeter_(e),r=this.m_chainAreas.read(t)),r}getChainPerimeter(e){return(0,i.g)(0),0}getChainUserIndex(e,t){let r=this.getChainIndex_(e),s=this.m_chainIndices[t];return s.size()<=r?-1:s.read(r)}setChainUserIndex(e,t,r){let s=this.getChainIndex_(e),i=this.m_chainIndices[t];i.size()<=s&&i.resize(this.m_chainData.size(),-1),i.write(s,r)}createUserIndexForChains(){let e=new o.a(this.m_chainData.capacity(),-1);for(let t=0,r=this.m_chainIndices.length;t<r;t++)if(null===this.m_chainIndices[t])return this.m_chainIndices[t]=e,t;return this.m_chainIndices.push(e),this.m_chainIndices.length-1}deleteUserIndexForChains(e){this.m_chainIndices[e]=null}extractPolygonFromChainAndIslands(e,t,r,s){let n=-1===t?e.createGeometry(i.G.enumPolygon):t,o=new a.S;this.extractPolygonPathFromChain_(e,n,r,s,o);for(let t=this.getChainFirstIsland(r);-1!==t;t=this.getChainNextInParent(t))this.extractPolygonPathFromChain_(e,n,t,s,o);return n}getGeometryID(e){let t=this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex);return(0,i.g)(t>=0),1<<Math.min(t,31)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_clusterIndex)}getHalfEdgeFromVertex(e){return this.m_shape.getUserIndex(e,this.m_halfEdgeIndex)}buildGeometryParentageSets(){this.m_bBuildGeometryParentageSets=!0}getChainBitSet(e){if((0,i.g)(this.m_bBuildGeometryParentageSets),-1===this.m_chainBitSetIndex)return this.getEmptySet();let t=this.getChainUserIndex(e,this.m_chainBitSetIndex);(0,i.g)(t>=0);let r=this.m_chainBitSets.at(t);return r||=this.getEmptySet(),r}getChainBoundaryBitSet(e){(0,i.g)(this.m_bBuildGeometryParentageSets);let t=new B,r=e=>{let r=this.getChainHalfEdge(e),s=r;do{let e=this.getEdgeBitSet_(s);null!==e&&t.assignOr(e);let r=this.getEdgeBitSet_(this.getHalfEdgeTwin(s));null!==r&&t.assignOr(r),s=this.getHalfEdgeNext(s)}while(s!==r)};r(e);for(let t=this.getChainFirstIsland(e);-1!==t;t=this.getChainNextInParent(t))r(e);return t}getChainPolygons(e){return(0,i.g)(0),[]}getGeometriesFromBits(e){if(!this.m_bBuildGeometryParentageSets||null===e)return[];if(null===this.m_geometryMapID){this.m_geometryMapID=new Map;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))this.m_geometryMapID.set(this.m_shape.getGeometryUserIndex(e,this.m_geometryIDIndex),e)}let t=[],r=e.getUnorderedBitIterator();for(let e=r.next();e!==M.npos();e=r.next())(0,i.g)(this.m_geometryMapID.has(e)),t.push(this.m_geometryMapID.get(e));return t}getVertexDominant(e,t){if(-1===t)return e;let r=this.getClusterFromVertex(e);return this.getVertexDominantFromCluster(r,t)}getVertexDominantFromCluster(e,t){if(-1!==t){let r=-1;for(let s=this.getClusterVertexIterator(e);-1!==s;s=this.incrementVertexIterator(s)){let e=this.getVertexFromVertexIterator(s);-1===r&&(r=e);let i=this.m_shape.getPathFromVertex(e);if(this.m_shape.getGeometryFromPath(i)===t){r=e;break}}return r}{let t=this.getClusterVertexIterator(e);return-1===t?-1:this.getVertexFromVertexIterator(t)}}isBreakNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode)}setBreakNode(e,t){(0,i.g)(-1!==this.m_clusterBreakNodeIndex),t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumSegmentParentageBreakNode)}isStrongPathNode(e){return this.hasClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode)}setStrongPathNode(e,t){if(-1===this.m_clusterBreakNodeIndex){if(!t)return;this.m_clusterBreakNodeIndex=this.createUserIndexForClusters()}t?this.setClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode):this.clearClusterUserIndexFlags(e,this.m_clusterBreakNodeIndex,z.enumPathBreakNode)}getSegmentParentage(e){if(-1===this.m_segmentParentageIndex)return-1;let t=this.getHalfEdgeUserIndex(e,this.m_segmentParentageIndex);return t>=0?t:-1}isCrossroadAhead(e){let t=this.getHalfEdgeNext(e);if(this.isStrongPathNode(this.getHalfEdgeOrigin(t)))return!0;let r=this.getHalfEdgeTwin(t),s=this.getHalfEdgeNext(r);return e!==this.getHalfEdgeTwin(s)}isCrossroadBehind(e){return(0,i.g)(0),!1}getHalfEdgeConnector(e,t){let r=this.getClusterHalfEdge(e);if(-1===r)return-1;let s=r,i=-1,n=-1;do{if(this.getHalfEdgeTo(s)===t)return s;if(-1===i){if(i=this.getClusterHalfEdge(t),-1===i)return-1;n=i}if(this.getHalfEdgeTo(n)===e)return s=this.getHalfEdgeTwin(n),s;s=this.getHalfEdgeNext(this.getHalfEdgeTwin(s)),n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(s!==r&&n!==i);return-1}querySegmentXY(e,t){if(-1!==this.m_segmentIndexHe){let r=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==r){if(-2!==r){let e=this.m_shape.getSegmentFromIndex(r);t.copyFrom(e,!0)}else{r=this.getHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe);let s=this.m_shape.getSegmentFromIndex(r);t.copyFrom(s,!0),t.get().reverse()}return}}t.createLine();let r=t.get(),s=l.P.getNAN();this.getHalfEdgeFromXY(e,s),r.setStartXY(s),this.getHalfEdgeToXY(e,s),r.setEndXY(s)}isCurveEdge(e){return-1!==this.m_segmentIndexHe&&-1!==this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe)}compareEdgeAnglesCurveHelper_(e,t,r){let s=new a.S,n=new a.S;this.querySegmentXY(e,s),this.querySegmentXY(t,n);let o=s.get(),m=n.get();if(o.equals(m))return 0;let h=new l.P;this.getHalfEdgeFromXY(e,h);let g=new l.P;this.getHalfEdgeToXY(e,g);let u=new l.P;return this.getHalfEdgeToXY(t,u),(0,i.g)(!g.isEqualPoint2D(u)),(0,a.O)(o,m)}compareEdgeAnglesHelper_(e,t,r){if(e===t)return 0;if(this.isHalfEdgeCurve(e)||this.isHalfEdgeCurve(t))return this.compareEdgeAnglesCurveHelper_(e,t,r);let s=l.P.getNAN();this.getHalfEdgeToXY(e,s);let i=l.P.getNAN();if(this.getHalfEdgeToXY(t,i),s.isEqualPoint2D(i))return 0;let n=l.P.getNAN();this.getHalfEdgeFromXY(e,n);let a=l.P.getNAN();a.setSub(s,n);let o=l.P.getNAN();return o.setSub(i,n),!r||o.y>=0&&a.y>0?l.P.compareVectors(a,o):0}compareEdgeAngles_(e,t){return this.compareEdgeAnglesHelper_(e,t,!1)}compareEdgeAnglesForPair_(e,t){return this.compareEdgeAnglesHelper_(e,t,!0)}compareEdgeAngles3D_(e,t){return(0,i.g)(0),0}compareEdgeAnglesForPair3D_(e,t){return(0,i.g)(0),0}dbgDumpChains_(){}dbgDumpChainToPolygon_(e,t){}deleteEdgeInternal_(e){let t=this.getHalfEdgeChain(e),r=this.getHalfEdgeTwin(e),s=this.getHalfEdgeChain(r);(0,i.g)(s===t),(0,i.g)(e===this.getHalfEdgeNext(r)||r===this.getHalfEdgeNext(e));let n=this.getHalfEdgeNext(e);n===r&&(n=this.getHalfEdgeNext(n),n===e&&(n=-1));let a=this.getChainIndex_(t),o=this.m_chainAreas.read(a);Number.isNaN(o)||(this.setChainArea_(t,NaN),this.setChainPerimeter_(t,NaN));let l=this.getChainHalfEdge(t);(l===e||l===r)&&this.setChainHalfEdge_(t,n),this.updateVertexToHalfEdgeConnection_(e,!0),this.deleteEdgeImpl_(e)}getFirstUnvisitedHalfEdgeOnCluster_(e,t,r){let s=-1===t?this.getClusterHalfEdge(e):t;if(-1===s)return-1;let i=s;for(;;){if(1!==this.getHalfEdgeUserIndex(s,r))return s;let e=this.getHalfEdgeNext(this.getHalfEdgeTwin(s));if(e===i)return-1;s=e}}removeSpikes_(){let e=!1,t=this.createUserIndexForHalfEdges();for(let r=this.getFirstCluster();-1!==r;r=this.getNextCluster(r)){let s=-1;for(;;){let i=this.getFirstUnvisitedHalfEdgeOnCluster_(r,s,t);if(-1===i)break;s=this.getHalfEdgeNext(this.getHalfEdgeTwin(i));let n=i;for(;;){let r=this.getHalfEdgeNext(n),a=this.getHalfEdgePrev(n),o=this.getHalfEdgeTwin(n);if(a===o){if(this.deleteEdgeInternal_(n),e=!0,(s===n||s===o)&&(s=-1),n===i||a===i){if(i=r,n===i||a===i)break;n=r;continue}}else this.setHalfEdgeUserIndex(n,t,1);if(n=r,n===i)break}}}return this.deleteUserIndexForHalfEdges(t),e}progress_(e,t=!1){}newCluster_(){let e=this.m_clusterData.newElement();return this.m_clusterData.setField(e,1,0),e}newHalfEdgePair_(){let e=this.m_halfEdgeData.newElement();this.m_halfEdgeData.setField(e,2,0),this.m_halfEdgeData.setField(e,3,0);let t=this.m_halfEdgeData.newElement();return this.m_halfEdgeData.setField(t,2,0),this.m_halfEdgeData.setField(t,3,0),this.setHalfEdgeTwin_(e,t),this.setHalfEdgeTwin_(t,e),e}newChain_(){let e=this.m_chainData.newElement();return this.m_chainData.setField(e,2,0),e}deleteChain_(e){return(0,i.g)(0),0}getClusterIndex_(e){return this.m_clusterData.elementToIndex(e)}setClusterVertexIterator_(e,t){this.m_clusterData.setField(e,7,t)}setClusterHalfEdge_(e,t){this.m_clusterData.setField(e,2,t)}setClusterParentage_(e,t){this.m_clusterData.setField(e,1,t)}setPrevCluster_(e,t){this.m_clusterData.setField(e,3,t)}setNextCluster_(e,t){this.m_clusterData.setField(e,4,t)}setClusterVertexIndex_(e,t){this.m_clusterData.setField(e,5,t)}getClusterVertexIndex_(e){return this.m_clusterData.getField(e,5)}setClusterChain_(e,t){this.m_clusterData.setField(e,6,t)}addClusterToExteriorChain_(e,t){this.setClusterChain_(t,e)}getHalfEdgeIndex_(e){return this.m_halfEdgeData.elementToIndex(e)}setHalfEdgeOrigin_(e,t){this.m_halfEdgeData.setField(e,1,t)}setHalfEdgeTwin_(e,t){this.m_halfEdgeData.setField(e,4,t)}setHalfEdgePrev_(e,t){this.m_halfEdgeData.setField(e,5,t)}setHalfEdgeNext_(e,t){this.m_halfEdgeData.setField(e,6,t)}setHalfEdgeChain_(e,t){this.m_halfEdgeData.setField(e,2,t)}setHalfEdgeParentage_(e,t){this.m_halfEdgeData.setField(e,3,t)}getHalfEdgeParentageMask_(e){return this.m_halfEdgeData.getField(e,3)}setHalfEdgeVertexIterator_(e,t){this.m_halfEdgeData.setField(e,7,t)}updateVertexToHalfEdgeConnectionHelper_(e,t){let r=t?-1:e;for(let t=this.getHalfEdgeVertexIterator(e);-1!==t;t=this.incrementVertexIterator(t)){let e=this.getVertexFromVertexIterator(t);this.m_shape.setUserIndex(e,this.m_halfEdgeIndex,r)}}updateVertexToHalfEdgeConnection_(e,t){-1!==e&&(this.updateVertexToHalfEdgeConnectionHelper_(e,t),this.updateVertexToHalfEdgeConnectionHelper_(this.getHalfEdgeTwin(e),t))}getChainIndex_(e){return this.m_chainData.elementToIndex(e)}setChainHalfEdge_(e,t){this.m_chainData.setField(e,1,t)}setChainParentage_(e,t){this.m_chainData.setField(e,2,t)}setChainParent_(e,t){this.m_chainData.setField(e,3,t);let r=this.getChainFirstIsland(t);this.setChainNextInParent_(e,r),this.setChainFirstIsland_(t,e)}setChainFirstIsland_(e,t){this.m_chainData.setField(e,4,t)}setChainNextInParent_(e,t){this.m_chainData.setField(e,5,t)}setChainPrev_(e,t){this.m_chainData.setField(e,6,t)}setChainNext_(e,t){this.m_chainData.setField(e,7,t)}setChainArea_(e,t){let r=this.getChainIndex_(e);this.m_chainAreas.write(r,t)}setChainPerimeter_(e,t){let r=this.getChainIndex_(e);this.m_chainPerimeters.write(r,t)}updateChainAreaAndPerimeter_(e){let t=this.m_shape.hasCurves(),r=new l.K(0),s=new l.K(0),i=this.getChainHalfEdge(e),n=l.P.getNAN(),o=l.P.getNAN(),m=l.P.getNAN();this.getHalfEdgeFromXY(i,n),o.setCoordsPoint2D(n);let h=i;do{this.getHalfEdgeToXY(h,m),(!t||!this.isCurveEdge(h))&&s.pe(l.P.distance(o,m)),this.getHalfEdgeChain(this.getHalfEdgeTwin(h))!==e&&r.pe((m.x-n.x-(o.x-n.x))*(m.y-n.y+(o.y-n.y))*.5),o.setCoordsPoint2D(m),h=this.getHalfEdgeNext(h)}while(h!==i);if(t){let t=new a.S;h=i;do{this.getHalfEdgeToXY(h,m);let i=this.isCurveEdge(h);if(i&&(this.querySegmentXY(h,t),s.pe(t.get().calculateLength2D())),this.getHalfEdgeChain(this.getHalfEdgeTwin(h))!==e&&i){let e=t.get().calculateArea2DHelper();r.pe(e)}h=this.getHalfEdgeNext(h)}while(h!==i)}let g=this.getChainIndex_(e);this.m_chainAreas.write(g,r.getResult()),this.m_chainPerimeters.write(g,s.getResult())}getChainTopmostEdge_(e){return(0,i.g)(0),0}planeSweepParentage_(e,t){let r=new Y(this),s=new o.T;s.setCapacity(Math.trunc(this.m_pointCount/2)),s.setComparator(r);let i=[],n=this.createUserIndexForHalfEdges(),a=null,m=l.P.getNAN();for(let l=this.getFirstCluster();-1!==l;l=this.getNextCluster(l)){this.progress_(t);let h=this.getClusterHalfEdge(l);if(-1!==h){if(i.length=0,!this.tryOptimizedInsertion_(s,n,i,l,h)){this.queryXY(l,m),r.setY(m.y);let e=h;do{let t=this.getHalfEdgeUserIndex(e,n);-1!==t&&(s.deleteNode(t),this.setHalfEdgeUserIndex(e,n,o.S.impossibleIndex2())),e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e);e=h;do{if(-1===this.getHalfEdgeUserIndex(e,n)){let t=s.addElement(e);i.push(t)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(h!==e)}for(let t=i.length-1;t>=0;t--){let r=i[t],a=s.getElement(r),o=this.getHalfEdgeTwin(a);this.setHalfEdgeUserIndex(o,n,r),this.planeSweepParentagePropagateParentage_(s,r,e)}}else if(-1===this.getClusterChain(l)){null===a&&(a=new X(this)),this.queryXY(l,m),a.setPointXY(m);let e=s.searchLowerBound(a),t=this.m_universeChain;if(-1!==e){let r=s.getElement(e);this.getHalfEdgeChain(r)===this.getHalfEdgeChain(this.getHalfEdgeTwin(r))&&(r=this.getLeftSkipPolylines_(s,e)),-1!==r&&(t=this.getHalfEdgeChain(r))}this.addClusterToExteriorChain_(t,l)}}this.deleteUserIndexForHalfEdges(n)}planeSweepParentagePropagateParentage_(e,t,r){let s=e.getElement(t),n=this.getHalfEdgeChain(s);if(-1!==this.getChainParent(n))return;let a=this.getLeftSkipPolylines_(e,t),o=this.getHalfEdgeTwin(s),l=this.getHalfEdgeChain(o),m=this.getChainParent(n),h=this.getChainParent(l);if(-1===a)-1===m&&(l===n?(this.setChainParent_(l,this.m_universeChain),h=this.m_universeChain,m=h):(-1===h&&(this.setChainParent_(l,this.m_universeChain),h=this.m_universeChain),this.setChainParent_(n,l),m=l));else{let e=this.getHalfEdgeChain(a);if(-1===h){if(this.getChainArea(e)<=0){let t=this.getChainParent(e);this.setChainParent_(l,t),h=t}else this.setChainParent_(l,e),h=e;l===n&&(m=h)}}-1===m&&(this.trySetChainParentFromTwin_(n,l),m=this.getChainParent(n)),(0,i.g)(-1!==m),r===R.enumInputModeBuildGraph?this.propagateParentageBuildGraph_(e,t,s,a):r===R.enumInputModeSimplifyWinding?this.propagateParentageWinding_(e,t,s,a,o,n,l):r===R.enumInputModeSimplifyAlternate&&this.propagateParentageAlternate_(e,t,s,a,o,n,l)}propagateParentageBuildGraph_(e,t,r,s){let i,n=t;-1===s?(n=e.getNext(n),i=this.getHalfEdgeChain(r)):i=this.getHalfEdgeChain(s);let a=null,o=this.getChainParentage(i);for(this.m_bBuildGeometryParentageSets&&(a=this.getChainBitSet(i));-1!==n;n=e.getNext(n)){let t=e.getElement(n),r=this.getHalfEdgeTwin(t);i=this.getHalfEdgeChain(t);let s=this.getHalfEdgeChain(r);if(this.m_bBuildGeometryParentageSets){let e=this.getChainBitSet(s);e=new B({copy:e}),e.assignOr(a),this.setChainBitSet_(s,e);let r=this.getChainBitSet(i),n=this.getLeftEdgeBitSet_(t),o=new B({copy:a});if(o.assignSubtract(n),o.isZero())break;r=new B({copy:r}),r.assignOr(o),this.setChainBitSet_(i,r),a=r}let l=this.getChainParentage(s),m=l|o;m!==l&&this.setChainParentage_(s,m);let h=this.getChainParentage(i),g=o&~this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeParentageIndexLeft);if(g&&(h|=g,this.setChainParentage_(i,h)),0===g)break;o=h}}propagateParentageWinding_(e,t,r,s,n,a,o){if(a===o)return;let l=this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeWindingNumberIndex);l+=this.getHalfEdgeUserIndex(n,this.m_tmpHalfEdgeWindingNumberIndex);let m=0,h=[],g=[];g.push(0);for(let r=e.getFirst();r!==t;r=e.getNext(r)){let t=e.getElement(r),s=this.getHalfEdgeTwin(t),n=this.getHalfEdgeChain(t),a=this.getHalfEdgeChain(s);if(n!==a){let e=this.getHalfEdgeUserIndex(t,this.m_tmpHalfEdgeWindingNumberIndex);e+=this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeWindingNumberIndex),m+=e;let r=!1;0!==h.length&&h.at(-1)===a&&(g.pop(),h.pop(),r=!0),(0,i.g)(-1!==this.getChainParent(a)),(!r||this.getChainParent(a)!==n)&&(g.push(m),h.push(n))}}if(m+=l,0!==h.length&&h.at(-1)===o&&(g.pop(),h.pop()),0!==m){if(0===g.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(a,t)}}else if(0!==g.at(-1)){let e=this.m_simplifiedGeometry,t=this.getGeometryID(e);this.setChainParentage_(a,t)}}propagateParentageAlternate_(e,t,r,s,i,n,a){let o=this.m_simplifiedGeometry,l=this.getGeometryID(o);if(-1===s)this.setChainParentage_(a,this.m_universeGeomID),1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,l):this.setChainParentage_(n,this.m_universeGeomID);else{let e=this.getChainParentage(a);if(0===e){let e=this.getHalfEdgeChain(s),t=this.getChainParentage(e);this.setChainParentage_(a,t),1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,t===l?this.m_universeGeomID:l):this.setChainParentage_(n,t)}else 1&this.getHalfEdgeUserIndex(r,this.m_tmpHalfEdgeOddEvenNumberIndex)?this.setChainParentage_(n,e===l?this.m_universeGeomID:l):this.setChainParentage_(n,e)}}tryOptimizedInsertion_(e,t,r,s,i){let n=i,a=-1,l=-1,m=0;do{if(2===m)return!1;let e=this.getHalfEdgeUserIndex(n,t);if(-1!==e){if(-1!==a)return!1;a=e}else{if(-1!==l)return!1;l=n}m++,n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(i!==n);return-1!==l&&-1!==a&&(this.setHalfEdgeUserIndex(e.getElement(a),t,o.S.impossibleIndex2()),e.setElement(a,l),r.push(a),!0)}trySetChainParentFromTwin_(e,t){let r=this.getChainArea(e);if(0===r)return!1;let s=this.getChainArea(t);if(r>0&&s<0||r<0&&s>0)return this.setChainParent_(e,t),!0;{let r=this.getChainParent(t);if(-1!==r)return this.setChainParent_(e,r),!0}return!1}createHalfEdges_(e,t){this.m_halfEdgeIndex=this.m_shape.createUserIndex();for(let r=0,s=t.size();r<s;r++){let s=t.read(r),n=this.m_shape.getUserIndex(s,this.m_clusterIndex),a=this.m_shape.getPathFromVertex(s),o=this.m_shape.getGeometryFromPath(a),l=this.m_shape.getGeometryType(o);if((0,i.j)(l)){let t=this.m_shape.getNextVertex(s);if(-1===t)continue;let r=this.m_shape.getUserIndex(t,this.m_clusterIndex);if(n===r)continue;let a=this.newHalfEdgePair_(),m=this.getHalfEdgeTwin(a),h=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(h,0,s),this.m_clusterVertices.setField(h,1,-1),this.setHalfEdgeVertexIterator_(a,h),this.m_shape.setUserIndex(s,this.m_halfEdgeIndex,a),this.setHalfEdgeOrigin_(a,n);let g=this.getClusterHalfEdge(n);if(-1===g)this.setClusterHalfEdge_(n,a),this.setHalfEdgePrev_(a,m),this.setHalfEdgeNext_(m,a);else{let e=this.getHalfEdgePrev(g);this.setHalfEdgePrev_(g,m),this.setHalfEdgeNext_(m,g),this.setHalfEdgeNext_(e,a),this.setHalfEdgePrev_(a,e)}this.setHalfEdgeOrigin_(m,r);let u=this.getClusterHalfEdge(r);if(-1===u)this.setClusterHalfEdge_(r,m),this.setHalfEdgeNext_(a,m),this.setHalfEdgePrev_(m,a);else{let e=this.getHalfEdgePrev(u);this.setHalfEdgePrev_(u,a),this.setHalfEdgeNext_(a,u),this.setHalfEdgeNext_(e,m),this.setHalfEdgePrev_(m,e)}let _=this.getGeometryID(o);if(e===R.enumInputModeBuildGraph){let e=l===i.G.enumPolygon?_:0;if(this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex,0),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft,e),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft,0),this.m_bBuildGeometryParentageSets){let e=new B,t=this.m_shape.getGeometryUserIndex(o,this.m_geometryIDIndex);e.setBit(t),this.setEdgeBitSet_(a,e),this.setEdgeBitSet_(m,null),this.setLeftEdgeBitSet_(m,e),this.setLeftEdgeBitSet_(a,null)}}else if(e===R.enumInputModeSimplifyWinding){let e=this.m_shape.getXY(s),r=this.m_shape.getXY(t),i=0,n=0;e.compare(r)<0?i=1:n=-1,this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex,i),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex,n)}else e===R.enumInputModeSimplifyAlternate&&(this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex,1),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex,1));let p=l===i.G.enumPolygon?K.c_EdgeBitMask:0;this.setHalfEdgeParentage_(a,_|p),this.setHalfEdgeParentage_(m,_|p)}}if(this.m_shape.hasCurves()){this.m_segmentIndexHe=this.createUserIndexForHalfEdges();for(let e=0,r=t.size();e<r;e++){let r=t.read(e);if(this.m_shape.getSegment(r)){let e=this.m_shape.getUserIndex(r,this.m_halfEdgeIndex);-1!==e&&(this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,this.m_shape.getVertexIndex(r)),this.setHalfEdgeUserIndex(this.getHalfEdgeTwin(e),this.m_segmentIndexHe,-2))}}}}mergeVertexListsOfEdges_(e,t){{let r=this.getHalfEdgeVertexIterator(t);if(-1!==r){let s=this.getHalfEdgeVertexIterator(e);this.m_clusterVertices.setField(r,1,s),this.setHalfEdgeVertexIterator_(e,r),this.setHalfEdgeVertexIterator_(t,-1)}}let r=this.getHalfEdgeTwin(e),s=this.getHalfEdgeTwin(t);{let e=this.getHalfEdgeVertexIterator(s);if(-1!==e){let t=this.getHalfEdgeVertexIterator(r);this.m_clusterVertices.setField(e,1,t),this.setHalfEdgeVertexIterator_(r,e),this.setHalfEdgeVertexIterator_(s,-1)}}if(-1!==this.m_segmentIndexHe){let i=this.getHalfEdgeUserIndex(e,this.m_segmentIndexHe);if(-1!==i){if(-2===i){let r=this.getHalfEdgeUserIndex(t,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(e,this.m_segmentIndexHe,r)}if(i=this.getHalfEdgeUserIndex(r,this.m_segmentIndexHe),-2===i){let e=this.getHalfEdgeUserIndex(s,this.m_segmentIndexHe);this.setHalfEdgeUserIndex(r,this.m_segmentIndexHe,e)}}}}sortHalfEdgesByAngle_(e){let t=[];for(let r=this.getFirstCluster();-1!==r;r=this.getNextCluster(r)){t.length=0;let s=this.getClusterHalfEdge(r);if(-1!==s){let i=s;do{t.push(i),i=this.getHalfEdgeNext(this.getHalfEdgeTwin(i))}while(i!==s);if(t.length>1){let i=!0;t.length>2?(t.sort((e,t)=>this.compareEdgeAngles_(e,t)),t.push(t[0])):this.compareEdgeAnglesForPair_(t[0],t[1])>0?t[1]=(0,l.s)(t[0],t[0]=t[1]):i=!1;let n=t[0],a=n,o=this.getHalfEdgeTo(a),m=this.getHalfEdgeTwin(a),h=-1;for(let r=1,s=t.length;r<s;r++){let s=t[r],i=this.getHalfEdgeTwin(s),l=this.getHalfEdgeOrigin(i);if(l!==o||s===a)this.updateVertexToHalfEdgeConnection_(h,!1),h=-1,a=s,o=l,m=i;else{if(e===R.enumInputModeBuildGraph){let e=this.getHalfEdgeParentageMask_(a)|this.getHalfEdgeParentageMask_(s);if(this.setHalfEdgeParentage_(a,e),this.setHalfEdgeParentage_(m,e),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex,this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndex)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndex)),this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeParentageIndexLeft)),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft,this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeParentageIndexLeft)|this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeParentageIndexLeft)),this.m_bBuildGeometryParentageSets){let e,t,r;e=this.getEdgeBitSet_(a),t=this.getEdgeBitSet_(s),r=new B({copy:e}),r.assignOr(t),this.setEdgeBitSet_(a,r),e=this.getEdgeBitSet_(m),t=this.getEdgeBitSet_(i),r=new B({copy:e}),r.assignOr(t),this.setEdgeBitSet_(m,r),e=this.getLeftEdgeBitSet_(a),t=this.getLeftEdgeBitSet_(s),r=new B({copy:e}),r.assignOr(t),this.setLeftEdgeBitSet_(a,r),e=this.getLeftEdgeBitSet_(m),t=this.getLeftEdgeBitSet_(i),r=new B({copy:e}),r.assignOr(t),this.setLeftEdgeBitSet_(m,r)}}else if(-1!==this.m_tmpHalfEdgeWindingNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeWindingNumberIndex),t=this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeWindingNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeWindingNumberIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeWindingNumberIndex,t)}else if(-1!==this.m_tmpHalfEdgeOddEvenNumberIndex){let e=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(s,this.m_tmpHalfEdgeOddEvenNumberIndex),t=this.getHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex)+this.getHalfEdgeUserIndex(i,this.m_tmpHalfEdgeOddEvenNumberIndex);this.setHalfEdgeUserIndex(a,this.m_tmpHalfEdgeOddEvenNumberIndex,e),this.setHalfEdgeUserIndex(m,this.m_tmpHalfEdgeOddEvenNumberIndex,t)}this.mergeVertexListsOfEdges_(a,s),this.deleteEdgeImpl_(s),h=a,t[r]=-1,s===n&&(t[0]=-1,n=-1)}}if(this.updateVertexToHalfEdgeConnection_(h,!1),h=-1,!i){n=-1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(-1!==r){n=r;break}}s!==n&&this.setClusterHalfEdge_(r,n);continue}n=-1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(-1===r)continue;if(-1===n){n=r,a=n,o=this.getHalfEdgeTo(a),m=this.getHalfEdgeTwin(a);continue}if(r===a)continue;let s=this.getHalfEdgeTwin(r),i=this.getHalfEdgeOrigin(s);this.setHalfEdgeNext_(m,r),this.setHalfEdgePrev_(r,m),a=r,o=i,m=s}this.setClusterHalfEdge_(r,n)}}}}sortHalfEdgesByAngle3D_(e){(0,i.g)(0)}buildChains_(e){this.m_universeChain=this.newChain_(),this.setChainHalfEdge_(this.m_universeChain,-1);let t=this.m_universeChain,r=this.createUserIndexForHalfEdges();for(let e=this.getFirstCluster();-1!==e;e=this.getNextCluster(e)){let s=this.getClusterHalfEdge(e);if(-1!==s){let e=s;do{if(1!==this.getHalfEdgeUserIndex(e,r)){let s=this.newChain_();this.setChainHalfEdge_(s,e),this.setChainPrev_(s,t),this.setChainNext_(t,s);let i=null;this.m_bBuildGeometryParentageSets&&(i=new B),t=s;let n=0,a=e;do{-1!==this.m_tmpHalfEdgeParentageIndex&&(n|=this.getHalfEdgeUserIndex(a,this.m_tmpHalfEdgeParentageIndex)),this.m_bBuildGeometryParentageSets&&i.assignOr(this.getEdgeBitSet_(a)),this.setHalfEdgeChain_(a,s),this.setHalfEdgeUserIndex(a,r,1),a=this.getHalfEdgeNext(a)}while(a!==e);this.m_bBuildGeometryParentageSets&&this.setChainBitSet_(s,i),this.setChainParentage_(s,n)}e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(e!==s)}}this.m_chainAreas=new o.A(this.m_chainData.size(),NaN),this.m_chainPerimeters=new o.A(this.m_chainData.size(),NaN),this.setChainArea_(this.m_universeChain,1/0),this.setChainPerimeter_(this.m_universeChain,1/0),this.deleteUserIndexForHalfEdges(r)}simplify_(e){(0,i.g)(0)}simplifyAlternate_(){(0,i.g)(0)}simplifyWinding_(){(0,i.g)(0)}setEditShapeImpl_(e,t,r,s,n){this.removeShape(),this.m_bBuildChains=n,this.m_shape=e,this.m_geometryIDIndex=this.m_shape.createGeometryUserIndex();let a=this.m_shape.getTotalPointCount();if(r){a=0;for(let e=0,t=r.length;e<t;e++)a+=this.m_shape.getPointCount(r[e])}let m=new o.a(0),h=0,g=0;{let e=null==r?this.m_shape.getFirstGeometry():r[0],t=1;for(;-1!==e;){this.m_shape.setGeometryUserIndex(e,this.m_geometryIDIndex,g++);for(let t=this.m_shape.getFirstPath(e);-1!==t;t=this.m_shape.getNextPath(t)){let e=this.m_shape.getFirstVertex(t);for(let r=0,s=this.m_shape.getPathSize(t);r<s;r++)m.add(e),e=this.m_shape.getNextVertex(e)}(0,i.f)(this.m_shape.getGeometryType(e))||(h+=this.m_shape.getPathCount(e)),null==r?e=this.m_shape.getNextGeometry(e):(e=t<r.length?r[t]:-1,t++)}}this.m_universeGeomID=1<<Math.min(g,31),this.m_pointCount=m.size(),this.m_shape.sortVerticesSimpleByY(m,0,this.m_pointCount),this.m_clusterVertices.setCapacity(this.m_pointCount),this.progress_(s,!0),this.m_clusterData.setCapacity(this.m_pointCount+10),this.m_halfEdgeData.setCapacity(2*this.m_pointCount+32),this.m_chainData.setCapacity(Math.max(32,h)),this.m_clusterIndex=this.m_shape.createUserIndex();let u=l.P.getNAN(),_=0,p=l.P.getNAN();for(let e=0;e<=this.m_pointCount;e++){if(e<this.m_pointCount){let t=m.read(e);this.m_shape.queryXY(t,p)}else p.setNAN();if(!u.isEqualPoint2D(p)){if(_<e){let t=this.newCluster_(),r=-1,s=-1;for(let i=_;i<e;i++){s=m.read(i),this.m_shape.setUserIndex(s,this.m_clusterIndex,t);let e=this.m_clusterVertices.newElement();this.m_clusterVertices.setField(e,0,s),this.m_clusterVertices.setField(e,1,r),r=e;let n=this.m_shape.getPathFromVertex(s),a=this.m_shape.getGeometryFromPath(n),o=this.getGeometryID(a);this.setClusterParentage_(t,this.getClusterParentage(t)|o)}this.setClusterVertexIterator_(t,r),this.setClusterVertexIndex_(t,this.m_shape.getVertexIndex(s)),-1!==this.m_lastCluster&&this.setNextCluster_(this.m_lastCluster,t),this.setPrevCluster_(t,this.m_lastCluster),this.m_lastCluster=t,-1===this.m_firstCluster&&(this.m_firstCluster=t)}_=e,u.setCoordsPoint2D(p)}}if(this.m_shape.hasSegmentParentage()){-1===this.m_clusterBreakNodeIndex&&(this.m_clusterBreakNodeIndex=this.createUserIndexForClusters());for(let e=0;e<this.m_pointCount;e++){let t=m.read(e);if(this.m_shape.getSegmentParentageBreakVertex(t)){let e=this.getClusterFromVertex(t);this.setBreakNode(e,!0)}}}this.progress_(s,!0);{let e=null==r?this.m_shape.getFirstGeometry():r[0],t=1;for(;-1!==e;){for(let t=this.m_shape.getFirstPath(e);-1!==t;t=this.m_shape.getNextPath(t)){if(this.m_shape.isStrongPathStart(t)){let e=this.m_shape.getFirstVertex(t),r=this.getClusterFromVertex(e);this.setStrongPathNode(r,!0)}if(this.m_shape.isStrongPathEnd(t)){let e=this.m_shape.isClosedPath(t)?this.m_shape.getFirstVertex(t):this.m_shape.getLastVertex(t),r=this.getClusterFromVertex(e);this.setStrongPathNode(r,!0)}}null==r?e=this.m_shape.getNextGeometry(e):(e=t<r.length?r[t]:-1,t++)}}if(t===R.enumInputModeBuildGraph&&(this.m_tmpHalfEdgeParentageIndex=this.createUserIndexForHalfEdges(),this.m_tmpHalfEdgeParentageIndexLeft=this.createUserIndexForHalfEdges()),t===R.enumInputModeSimplifyWinding&&(this.m_tmpHalfEdgeWindingNumberIndex=this.createUserIndexForHalfEdges()),t===R.enumInputModeSimplifyAlternate&&(this.m_tmpHalfEdgeOddEvenNumberIndex=this.createUserIndexForHalfEdges()),this.createHalfEdges_(t,m),this.dbgNavigate_(),this.sortHalfEdgesByAngle_(t),!Number.isNaN(this.m_checkDirtyPlanesweepTolerance)&&!this.checkStructureAfterDirtySweep_())return this.m_bDirtyCheckFailed=!0,void this.cleanSetEditShapeImpl_();this.buildChains_(t),-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),this.m_bBuildChains&&this.planeSweepParentage_(t,s),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),this.dbgChkChainParents_(),this.dbgDumpChains_(),this.mergeSegmentParentage_(),this.dbgNavigate_(),this.dbgDumpChains_(),this.cleanSetEditShapeImpl_()}setEditShapeImpl3D_(e,t,r,s,n){(0,i.g)(0)}cleanSetEditShapeImpl_(){-1!==this.m_tmpHalfEdgeParentageIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndex),this.m_tmpHalfEdgeParentageIndex=-1),-1!==this.m_tmpHalfEdgeParentageIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeParentageIndexLeft),this.m_tmpHalfEdgeParentageIndexLeft=-1),-1!==this.m_tmpHalfEdgeWindingNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeWindingNumberIndex),this.m_tmpHalfEdgeWindingNumberIndex=-1),-1!==this.m_tmpHalfEdgeOddEvenNumberIndex&&(this.deleteUserIndexForHalfEdges(this.m_tmpHalfEdgeOddEvenNumberIndex),this.m_tmpHalfEdgeOddEvenNumberIndex=-1)}cleanSetEditShapeImpl3D_(){(0,i.g)(0)}dbgNavigate_(){}dbgChkChainParents_(){}deleteEdgeImpl_(e){let t=this.getHalfEdgeNext(e),r=this.getHalfEdgePrev(e),s=this.getHalfEdgeTwin(e),i=this.getHalfEdgeNext(s),n=this.getHalfEdgePrev(s);t!==s&&(this.setHalfEdgeNext_(n,t),this.setHalfEdgePrev_(t,n)),r!==s&&(this.setHalfEdgeNext_(r,i),this.setHalfEdgePrev_(i,r));let a=this.getHalfEdgeOrigin(e);this.getClusterHalfEdge(a)===e&&(i===e?this.setClusterHalfEdge_(a,-1):this.setClusterHalfEdge_(a,i));let o=this.getHalfEdgeOrigin(s);this.getClusterHalfEdge(o)===s&&(t===s?this.setClusterHalfEdge_(o,-1):this.setClusterHalfEdge_(o,t)),this.m_halfEdgeData.deleteElement(e),this.m_halfEdgeData.deleteElement(s)}getLeftSkipPolylines_(e,t){let r=t;for(;;){if(r=e.getPrev(r),-1===r)return-1;{let t=e.getElement(r);if(this.getHalfEdgeChain(t)!==this.getHalfEdgeChain(this.getHalfEdgeTwin(t)))return t}}}checkStructureAfterDirtySweep_(){let e=(0,l.e)(this.m_checkDirtyPlanesweepTolerance),t=new l.P,r=new l.P,s=new l.P,i=new l.P,n=new l.P;for(let a=this.getFirstCluster();-1!==a;a=this.getNextCluster(a)){let o=this.getClusterHalfEdge(a);if(-1!==o){let a=o;this.getHalfEdgeFromXY(a,t),this.getHalfEdgeToXY(a,r),s.setSub(r,t);let l=s.sqrLength();do{let o=a;if(a=this.getHalfEdgeNext(this.getHalfEdgeTwin(a)),a!==o){this.getHalfEdgeToXY(a,i),n.setSub(i,t);let o=n.sqrLength(),m=n.crossProduct(s),h=m*m/(o*l);if(Math.min(o,l)*h<=e&&n.dotProduct(s)>=0)return!1;s.assign(n),l=o,r.assign(i)}}while(a!==o)}}return!0}extractPolygonPathFromChain_(e,t,r,s,i){let n=this.m_shape.hasSegmentParentage(),a=this.getChainHalfEdge(r),l=a,m=-1,h=new o.P;do{let a=this.getHalfEdgeTwin(l);if(this.getHalfEdgeChain(a)!==r){let r,a=-1,o=this.getHalfEdgeOrigin(l);if(-1===s){let e=this.getClusterVertexIterator(o);a=this.getVertexFromVertexIterator(e)}else for(let e=this.getClusterVertexIterator(o);-1!==e;e=this.incrementVertexIterator(e)){let t=this.getVertexFromVertexIterator(e);-1===a&&(a=t);let r=this.m_shape.getPathFromVertex(t);if(this.m_shape.getGeometryFromPath(r)===s){a=t;break}}if(-1===m&&(m=e.insertPath(t,-1),e.setClosedPath(m,!0)),this.m_shape===e?r=e.addVertex(m,a):(this.m_shape.queryPoint(a,h),r=e.addPoint(m,h)),this.isHalfEdgeCurve(l)&&(this.querySegmentXY(l,i),e.setSegmentToIndex(e.getVertexIndex(r),i.get().clone())),n){let t=this.getSegmentParentage(l);e.setSegmentParentageAndBreak(r,t,this.isBreakNode(o))}}l=this.getHalfEdgeNext(l)}while(l!==a)}mergeSegmentParentage_(){if(!this.m_shape.hasSegmentParentage())return;(0,i.g)(-1!==this.m_clusterBreakNodeIndex),(0,i.g)(-1===this.m_segmentParentageIndex);for(let e=this.getFirstCluster();-1!==e;e=this.getNextCluster(e)){let t=0,r=this.getClusterHalfEdge(e);if(-1!==r){let e=r;do{t++,e=this.getHalfEdgeNext(this.getHalfEdgeTwin(e))}while(e!==r&&t<3)}2!==t&&this.setBreakNode(e,!0)}let e=[],t=[];this.m_segmentParentageIndex=this.createUserIndexForHalfEdges();let r=this.createUserIndexForHalfEdges();for(let s=this.getFirstCluster();-1!==s;s=this.getNextCluster(s)){let i=this.getClusterHalfEdge(s);if(-1!==i){let s=!1,n=i;do{let i=n;for(;-1===this.getHalfEdgeUserIndex(i,r);){let n=this.getHalfEdgeNext(i),a=this.getHalfEdgeTwin(i);Z(this,i,t);let o=t.at(-1).parentage;if(!s){let t=this.getHalfEdgeOrigin(i);if(!this.isBreakNode(t)){let t=this.getHalfEdgePrev(i);i!==t&&(Z(this,t,e),s=!0)}}if(s&&!j(t,e)){let e=this.getHalfEdgeOrigin(i);this.setBreakNode(e,!0)}e=(0,l.s)(t,t=e),s=!0;let m=this.getHalfEdgeOrigin(n);this.isBreakNode(m)&&(s=!1),this.setHalfEdgeUserIndex(i,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(a,this.m_segmentParentageIndex,o),this.setHalfEdgeUserIndex(i,r,1),this.setHalfEdgeUserIndex(a,r,1),i=n}n=this.getHalfEdgeNext(this.getHalfEdgeTwin(n))}while(n!==i)}}this.deleteUserIndexForHalfEdges(r)}registerNewBitSet(e){return null===this.m_uniqueBitSets&&(this.m_uniqueBitSets=new O(e=>e.getHashCode(),(e,t)=>e.equals(t)),this.m_uniqueBitSets.add(this.getEmptySet())),null===e?this.getEmptySet():this.m_uniqueBitSets.has(e)?this.m_uniqueBitSets.get(e):(this.m_uniqueBitSets.add(e),e)}getLeftEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);return(0,i.g)(t>=0),(0,i.g)(this.m_edgeBitSets.at(t)),this.m_edgeBitSets.at(t)}getEdgeBitSet_(e){let t=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);return(0,i.g)(t>=0),this.m_edgeBitSets.at(t)}setEdgeBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndex&&(this.m_edgeBitSetIndex=this.createUserIndexForHalfEdges());let r=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndex);-1===r?(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndex,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t)):this.m_edgeBitSets[r]=t}setLeftEdgeBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_edgeBitSetIndexLeft&&(this.m_edgeBitSetIndexLeft=this.createUserIndexForHalfEdges());let r=this.getHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft);-1===r?(this.setHalfEdgeUserIndex(e,this.m_edgeBitSetIndexLeft,this.m_edgeBitSets.length),this.m_edgeBitSets.push(t)):this.m_edgeBitSets[r]=t}setChainBitSet_(e,t){(0,i.g)(this.m_bBuildGeometryParentageSets),t=this.registerNewBitSet(t),-1===this.m_chainBitSetIndex&&(this.m_chainBitSetIndex=this.createUserIndexForChains());let r=this.getChainUserIndex(e,this.m_chainBitSetIndex);-1===r?(this.setChainUserIndex(e,this.m_chainBitSetIndex,this.m_chainBitSets.length),this.m_chainBitSets.push(t)):this.m_chainBitSets[r]=t}getEmptySet(){return this.m_emptyBitSet||=new B,this.m_emptyBitSet}deleteEdgeBitSets_(){-1!==this.m_edgeBitSetIndex&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndex),this.m_edgeBitSetIndex=-1),-1!==this.m_edgeBitSetIndexLeft&&(this.deleteUserIndexForHalfEdges(this.m_edgeBitSetIndexLeft),this.m_edgeBitSetIndexLeft=-1),this.m_edgeBitSets.length=0,this.m_uniqueBitSets=null}deleteChainBitSets_(){-1!==this.m_chainBitSetIndex&&(this.deleteUserIndexForChains(this.m_chainBitSetIndex),this.m_chainBitSetIndex=-1,this.m_chainBitSets.length=0)}dbgPrintEdge_(e){}dbgVerifyEdgeSegment(e){}}class Q{m_listNodes=new o.S(2);m_lists;m_listOfLists=Q.st_nullNode();m_bAllowNavigationBetweenLists=!0;freeNode_(e){this.m_listNodes.deleteElement(e)}newNode_(){return this.m_listNodes.newElement()}freeList_(e){this.m_lists.deleteElement(e)}newList_(){return this.m_lists.newElement()}Init_(e){(0,i.g)(0)}constructor(e){void 0===e&&(e=!0),this.m_bAllowNavigationBetweenLists=e,this.m_lists=new o.S(this.m_bAllowNavigationBetweenLists?4:2)}createList(){let e=this.newList_();return this.m_bAllowNavigationBetweenLists&&(this.m_lists.setField(e,3,this.m_listOfLists),this.m_listOfLists!==Q.st_nullNode()&&this.m_lists.setField(this.m_listOfLists,2,e),this.m_listOfLists=e),e}deleteList(e){let t=this.getFirst(e);for(;t!==Q.st_nullNode();){let e=t;t=this.getNext(t),this.freeNode_(e)}if(this.m_bAllowNavigationBetweenLists){let t=this.m_lists.getField(e,2),r=this.m_lists.getField(e,3);t===Q.st_nullNode()?this.m_listOfLists=r:this.m_lists.setField(t,3,r),r!==Q.st_nullNode()&&this.m_lists.setField(r,2,t)}this.freeList_(e)}reserveLists(e){this.m_lists.setCapacity(e)}addElement(e,t){this.m_lists.getField(e,0);let r=this.m_lists.getField(e,1),s=this.newNode_();return r===Q.st_nullNode()?(this.m_lists.setField(e,0,s),this.m_lists.setField(e,1,s)):(this.m_listNodes.setField(r,1,s),this.m_lists.setField(e,1,s)),this.m_listNodes.setField(s,0,t),s}reserveNodes(e){this.m_listNodes.setCapacity(e)}deleteElementDirect(e,t,r){t===Q.st_nullNode()?(this.m_lists.setField(e,0,this.m_listNodes.getField(r,1)),this.m_lists.getField(e,1)===r&&this.m_lists.setField(e,1,Q.st_nullNode())):(this.m_listNodes.setField(t,1,this.m_listNodes.getField(r,1)),this.m_lists.getField(e,1)===r&&this.m_lists.setField(e,1,t)),this.freeNode_(r)}deleteElementSearch(e,t){let r=-1,s=this.getFirst(e);for(;s!==t;)r=s,s=this.getNext(s);this.deleteElementDirect(e,r,t)}concatenateLists(e,t){let r=this.m_lists.getField(e,1),s=this.m_lists.getField(t,0);if(s!==Q.st_nullNode()&&(r===Q.st_nullNode()?(this.m_lists.setField(e,0,s),this.m_lists.setField(e,1,this.m_lists.getField(t,1))):(this.m_listNodes.setField(r,1,s),this.m_lists.setField(e,1,this.m_lists.getField(t,1)))),this.m_bAllowNavigationBetweenLists){let e=this.m_lists.getField(t,2),r=this.m_lists.getField(t,3);e===Q.st_nullNode()?this.m_listOfLists=r:this.m_lists.setField(e,3,r),r!==Q.st_nullNode()&&this.m_lists.setField(r,2,e)}return this.freeList_(t),e}getElement(e){return this.m_listNodes.getField(e,0)}getData(e){return this.getElement(e)}setElement(e,t){(0,i.g)(0)}getNext(e){return this.m_listNodes.getField(e,1)}getFirst(e){return this.m_lists.getField(e,0)}getFirstElement(e){let t=this.getFirst(e);return this.getElement(t)}static st_nullNode(){return-1}clear(){this.m_listNodes.deleteAll(!0),this.m_lists.deleteAll(!0),this.m_listOfLists=Q.st_nullNode()}isEmpty(e){return(0,i.g)(0),!1}getNodeCount(){return this.m_listNodes.size()}getListCount(){return this.m_lists.size()}getFirstList(){return this.m_listOfLists}getNextList(e){return this.m_lists.getField(e,3)}}function J(e=-1){return{m_value:e,m_line:new a.L,m_segment:null,m_segmentInfo:new a.a2(-1),m_env:new l.E(0,0),m_dxdy:55555555,m_bHorizontal:!1,m_bCurve:!1}}class $ extends o.F{m_shape;m_bIntersectionDetected=!1;m_nonSimpleResult=new c;m_tempSimpleEdge1=J();m_tempSimpleEdge2=J();m_prev1=-1;m_prev2=-1;m_vertex1=-1;m_vertex2=-1;m_currentNode=-1;m_prevX1=NaN;m_prevX2=NaN;m_prevY=NaN;m_prevX=0;m_sweepY=NaN;m_sweepX=0;m_ptSweep=new l.P;m_tolerance;m_tolerance10;m_bIsSimple;m_bShapeHasSegments;m_simpleEdgesCache=[];m_simpleEdgesRecycle=[];m_cOutstandingConstructedEdges=0;constructor(e,t,r){super(!0),this.m_shape=e,this.m_bShapeHasSegments=this.m_shape.hasCurves(),this.m_tolerance=t,this.m_tolerance10=10*t,this.m_bIsSimple=r;let s=Math.trunc(Math.min(3*e.getTotalPointCount()/2,67)),i=Math.min(7,s);this.m_simpleEdgesCache.length=i}tryGetCachedEdge_(e){let t=this.m_simpleEdgesCache[(e&(0,l.b)())%this.m_simpleEdgesCache.length];return t&&t.m_value===e?t:null}tryDeleteCachedEdge_(e){let t=(e&(0,l.b)())%this.m_simpleEdgesCache.length,r=this.m_simpleEdgesCache[t];r&&r.m_value===e&&(this.m_simpleEdgesRecycle.push(r),this.m_simpleEdgesCache[t]=null)}tryCreateCachedEdge_(e){let t=(e&(0,l.b)())%this.m_simpleEdgesCache.length,r=this.m_simpleEdgesCache[t];return r?null:(0===this.m_simpleEdgesRecycle.length?(r=J(),this.m_cOutstandingConstructedEdges++):r=this.m_simpleEdgesRecycle.pop(),r.m_value=e,this.m_simpleEdgesCache[t]=r,r)}initSimpleEdge_(e,t){this.m_bShapeHasSegments&&this.initSimpleEdgeHelper_(e,t)||e.m_bCurve||(this.m_shape.queryLineConnector(t,e.m_line,!0),e.m_segment=e.m_line,e.m_env.setCoordsNoNAN(e.m_line.getStartX(),e.m_line.getEndX()),e.m_env.vmax+=this.m_tolerance,e.m_line.orientBottomUp(),e.m_bHorizontal=e.m_line.getEndY()===e.m_line.getStartY(),e.m_bHorizontal||(e.m_dxdy=(e.m_line.getEndX()-e.m_line.getStartX())/(e.m_line.getEndY()-e.m_line.getStartY())))}initSimpleEdgeHelper_(e,t){if(e.m_segment=this.m_shape.getSegment(t),e.m_segmentInfo=this.m_shape.getOriginalSegmentInfo(t),e.m_bCurve=null!==e.m_segment,e.m_bCurve){let t=e.m_segment.clone();return t.orientBottomUp(),e.m_segment=t,e.m_env=e.m_segment.queryInterval(0,0),e.m_env.vmax+=this.m_tolerance,!0}return!1}compareTwoSegments_(e,t){let r=e.getStartXY(),s=e.getEndXY(),i=t.getStartXY(),n=t.getEndXY();if(this.m_ptSweep.setCoords(this.m_sweepX,this.m_sweepY),r.isEqualPoint2D(i)&&this.m_sweepY===r.y){this.m_ptSweep.assign(s.compare(n)<0?s:n);let r=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),i=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x);if(Math.abs(r-i)>this.m_tolerance)return r<i?-1:1}let a=r.compare(i)<0?i:r,o=s.compare(n)<0?s:n,m=0,h=0;for(let r=1;r<5;r++){(0,l.J)(a,o,r/5,this.m_ptSweep);let s=e.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),i=t.intersectionOfYMonotonicWithAxisX(this.m_ptSweep.y,this.m_ptSweep.x),n=Math.abs(s-i);n>m&&(m=n,h=s<i?-1:1)}return 0===h?this.errorCracking():h}compareNonHorizontal_(e,t){if(e.m_line.getStartY()===t.m_line.getStartY()&&e.m_line.getStartX()===t.m_line.getStartX())return e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX()?this.m_bIsSimple?this.errorCoincident():0:this.compareNonHorizontalUpperEnd_(e,t);if(e.m_line.getEndY()===t.m_line.getEndY()&&e.m_line.getEndX()===t.m_line.getEndX())return this.compareNonHorizontalLowerEnd_(e,t);let r=this.compareNonHorizontalLowerEnd_(e,t),s=this.compareNonHorizontalUpperEnd_(e,t);return r<0&&s<0?-1:r>0&&s>0?1:this.errorCracking()}compareHorizontal1Case1_(e,t){if(e.getEndX()>t.getEndX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getEndX()-e.getStartX())<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return 1}compareHorizontal1Case2_(e,t){if(e.getStartX()<t.getStartX()){if(t.getEndX()>t.getStartX()&&t.getEndY()-t.getStartY()<2*this.m_tolerance&&e.isIntersectingPoint(t.getEndXY(),this.m_tolerance,!0))return this.errorCracking()}else if((t.getEndY()-t.getStartY())/(t.getEndX()-t.getStartX())*(e.getStartX()-e.getEndX())<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking();return-1}compareHorizontal1Case3_(e,t){let r=l.P.getNAN();r.setSub(t.getEndXY(),t.getStartXY()),r.rightPerpendicularThis(),r.normalize();let s=l.P.getNAN();s.setSub(e.getStartXY(),t.getStartXY());let i=l.P.getNAN();i.setSub(e.getEndXY(),t.getStartXY());let n=s.dotProduct(r),a=i.dotProduct(r),o=Math.abs(n),m=Math.abs(a);if(o<m){if(o<this.m_tolerance10&&t.isIntersectingPoint(e.getStartXY(),this.m_tolerance,!0))return this.errorCracking()}else if(m<this.m_tolerance10&&t.isIntersectingPoint(e.getEndXY(),this.m_tolerance,!0))return this.errorCracking();return n<0&&a<0?-1:n>0&&a>0?1:this.errorCracking()}compareHorizontal1_(e,t){return e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.compareHorizontal1Case1_(e,t):e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()?this.compareHorizontal1Case2_(e,t):this.compareHorizontal1Case3_(e,t)}compareHorizontal2_(e,t){return e.getEndY()===t.getEndY()&&e.getEndX()===t.getEndX()&&e.getStartY()===t.getStartY()&&e.getStartX()===t.getStartX()?this.m_bIsSimple?this.errorCoincident():0:this.errorCracking()}compareNonHorizontalLowerEnd_(e,t){let r=1;if(e.m_line.getStartY()<t.m_line.getStartY()){r=-1;let s=e;e=t,t=s}let s=e.m_line,i=t.m_line,n=s.getStartX()-i.getStartX(),a=t.m_dxdy*(s.getStartY()-i.getStartY()),o=this.m_tolerance10;return n<a-o?-r:n>a+o?r:i.isIntersectingPoint(s.getStartXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-r:r}compareNonHorizontalUpperEnd_(e,t){let r=1;if(t.m_line.getEndY()<e.m_line.getEndY()){r=-1;let s=e;e=t,t=s}let s=e.m_line,i=t.m_line,n=s.getEndX()-i.getStartX(),a=t.m_dxdy*(s.getEndY()-i.getStartY()),o=this.m_tolerance10;return n<a-o?-r:n>a+o?r:i.isIntersectingPoint(s.getEndXY(),this.m_tolerance,!0)?this.errorCracking():n<a?-r:r}errorCoincident(){return this.m_bIntersectionDetected=!0,this.m_nonSimpleResult=new c(7,this.m_vertex1,this.m_vertex2),-1}errorCracking(){return this.m_bIntersectionDetected=!0,this.m_bIsSimple?this.m_nonSimpleResult=new c(6,this.m_vertex1,this.m_vertex2):(this.m_prev1=-1,this.m_prev2=-1,this.m_vertex1=-1,this.m_vertex2=-1),-1}compareSegments_(e,t,r,s){if(r.m_env.vmax<s.m_env.vmin)return-1;if(s.m_env.vmax<r.m_env.vmin)return 1;if(!r.m_bCurve&&!s.m_bCurve){let e=+!!r.m_bHorizontal;return e|=s.m_bHorizontal?2:0,0===e?this.compareNonHorizontal_(r,s):1===e?this.compareHorizontal1_(r.m_line,s.m_line):2===e?-1*this.compareHorizontal1_(s.m_line,r.m_line):this.compareHorizontal2_(r.m_line,s.m_line)}if(this.m_bIntersectionDetected)return-1;let i,n,o=this.m_prevY===this.m_sweepY&&this.m_prevX===this.m_sweepX;if(o&&e===this.m_prev1?i=this.m_prevX1:(i=NaN,this.m_prev1=-1),o&&t===this.m_prev2?n=this.m_prevX2:(n=NaN,this.m_prev2=-1),this.m_prevY=this.m_sweepY,this.m_prevX=this.m_sweepX,Number.isNaN(i)){this.m_prev1=e;let t=r.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);i=t,this.m_prevX1=t}if(Number.isNaN(n)){this.m_prev2=t;let e=s.m_segment.intersectionOfYMonotonicWithAxisX(this.m_sweepY,this.m_sweepX);n=e,this.m_prevX2=e}let l=(0,a.T)(!0,!0,r.m_segment,s.m_segment,this.m_tolerance,!0);return 0===l?Math.abs(i-n)<=this.m_tolerance?this.compareTwoSegments_(r.m_segment,s.m_segment):i<n?-1:+(i>n):2===l?this.m_bIsSimple?this.errorCoincident():r.m_segmentInfo.equals(s.m_segmentInfo)?0:this.errorCracking():this.errorCracking()}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1}intersectionDetected(){return this.m_bIntersectionDetected}getLastComparedNode(){return this.m_currentNode}getResult(){return this.m_nonSimpleResult}setSweepY(e,t){this.m_sweepY=e,this.m_sweepX=t,this.m_prev1=-1,this.m_prev2=-1,this.m_vertex1=-1,this.m_vertex2=-1}compare(e,t,r){if(this.m_bIntersectionDetected)return-1;let s=e.getElement(r),i=t;return this.m_currentNode=r,this.compareSegments(i,i,s,s)}compareSegments(e,t,r,s){let i=this.tryGetCachedEdge_(e);null===i?this.m_vertex1===t?i=this.m_tempSimpleEdge1:(this.m_vertex1=t,i=this.tryCreateCachedEdge_(e),null===i&&(i=this.m_tempSimpleEdge1,this.m_tempSimpleEdge1.m_value=e),this.initSimpleEdge_(i,t)):this.m_vertex1=t;let n=this.tryGetCachedEdge_(r);return null===n?this.m_vertex2===s?n=this.m_tempSimpleEdge2:(this.m_vertex2=s,n=this.tryCreateCachedEdge_(r),null===n&&(n=this.m_tempSimpleEdge2,this.m_tempSimpleEdge2.m_value=r),this.initSimpleEdge_(n,s)):this.m_vertex2=s,this.compareSegments_(t,s,i,n)}onDelete(e){this.tryDeleteCachedEdge_(e)}onSet(e){this.tryDeleteCachedEdge_(e)}onEndSearch(e){this.tryDeleteCachedEdge_(e)}onAddUniqueElementFailed(e){this.tryDeleteCachedEdge_(e)}}class ee{m_shape;m_bIntersectionDetected=!1;m_pointOfInterest=l.P.getNAN();m_line1=new a.L;m_seg1=null;m_env=l.E.constructEmpty();m_vertex1=-1;m_currentNode=-1;m_minDist=Number.MAX_VALUE;m_tolerance;constructor(e,t){this.m_shape=e,this.m_tolerance=t}getCurrentNode(){return this.m_currentNode}clearIntersectionDetectedFlag(){this.m_bIntersectionDetected=!1,this.m_minDist=Number.MAX_VALUE}intersectionDetected(){return this.m_bIntersectionDetected}setPoint(e){this.m_pointOfInterest.assign(e)}compare(e,t){let r=e.getElement(t);return this.compareVertex(e,t,r)}compareVertex(e,t,r){let s,i=this.m_shape.getSegment(r),o=!0;if(null==i)this.m_shape.queryLineConnector(r,this.m_line1,!0),this.m_env.setCoordsNoNAN(this.m_line1.getStartX(),this.m_line1.getEndX()),i=this.m_line1,s=this.m_line1.getStartY()===this.m_line1.getEndY();else{let e=n.Envelope2D.constructEmpty();i.queryLooseEnvelope(e),e.queryIntervalX(this.m_env),s=0===e.height(),o=!1}if(this.m_pointOfInterest.x+this.m_tolerance<this.m_env.vmin)return-1;if(this.m_pointOfInterest.x-this.m_tolerance>this.m_env.vmax)return 1;if(s)return this.m_currentNode=t,this.m_bIntersectionDetected=!0,0;let m=0;if(o){(0,a.X)(this.m_line1);let e=this.m_line1.getStartXY(),t=new l.P;t.setSub(this.m_line1.getEndXY(),e),t.rightPerpendicularThis();let r=new l.P;r.setSub(this.m_pointOfInterest,e),m=t.dotProduct(r),m/=t.length()}else m=i.intersectionOfYMonotonicWithAxisX(this.m_pointOfInterest.y,this.m_pointOfInterest.x)-this.m_pointOfInterest.x;return m<10*-this.m_tolerance?-1:m>10*this.m_tolerance?1:(i.isIntersectingPoint(this.m_pointOfInterest,this.m_tolerance)&&(Math.abs(m)<this.m_minDist&&(this.m_currentNode=t,this.m_minDist=m),this.m_bIntersectionDetected=!0),m<0?-1:+(m>0))}}class te{m_bitFilter;m_hashBuckets;m_lists=new Q(!1);m_hash;constructor(e,t){this.m_hash=t,this.m_hashBuckets=new Int32Array(e),this.m_hashBuckets.fill(te.st_nullNode()),this.m_bitFilter=new Int32Array(10*e+31>>5)}reserveElements(e){this.m_lists.reserveLists(Math.min(this.m_hashBuckets.length,e)),this.m_lists.reserveNodes(e)}addElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let r=t%(this.m_bitFilter.length<<5);this.m_bitFilter[r>>5]|=1<<(31&r);let s=t%this.m_hashBuckets.length,i=this.m_hashBuckets[s];return i===Q.st_nullNode()&&(i=this.m_lists.createList(),this.m_hashBuckets[s]=i),this.m_lists.addElement(i,e)}deleteElement(e,t){void 0===t&&(t=this.m_hash.getHash(e));let r=t%this.m_hashBuckets.length,s=this.m_hashBuckets[r];s===Q.st_nullNode()&&(0,i.b)("");let n=this.m_lists.getFirst(s),a=Q.st_nullNode();for(;n!==Q.st_nullNode();){let t=this.m_lists.getData(n),i=this.m_lists.getNext(n);t===e?(this.m_lists.deleteElementDirect(s,a,n),this.m_lists.getFirst(s)===Q.st_nullNode()&&(this.m_lists.deleteList(s),this.m_hashBuckets[r]=Q.st_nullNode())):a=n,n=i}}getFirstInBucket(e){let t=e%(this.m_bitFilter.length<<5);if(!(this.m_bitFilter[t>>5]&1<<(31&t)))return Q.st_nullNode();let r=e%this.m_hashBuckets.length,s=this.m_hashBuckets[r];return s===Q.st_nullNode()?Q.st_nullNode():this.m_lists.getFirst(s)}getNextInBucket(e){return this.m_lists.getNext(e)}findNode(e){let t=this.m_hash.getHash(e),r=this.getFirstInBucket(t);for(;r!==Q.st_nullNode();){let t=this.m_lists.getData(r);if(this.m_hash.equal(t,e))return r;r=this.m_lists.getNext(r)}return Q.st_nullNode()}deleteNode(e){let t=this.getElement(e),r=this.m_hash.getHash(t)%this.m_hashBuckets.length,s=this.m_hashBuckets[r];s===Q.st_nullNode()&&(0,i.b)(""),this.m_lists.deleteElementSearch(s,e),this.m_lists.getFirst(s)===Q.st_nullNode()&&(this.m_lists.deleteList(s),this.m_hashBuckets[r]=Q.st_nullNode())}getElement(e){return this.m_lists.getData(e)}static st_nullNode(){return Q.st_nullNode()}clear(){(0,i.g)(0)}size(){return this.m_lists.getNodeCount()}dbgPrintBucketHistogram(){}}function re(e,t,r,s,i){let n=new oe(i);return n.m_shape=e,n.m_sqrTolerance=t*t,n.m_cellSize=2*t,n.m_invCellSize=1/n.m_cellSize,n.m_geometry=r,n.m_bTrackChanges=s,n.m_bHasSegmentParentage=e.hasSegmentParentage(),n.clusterNonReciprocal()}function se(e,t,r,s,i){let n=e-r,a=t-s;return n*n+a*a<=i}function ie(e,t,r,s,i,n){let a={pt:new l.P,weight:0,rank:0,bMerged:!1},o=r+i,m=!1,h=e.x;e.x!==t.x&&(s===n&&(h=(e.x*r+t.x*i)/o),m=!0);let g=e.y;return e.y!==t.y&&(s===n&&(g=(e.y*r+t.y*i)/o),m=!0),s===n?(a.pt.setCoords(h,g),a.weight=o,a.rank=s):s>n?(a.rank=s,a.weight=r,a.pt=e):(a.rank=n,a.weight=i,a.pt=t),a.bMerged=m,a}function ne(e,t){let r=(0,l.a3)(e);return(0,l.a0)(r,t)}class ae{m_shape;m_sqrTolerance;m_invCellSize;m_origin;m_hashValues;m_workPt=new l.P;constructor(e,t,r,s,i){this.m_shape=e,this.m_sqrTolerance=r,this.m_invCellSize=s,this.m_origin=t.clone(),this.m_hashValues=i}getHash(e){return this.m_shape.getUserIndex(e,this.m_hashValues)}calculateHashFromVertex(e){this.m_shape.queryXY(e,this.m_workPt);let t=this.m_workPt.x-this.m_origin.x,r=Math.trunc(t*this.m_invCellSize+.5),s=this.m_workPt.y-this.m_origin.y;return ne(r,Math.trunc(s*this.m_invCellSize+.5))}equal(e,t){return(0,i.g)(0),!1}}class oe{m_origin=l.P.getNAN();m_sqrTolerance=0;m_cellSize=0;m_invCellSize=0;m_geometry=-1;m_bucketArray=(0,l.c)(4,NaN);m_bucketHash=(0,l.c)(4,NaN);m_dbgCandidateCheckCount=0;m_progressTracker;m_nsr=new c;m_hashValues=-1;m_newClusters=-1;m_bTrackChanges=!1;m_bHasSegmentParentage=!1;m_shape=null;m_clusters=new Q;m_hashFunction=null;m_hashTable=null;m_progressCounter=0;constructor(e){this.m_progressTracker=e}progress_(){}collectClusterCandidates(e,t){let r=l.P.getNAN();this.m_shape.queryXY(e,r);let s=(r.x-this.m_origin.x)*this.m_invCellSize,i=(r.y-this.m_origin.y)*this.m_invCellSize,n=Math.trunc(s),a=Math.trunc(i),o=0;for(let e=0;e<=1;e+=1)for(let t=0;t<=1;t+=1){let r=ne(n+e,a+t),s=this.m_hashTable.getFirstInBucket(r);s!==te.st_nullNode()&&(this.m_bucketArray[o]=s,this.m_bucketHash[o]=r,o++)}for(let e=o-1;e>=1;e--){let t=this.m_bucketArray[e];for(let r=e-1;r>=0;r--)if(t===this.m_bucketArray[r]){this.m_bucketHash[r]=-1,o--,e!==o&&(this.m_bucketHash[e]=this.m_bucketHash[o],this.m_bucketArray[e]=this.m_bucketArray[o]);break}}for(let s=0;s<o;s++)this.collectNearestNeighbourCandidates(e,this.m_bucketHash[s],r,this.m_bucketArray[s],t)}collectNearestNeighbourCandidates(e,t,r,s,i){let n=l.P.getNAN();for(let a=s;a!==te.st_nullNode();a=this.m_hashTable.getNextInBucket(a)){let s=this.m_hashTable.getElement(a);e===s||-1!==t&&this.m_shape.getUserIndex(s,this.m_hashValues)!==t||(this.m_shape.queryXY(s,n),se(r.x,r.y,n.x,n.y,this.m_sqrTolerance)&&i.push(a))}}mergeClusters(e,t,r){let s=this.m_shape.getUserIndex(e,this.m_newClusters),i=this.m_shape.getUserIndex(t,this.m_newClusters);-1===s&&(s=this.m_clusters.createList(),this.m_clusters.addElement(s,e),this.m_shape.setUserIndex(e,this.m_newClusters,s)),-1===i?this.m_clusters.addElement(s,t):this.m_clusters.concatenateLists(s,i),this.m_shape.setUserIndex(t,this.m_newClusters,o.S.impossibleIndex2());let n=this.mergeVertices(e,t);if(r){let t=this.m_hashFunction.calculateHashFromVertex(e);this.m_shape.setUserIndex(e,this.m_hashValues,t)}return n}mergeVertices(e,t){let r=l.P.getNAN();this.m_shape.queryXY(e,r);let s=l.P.getNAN();this.m_shape.queryXY(t,s);let i,n,a,o,m=this.m_shape.getRank(e),h=this.m_shape.getRank(t),g=this.m_shape.getWeight(e),u=this.m_shape.getWeight(t),_=!1;if(m===h?(i=m,n=g+u,a=r.x,r.x!==s.x&&(a=(r.x*g+s.x*u)/n,_=!0),o=r.y,r.y!==s.y&&(o=(r.y*g+s.y*u)/n,_=!0)):(m>h?(a=r.x,o=r.y,n=g,i=m):(a=s.x,o=s.y,n=u,i=h),_=!r.equals(s)),_&&(this.m_shape.setXYMonotonic(e,a,o),this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(e,!0),this.m_bHasSegmentParentage)){let r=this.m_shape.getSegmentParentageBreakVertex(e)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(e,r),this.m_shape.setSegmentParentageBreakVertex(t,r)}return this.m_shape.setWeight(e,n),this.m_shape.setRank(e,i),_}needsClustering(){let e={stack:[],error:void 0,hasError:!1};try{(0,s.mS)(e,(0,l.m)(()=>{this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters)}),!1);let t=this.m_shape.getSelectedCount(),r=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin.assign(r.getLowerLeft());let i=Math.max(r.height(),r.width())/((0,l.i)()-1);this.m_cellSize<i&&(this.m_cellSize=i,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(this.m_shape.getSelectedCount()/3+1),this.m_clusters.reserveNodes(this.m_shape.getSelectedCount()/3+1),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new ae(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new te(4*t/3,this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let n=!1;for(let e=0;e<2;e++){let t=[],r=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let s=r.next();-1!==s;s=r.next()){if(this.progress_(),e>0&&this.m_shape.getUserIndex(s,this.m_newClusters)===o.S.impossibleIndex2())continue;let r;if(0===e?(r=this.m_hashFunction.calculateHashFromVertex(s),this.m_shape.setUserIndex(s,this.m_hashValues,r)):r=this.m_shape.getUserIndex(s,this.m_hashValues),this.collectClusterCandidates(s,t),0!==t.length){for(let e=0,r=t.length;e<r;e++){this.progress_();let r=t[e],i=this.m_hashTable.getElement(r);if(this.m_hashTable.deleteNode(r),!this.m_shape.isEqualXY(s,i))return this.m_nsr=new c(5,this.m_shape.getVertexIndex(s),this.m_shape.getVertexIndex(i)),n=!0,n;this.mergeClusters(s,i,!1)}t.length=0}0===e&&this.m_hashTable.addElement(s,r)}}return n}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}clusterNonReciprocal(){let e=this.m_shape.getSelectedCount(),t=this.m_shape.getEnvelope2D(this.m_progressTracker);this.m_origin=t.getLowerLeft();let r=Math.max(t.height(),t.width())/((0,l.i)()-1);this.m_cellSize<r&&(this.m_cellSize=r,this.m_invCellSize=1/this.m_cellSize),this.m_clusters.clear(),this.m_clusters.reserveLists(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_clusters.reserveNodes(Math.trunc(this.m_shape.getSelectedCount()/3+1)),this.m_hashValues=this.m_shape.createUserIndex(),this.m_newClusters=this.m_shape.createUserIndex(),this.m_hashFunction=new ae(this.m_shape,this.m_origin,this.m_sqrTolerance,this.m_invCellSize,this.m_hashValues),this.m_hashTable=new te(Math.trunc(4*e/3),this.m_hashFunction),this.m_hashTable.reserveElements(this.m_shape.getSelectedCount());let s=!1;{let e=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let t=e.next();-1!==t;t=e.next()){this.progress_();let e=this.m_hashFunction.calculateHashFromVertex(t);this.m_shape.setUserIndex(t,this.m_hashValues,e),this.m_hashTable.addElement(t,e)}}{let e=[],t=this.m_shape.queryVertexIteratorOnSelection(this.m_geometry);for(let r=t.next();-1!==r;r=t.next()){if(this.m_shape.getUserIndex(r,this.m_newClusters)===o.S.impossibleIndex2())continue;let t=this.m_shape.getUserIndex(r,this.m_hashValues);this.m_hashTable.deleteElement(r,t);let i=!1;for(;this.collectClusterCandidates(r,e),0!==e.length;){let t=0;for(let s=0,i=e.length;s<i;s++){this.progress_();let n=e[s],a=this.m_hashTable.getElement(n);this.m_hashTable.deleteNode(n);let o=s+1===i;t|=+!!this.mergeClusters(r,a,o)}if(i||=0!==t,s||=0!==t,e.length=0,!t)break}i&&(t=this.m_shape.getUserIndex(r,this.m_hashValues)),this.m_hashTable.addElement(r,t)}e.length=0}return s&&this.applyClusterPositions_(),this.m_hashTable=null,this.m_hashFunction=null,this.m_shape.removeUserIndex(this.m_hashValues),this.m_shape.removeUserIndex(this.m_newClusters),s}applyClusterPositions_(){let e=l.P.getNAN();for(let t=this.m_clusters.getFirstList();t!==Q.st_nullNode();t=this.m_clusters.getNextList(t)){let r=this.m_clusters.getFirst(t),s=this.m_clusters.getElement(r);this.m_shape.queryXY(s,e);let i=this.m_shape.getRank(s),n=this.m_shape.getWeight(s);for(r=this.m_clusters.getNext(r);r!==Q.st_nullNode();r=this.m_clusters.getNext(r)){let t=this.m_clusters.getElement(r);if(this.m_bTrackChanges?this.m_shape.isEqualXYPoint2D(t,e)||(this.m_shape.setXYMonotonicPoint2D(t,e),this.m_shape.setGeometryModifiedWithVertex(t,!0)):this.m_shape.setXYMonotonicPoint2D(t,e),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentageBreakVertex(s)||this.m_shape.getSegmentParentageBreakVertex(t);this.m_shape.setSegmentParentageBreakVertex(s,e),this.m_shape.setSegmentParentageBreakVertex(t,e)}this.m_shape.setWeight(t,n),this.m_shape.setRank(t,i)}}}}class le{static maxWeight=.1*Number.MAX_VALUE;static c_smallToleranceFactor=.01;static c_maxGeometryTypeToRankDelta=8;m_inputParts=[];m_resultParts1=[];m_resultParts2=[];m_resultSegments=[];m_freeSegments=[];m_inputSegments=[];m_param1=[];m_param2=[];m_tolerance=0;m_toleranceZ=0;m_point=new o.P;m_pointWeight=1;m_maxDensifyLimit=0;m_pointRank=0;m_changed1=!1;m_changed2=!1;m_adaptiveDensify=!1;clear(){this.freeAllResultSegments(),this.m_inputSegments.length=0,this.m_inputParts.length=0,this.m_resultParts1.length=0,this.m_resultParts2.length=0,this.m_param1.length=0,this.m_param2.length=0,this.m_adaptiveDensify=!1,this.m_changed1=!1,this.m_changed2=!1}newIntersectionPart_(e,t,r,s,i,n,a,o,l,m){return function(e,t,r,s,i,n,a,o,l,m){return{segmentIndex:e,weightStart:t,rankStart:r,weightEnd:s,rankEnd:i,weightInterior:n,rankInterior:a,segmentParentage:m,u:me(o,l)}}(e,t,r,s,i,n,a,o,l,m)}pushSegment(e,t,r,s,i,n,a,o,l,m){return this.m_inputParts.push(this.newIntersectionPart_(this.m_inputSegments.length,t,r,s,i,n,a,o,l,m)),this.m_inputSegments.push(e),this.m_inputParts.length-1}getResultSegmentCount(e){return this.m_adaptiveDensify?0===e?this.m_param1.length-1:this.m_param2.length-1:0===e?this.m_resultParts1.length:this.m_resultParts2.length}getResultPart_(e,t){return 0===e?this.m_resultParts1[t]:this.m_resultParts2[t]}getResultSegment(e,t){return this.m_resultSegments[this.getResultPart_(e,t).segmentIndex].get()}getSegmentChanged(e){return 0===e?this.m_changed1:this.m_changed2}getResultSegmentStartPointWeight(e,t){return this.getResultPart_(e,t).weightStart}getResultSegmentStartPointRank(e,t){return this.getResultPart_(e,t).rankStart}getResultSegmentSegmentParentage(e,t){return this.getResultPart_(e,t).segmentParentage}getResultSegmentStartPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakStart}getResultSegmentEndPointWeight(e,t){return this.getResultPart_(e,t).weightEnd}getResultSegmentEndPointRank(e,t){return this.getResultPart_(e,t).rankEnd}getResultSegmentEndPointIsBreak(e,t){return this.getResultPart_(e,t).u.bBreakEnd}getResultSegmentInteriorRank(e,t){return this.getResultPart_(e,t).rankInterior}getResultSegmentInteriorWeight(e,t){return this.getResultPart_(e,t).weightInterior}getResultPoint(){return this.m_point}getResultPointWeight(){return this.m_pointWeight}getResultPointRank(){return this.m_pointRank}getResultPointChanged(){return this.m_changed2}intersectLines(e,t){2!==this.m_inputSegments.length&&(0,i.d)(""),this.m_changed1=!1,this.m_changed2=!1,this.m_tolerance=e;let r=(0,l.e)(e*le.c_smallToleranceFactor),s=!1,n=this.m_inputParts[0],o=this.m_inputParts[1],m=this.m_inputSegments[n.segmentIndex],h=this.m_inputSegments[o.segmentIndex];if(t||5&(0,a.B)(!0,m,h,e,!0)){let t=(0,a.W)(!0,m,h,null,this.m_param1,this.m_param2,e);0===t&&(0,i.d)("");let g=Array(t);for(let e=0;e<t;++e)g[e]=l.P.getNAN();let u=new Float64Array(t),_=new Int32Array(t),p=Array(t),d=Array(t);for(let e=0;e<t;++e)p[e]=he(),d[e]=he();for(let e=0;e<t;e++){let t,i=this.m_param1[e],a=this.m_param2[e],c=n.rankInterior,f=n.weightInterior;0===i?(c=n.rankStart,f=n.weightStart,t=n.u.bBreakStart):1===i?(c=n.rankEnd,f=n.weightEnd,t=n.u.bBreakEnd):(this.m_changed1=!0,t=!1);let x,P=o.rankInterior,y=o.weightInterior;0===a?(P=o.rankStart,y=o.weightStart,x=o.u.bBreakStart):1===a?(P=o.rankEnd,y=o.weightEnd,x=o.u.bBreakEnd):(this.m_changed2=!0,x=!1);let E=c,S=P,C=1,I=0,v=l.P.getNAN();if(E===S){let t=m.getCoord2D(i),s=h.getCoord2D(a);C=f+y;let n=y/C;I=c,(0,l.J)(t,s,n,v);let o=l.P.sqrDistance(v,t),g=l.P.sqrDistance(v,s);p[e].bBigMove=o>r,d[e].bBigMove=g>r,!this.m_changed1&&!t.equals(v)&&(this.m_changed1=!0),!this.m_changed2&&!s.equals(v)&&(this.m_changed2=!0)}else if(E>S){v=m.getCoord2D(i);let t=h.getCoord2D(a);C=f,I=c;let s=l.P.sqrDistance(v,t);p[e].bBigMove=!1,d[e].bBigMove=s>r,!this.m_changed2&&!t.equals(v)&&(this.m_changed2=!0)}else{v=h.getCoord2D(a),C=y,I=P;let t=m.getCoord2D(i),s=l.P.sqrDistance(v,t);p[e].bBigMove=s>r,d[e].bBigMove=!1,!this.m_changed1&&!t.equals(v)&&(this.m_changed1=!0)}g[e].assign(v),u[e]=C,_[e]=I,p[e].bIsBreak=t||x,d[e].bIsBreak=t||x,s||=p[e].bBigMove||d[e].bBigMove}let c=n.rankInterior,f=n.weightInterior,x=0,P=-1;for(let r=0;r<=t;r++){let s=r<t?this.m_param1[r]:1;if(s!==x){let i=this.allocResultSegment(),a=this.m_resultSegments[i];m.queryCut(x,s,a,!1),a.get().snapControlPoints(e*e);let o,h,d,y,E=!1,S=!1,C=!1,I=!1,v=!1,G=l.P.getNAN(),w=l.P.getNAN();-1===P?(o=n.weightStart,h=n.rankStart,G=a.get().getStartXY(),C=n.u.bBreakStart):(h=_[P],o=u[P],E=p[P].bBigMove,G.assign(g[P]),C=p[P].bIsBreak,v=!0),r<t?(y=_[r],d=u[r],S=p[r].bBigMove,w.assign(g[r]),I=p[r].bIsBreak,v=!0):(d=n.weightEnd,y=n.rankEnd,w=a.get().getEndXY(),I=n.u.bBreakEnd),v&&a.get().setCoordsForIntersector(G,w,!0),this.m_resultParts1.push(this.newIntersectionPart_(i,o,h,d,y,f,c,C,I,n.segmentParentage));let b=this.m_resultParts1.at(-1);b.u.bBigMoveStart=E,b.u.bBigMoveEnd=S,x=s,P=r}else-1===P&&(P=r)}let y=(0,l.c)(t,0);for(let e=0;e<t;e++)y[e]=e;t>2?(y.sort((e,t)=>this.m_param2[e]<this.m_param2[t]?-1:+(this.m_param2[e]>this.m_param2[t])),(0,l.w)(this.m_param2)):2===t&&this.m_param2[0]>this.m_param2[1]&&(this.m_param2[1]=(0,l.s)(this.m_param2[0],this.m_param2[0]=this.m_param2[1]),y[1]=(0,l.s)(y[0],y[0]=y[1]));let E=o.rankInterior,S=o.weightInterior;x=0,P=-1;for(let r=0;r<=t;r++){let s=r<t?this.m_param2[r]:1;if(s!==x){let i=this.allocResultSegment(),n=this.m_resultSegments[i];h.queryCut(x,s,n,!1),n.get().snapControlPoints(e*e);let a,m,p,c,f=l.P.getNAN(),C=l.P.getNAN(),I=!1,v=!1,G=!1,w=!1,b=!1;if(-1!==P){let e=y[P];a=u[e],m=_[e],f.assign(g[e]),G=d[e].bBigMove,I=d[e].bIsBreak,b=!0}else a=o.weightStart,m=o.rankStart,f=n.get().getStartXY(),I=o.u.bBreakStart;if(r!==t){let e=y[r];p=u[e],c=_[e],C.assign(g[e]),w=d[e].bBigMove,v=d[e].bIsBreak,b=!0}else p=o.weightEnd,c=o.rankEnd,C=n.get().getEndXY(),v=o.u.bBreakEnd;b&&n.get().setCoordsForIntersector(f,C,!0),this.m_resultParts2.push(this.newIntersectionPart_(i,a,m,p,c,S,E,I,v,o.segmentParentage));let T=this.m_resultParts2.at(-1);T.u.bBigMoveStart=G,T.u.bBigMoveEnd=w,x=s,P=r}else-1===P&&(P=r)}return s?3:2}return 0}intersectLines3D(e,t,r,s){return(0,i.g)(0),1}intersect2D(e,t){let r=this.m_inputParts[0],s=this.m_inputParts[1],n=this.m_inputSegments[r.segmentIndex].getGeometryType(),a=this.m_inputSegments[s.segmentIndex].getGeometryType();return n!==i.G.enumLine||a!==i.G.enumLine?new pe(this).intersectCurves(e,t):this.intersectLines(e,t)}intersect2DEx(e,t,r,s,n){this.m_point.assignCopy(t),1!==this.m_inputSegments.length&&(0,i.d)(""),this.m_tolerance=e,this.m_changed1=!1,this.m_changed2=!1;let a=(0,l.e)(e*le.c_smallToleranceFactor),o=!1,m=this.m_inputParts[0],h=this.m_inputSegments[m.segmentIndex];if(n||h.isIntersectingPoint(t.getXY(),e,!0)){this.m_param1=(0,l.c)(16,NaN);let i=h.getClosestCoordinate(t.getXY(),!1);this.m_param1[0]=i;let n=m.rankInterior,g=m.weightInterior;0===i?(n=m.rankStart,g=m.weightStart):1===i?(n=m.rankEnd,g=m.weightEnd):this.m_changed1=!0;let u=n,_=r,p=s;u===_&&h.isCurve()&&(u=_+1);let d=1,c=0,f=new l.P;if(u===_){let e=h.getCoord2D(i),r=t.getXY();d=g+p,c=n;let s=p/d;(0,l.J)(e,r,s,f),!this.m_changed1&&!e.equals(f)&&(this.m_changed1=!0),!this.m_changed2&&!r.equals(f)&&(this.m_changed2=!0),o=l.P.sqrDistance(f,e)>a}else u>_?(f.assign(h.getCoord2D(i)),d=g,c=n,!this.m_changed2&&!f.equals(t.getXY())&&(this.m_changed2=!0)):(f.assign(h.getCoord2D(i)),d=p,c=_,!this.m_changed1&&!f.equals(t.getXY())&&(this.m_changed1=!0),o=l.P.sqrDistance(f,t.getXY())>a);let x=0,P=-1;for(let t=0;t<=1;t++){let r=t<1?this.m_param1[0]:1;if(r!==x){let s=this.allocResultSegment(),i=this.m_resultSegments[s];h.queryCut(x,r,i),i.get().snapControlPoints(e*e);let n=m.weightStart,a=m.weightEnd,o=m.rankStart,l=m.rankEnd,g=m.rankInterior,u=m.weightInterior,_=m.u.bBreakStart,p=m.u.bBreakEnd;-1!==P&&(n=d,o=c,_=!0,i.get().setCoordsForIntersector(f,i.get().getEndXY(),!0)),1!==t&&(a=d,l=c,p=!0,i.get().setCoordsForIntersector(i.get().getStartXY(),f,!0)),x=r,this.m_resultParts1.push(this.newIntersectionPart_(s,n,o,a,l,u,g,_,p,m.segmentParentage))}P=t}return this.m_point.setXY(f),this.m_pointWeight=d,this.m_pointRank=c,o?3:2}return 0}intersect3D(e,t,r,s){return(0,i.g)(0),1}intersect3DEx(e,t,r,s,n,a,o){return(0,i.g)(0),1}getTolerance(){return this.m_tolerance}freeAllResultSegments(){this.m_resultSegments.length=0,this.m_freeSegments.length=0}freeResultSegment(e){this.m_freeSegments.push(e)}allocResultSegment(){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let e=new a.S,t=this.m_resultSegments.length;return this.m_resultSegments.push(e),t}allocResultSegmentFromBuffer(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new a.S({copy:e}),r=this.m_resultSegments.length;return this.m_resultSegments.push(t),r}allocResultSegmentFromSegment(e){if(this.m_freeSegments.length)return this.m_freeSegments.pop();let t=new a.S({segment:e}),r=this.m_resultSegments.length;return this.m_resultSegments.push(t),r}}function me(e,t){return{bBigMoveStart:!1,bBigMoveEnd:!1,bBreakStart:e,bBreakEnd:t}}function he(){return{bBigMove:!1,bIsBreak:!1}}let ge=class{start=null;end=null;equalEdge=null;segmentIndex=-1;segmentParentage=-1;weight=0;rank=0;hasSegment(){return this.segmentIndex>=0}transferAttributes(e,t,r){if(1===t.getDescription().getAttributeCount())return;let s=e.parent.m_resultSegments[this.segmentIndex].get().getStartXY(),i=e.parent.m_resultSegments[this.segmentIndex].get().getEndXY(),n=new o.P;t.queryStart(n),r?(n.setXY(s),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n)):(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)),t.queryEnd(n),r?(n.setXY(i),e.parent.m_resultSegments[this.segmentIndex].get().setEnd(n)):(n.setXY(s),e.parent.m_resultSegments[this.segmentIndex].get().setStart(n))}copyFromWhenOverlap(e,t,r){this.equalEdge=t,t.equalEdge=this,this.segmentIndex=e.parent.allocResultSegmentFromBuffer(e.parent.m_resultSegments[t.segmentIndex]),this.segmentParentage=t.segmentParentage,this.weight=t.weight,this.rank=t.rank,r?(this.start.copyFrom(t.start),this.end.copyFrom(t.end)):(this.start.copyFrom(t.end),this.end.copyFrom(t.start),e.parent.m_resultSegments[this.segmentIndex].get().reverse())}getEnd(){return this.end}getNextInChain(){return this.end.nextInChain}getPrevInChain(){return this.start.prevInChain}};class ue{hash=0;pt=new l.P;prevInChain=null;nextInChain=null;prevInHash=null;nextInHash=null;prevEqual=null;nextEqual=null;weight=0;rank=0;bBigMove=!1;bIsBreak=!1;copyFrom(e){this.pt.assign(e.pt),this.weight=e.weight,this.rank=e.rank,this.bBigMove=e.bBigMove,this.bIsBreak=e.bIsBreak}nextNode(){return this.nextInChain?this.nextInChain.end:null}prevNode(){return this.prevInChain?this.prevInChain.start:null}equalListHead(){let e=this;for(;null!==e.prevEqual;e=e.prevEqual);return e}}function _e(e,t,r,s){return{edge1:e,edge2:t,recursion:r,bIsIntersecting:s}}class pe{parent;m_pairs=[];m_chainOrigin1=null;m_chainOrigin2=null;m_newNodes=[];m_hashTableOfEquals=[];m_hashTableOfEqualsSize=0;m_origin=new l.P;m_cell=new l.P;constructor(e){this.parent=e}addSegment(e,t,r,s,n,a,o,l,m,h,g){let u=this.newNode(this.parent.m_resultSegments[e].get().getStartXY(),r,s,m),_=this.newNode(this.parent.m_resultSegments[e].get().getEndXY(),n,a,h);this.newEdge(u,_,e,o,l,g),null===this.m_chainOrigin1?this.m_chainOrigin1=u:null===this.m_chainOrigin2?this.m_chainOrigin2=u:(0,i.g)(0)}intersectCurvesHelper(e,t,r,s,n){let o=this.getSegment(e).get(),m=this.getSegment(t).get();if(o.isDegenerate(0)||m.isDegenerate(0))return 0;let h=this.tryOverlapIntersectCurves(e,t,r,s);if(0!==h)return h;let g=(0,l.e)(.01*r),u=!1,_=this.processSharpCorners(o,m,r,n>4),p=_>0;if(!p){if(!(s||5&(0,a.T)(!0,!1,o,m,r,!0)))return 0;_=(0,a.W)(!0,o,m,null,this.parent.m_param1,this.parent.m_param2,r)}0===_&&(0,i.d)("");let d=o.getGeometryType(),c=m.getGeometryType(),f=(0,l.d)(l.P,_),x=(0,l.d)(l.P,_),P=(0,l.c)(_,NaN),y=(0,l.c)(_,NaN),E=(0,l.c)(_,NaN),S=(0,l.c)(_,NaN),C=(0,l.q)(he,_),I=(0,l.q)(he,_),v=!1,G=!1;for(let s=0;s<_;s++){let i=this.parent.m_param1[s],n=this.parent.m_param2[s],a=e.rank,h=e.weight,_=!0,w=!1;0===i?(a=e.start.rank,h=e.start.weight,w=e.start.bIsBreak):1===i?(a=e.end.rank,h=e.end.weight,w=e.end.bIsBreak):(v=!0,_=!1);let b=t.rank,T=t.weight,N=!1,D=!0;0===n?(b=t.start.rank,T=t.start.weight,N=t.start.bIsBreak):1===n?(b=t.end.rank,T=t.end.weight,N=t.end.bIsBreak):(G=!0,D=!1);let V=a,k=b;if(V===k&&(V*=le.c_maxGeometryTypeToRankDelta,k*=le.c_maxGeometryTypeToRankDelta,V+=de(d,o,!1),k+=de(c,m,!1)),_&&D&&k===V){let e=o.getCoord2D(i),t=m.getCoord2D(n);e.equals(t)&&(k=V-1)}let F=1,H=0,A=1,M=0,U=new l.P,q=new l.P,B=o.getCoord2D(i),O=m.getCoord2D(n);if(p&&l.P.distance(B,O)>r)U.setCoordsPoint2D(B),q.setCoordsPoint2D(O),F=h,A=T,H=a,M=b,C[s].bBigMove=!1,I[s].bBigMove=!1,w=!0,N=!0;else if(V===k){A=F=h+T,M=H=a;let e=T/F;(0,l.J)(B,O,e,U),q.setCoordsPoint2D(U);let t=l.P.sqrDistance(U,B),r=l.P.sqrDistance(U,O);C[s].bBigMove=t>g,I[s].bBigMove=r>g,!v&&!B.equals(U)&&(v=!0),!G&&!O.equals(q)&&(G=!0)}else if(V>k){U.setCoordsPoint2D(B),q.setCoordsPoint2D(U),A=F=h,M=H=a;let e=l.P.sqrDistance(U,O);C[s].bBigMove=!1,I[s].bBigMove=e>g,!G&&!O.equals(q)&&(G=!0)}else{q.setCoordsPoint2D(O),U.setCoordsPoint2D(q),A=F=T,M=H=b;let e=l.P.sqrDistance(U,B);C[s].bBigMove=e>g,I[s].bBigMove=!1,!v&&!B.equals(U)&&(v=!0)}f[s].assign(U),x[s].assign(q),P[s]=F,y[s]=A,E[s]=H,S[s]=M,C[s].bIsBreak=w||N,I[s].bIsBreak=w||N,u||=C[s].bBigMove||I[s].bBigMove,s>0&&(i===this.parent.m_param1[s-1]||n===this.parent.m_param2[s-1])&&(E[s]<=E[s-1]?(f[s].assign(x[s-1]),P[s]=y[s-1],E[s]=S[s-1],x[s].assign(x[s-1]),y[s]=y[s-1],S[s]=S[s-1],C[s].bBigMove||=C[s-1].bBigMove,I[s].bBigMove||=I[s-1].bBigMove,C[s].bIsBreak||=C[s-1].bIsBreak,I[s].bIsBreak||=I[s-1].bIsBreak):(f[s-1].assign(f[s]),P[s-1]=P[s],E[s-1]=E[s],x[s-1].assign(x[s]),y[s-1]=y[s],S[s-1]=S[s],C[s-1].bBigMove||=C[s].bBigMove,I[s-1].bBigMove||=I[s].bBigMove,C[s-1].bIsBreak||=C[s].bIsBreak,I[s-1].bIsBreak||=I[s].bIsBreak))}if(!(v||G||2!==_||d===i.G.enumLine&&c===i.G.enumLine)){if(this.processDoublyConnectedEdges(e,t,n+1,r))return this.parent.m_changed1=!0,this.parent.m_changed2=!0,2;(0,i.g)(0)}this.parent.m_changed1||=v,this.parent.m_changed2||=G;let w=e,b=e.end.weight,T=e.end.rank,N=e.end.bBigMove,D=e.end.bIsBreak,V=0,k=-1;for(let t=0;t<=_;t++){let s=t<_?this.parent.m_param1[t]:1;if(s!==V){let i=this.parent.allocResultSegment(),n=this.parent.m_resultSegments[i];o.queryCut(V,s,n,!1),n.get().snapControlPoints(r*r);let a,m,h,g,u=!1,p=!1,d=!1,c=!1,x=new l.P,y=new l.P;-1===k?(a=e.start.weight,m=e.start.rank,d=e.start.bBigMove,u=e.start.bIsBreak,x.assign(n.get().getStartXY())):(m=E[k],a=P[k],d=C[k].bBigMove,u=C[k].bIsBreak,x.assign(f[k])),t<_?(g=E[t],h=P[t],c=C[t].bBigMove,p=C[t].bIsBreak,y.assign(f[t])):(h=b,g=T,c=N,p=D,y.assign(n.get().getEndXY()));let S=w;s<1&&(this.splitEdgeInPlace(w),S=w.getNextInChain()),this.updateSegmentOnly(w,i),0!==w.start.hash&&!w.start.pt.equals(x)&&(this.m_newNodes.push(w.start),this.removeNodeFromHash(w.start),w.start.hash=0),0!==w.end.hash&&!w.end.pt.equals(y)&&(this.m_newNodes.push(w.end),this.removeNodeFromHash(w.end),w.end.hash=0),w.start.pt.assign(x),w.end.pt.assign(y),w.start.bBigMove||=d,w.end.bBigMove||=c,w.start.bIsBreak||=u,w.end.bIsBreak||=p,w.start.weight=a,w.start.rank=m,w.end.weight=h,w.end.rank=g,w=S,V=s,k=t}else-1===k&&(k=t)}let F=w.getNextInChain(),H=[];H.length=_;for(let e=0;e<_;e++)H[e]=e;_>2?(H.sort((e,t)=>(0,l.X)(this.parent.m_param2[e],this.parent.m_param2[t])),this.parent.m_param2.sort(l.X)):2===_&&this.parent.m_param2[0]>this.parent.m_param2[1]&&(this.parent.m_param2[1]=(0,l.s)(this.parent.m_param2[0],this.parent.m_param2[0]=this.parent.m_param2[1]),H[1]=(0,l.s)(H[0],H[0]=H[1])),w=t,b=t.end.weight,T=t.end.rank,N=t.end.bBigMove,D=t.end.bIsBreak,V=0,k=-1;for(let e=0;e<=_;e++){let s=e<_?this.parent.m_param2[e]:1;if(s!==V){let i=this.parent.allocResultSegment(),n=this.parent.m_resultSegments[i];m.queryCut(V,s,n,!1),n.get().snapControlPoints(r*r);let a,o,h,g,u=new l.P,p=new l.P,d=!1,c=!1,f=!1,P=!1;if(-1!==k){let e=H[k];a=y[e],o=S[e],u.assign(x[e]),f=I[e].bBigMove,d=I[e].bIsBreak}else a=t.start.weight,o=t.start.rank,f=t.start.bBigMove,d=t.start.bIsBreak,u.assign(n.get().getStartXY());if(e!==_){let t=H[e];h=y[t],g=S[t],p.assign(x[t]),P=I[t].bBigMove,c=I[t].bIsBreak}else h=b,g=T,P=N,c=D,p.assign(n.get().getEndXY());let E=w;s<1&&(this.splitEdgeInPlace(w),E=w.getNextInChain()),this.updateSegmentOnly(w,i),0!==w.start.hash&&!w.start.pt.equals(u)&&(this.m_newNodes.push(w.start),this.removeNodeFromHash(w.start),w.start.hash=0),0!==w.end.hash&&!w.end.pt.equals(p)&&(this.m_newNodes.push(w.end),this.removeNodeFromHash(w.end),w.end.hash=0),w.start.pt.assign(u),w.end.pt.assign(p),w.start.bBigMove||=f,w.end.bBigMove||=P,w.start.bIsBreak||=d,w.end.bIsBreak||=c,w.start.weight=a,w.start.rank=o,w.end.weight=h,w.end.rank=g,w=E,V=s,k=e}else-1===k&&(k=e)}let A=w.getNextInChain();return this.postProcessResultPartsForCurves(e,F,t,A,n+1),u?3:2}intersectCurves(e,t){2!==this.parent.m_inputSegments.length&&(0,i.d)(""),this.parent.m_changed1=!1,this.parent.m_changed2=!1,this.parent.m_tolerance=e,this.m_hashTableOfEqualsSize=0,this.m_hashTableOfEquals=(0,l.D)(16);let r=n.Envelope2D.constructEmpty();for(let e=0;e<2;e++){let t=this.parent.allocResultSegmentFromSegment(this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex]),s=n.Envelope2D.constructEmpty();this.parent.m_inputSegments[this.parent.m_inputParts[e].segmentIndex].queryLooseEnvelope(s),r.mergeEnvelope2D(s);let i=this.parent.m_inputParts[e];this.addSegment(t,0,i.weightStart,i.rankStart,i.weightEnd,i.rankEnd,i.weightInterior,i.rankInterior,i.u.bBreakStart,i.u.bBreakEnd,i.segmentParentage)}r.inflateCoords(100*e,100*e),this.m_origin.assign(r.getLowerLeft()),this.m_cell.setCoords(2*e,2*e),this.m_pairs.push(_e(this.m_chainOrigin1.nextInChain,this.m_chainOrigin2.nextInChain,0,t));let s=0,a=!0;for(;this.m_pairs.length;){let t=this.m_pairs.at(-1);this.m_pairs.pop(),(0,i.g)(t.recursion>=0),(0,i.g)(t.recursion<=256),this.clusterNodes(e);let r=this.intersectCurvesHelper(t.edge1,t.edge2,e,t.bIsIntersecting,t.recursion);a&&(a=!1,s=r)}for(let e=0;e<2;e++){let t=0===e?this.parent.m_resultParts1:this.parent.m_resultParts2,r=0===e?this.m_chainOrigin1:this.m_chainOrigin2;for(let e=r.nextInChain;null!=e;e=e.getNextInChain())t.push(this.parent.newIntersectionPart_(e.segmentIndex,e.start.weight,e.start.rank,e.end.weight,e.end.rank,e.weight,e.rank,e.start.bIsBreak,e.end.bIsBreak,e.segmentParentage)),t.at(-1).u.bBigMoveStart=e.start.bBigMove,t.at(-1).u.bBigMoveEnd=e.end.bBigMove}return s}tryOverlapIntersectCurves(e,t,r,s){let n=this.parent.m_resultSegments[e.segmentIndex].get(),o=this.parent.m_resultSegments[t.segmentIndex].get(),m=n.getStartXY().equals(o.getStartXY())&&n.getEndXY().equals(o.getEndXY()),h=n.getStartXY().equals(o.getEndXY())&&n.getEndXY().equals(o.getStartXY());if(!m&&!h)return 0;let g=(0,a.$)(n,o,!0);if(0!==g&&(0,a.a0)(n,o)&&e.segmentParentage===t.segmentParentage){let e=!1;if(g>0)e=n.equals(o);else{(0,i.g)(-1===g);let t=new a.S({segment:o});t.get().reverse(),e=n.equals(t.get())}if(e)return 1}let u=r*le.c_smallToleranceFactor,_=!1;if(0===g){let e=[.5,.25,.75,.125,.375,.625,.875,.5625,.3125];for(let t=0,s=e.length;t<s;++t){let s=e[t],i=new l.P;n.queryCoord2D(s,i);let a=o.getClosestCoordinate(i,!1),m=new l.P;o.queryCoord2D(a,m);let h=l.P.distance(i,m);if(h>r)return 0;_||=h>u}for(let t=0,s=e.length;t<s;++t){let s=e[t],i=new l.P;o.queryCoord2D(s,i);let a=n.getClosestCoordinate(i,!1),m=new l.P;n.queryCoord2D(a,m);let h=l.P.distance(i,m);if(h>r)return 0;_||=h>u}}let p=e.rank,d=t.rank;return p===d&&(p*=le.c_maxGeometryTypeToRankDelta,d*=le.c_maxGeometryTypeToRankDelta,p+=de(n.getGeometryType(),n,!0),d+=de(o.getGeometryType(),o,!0)),p>d?(t.copyFromWhenOverlap(this,e,m),t.transferAttributes(this,n,m)):d>p?(e.copyFromWhenOverlap(this,t,m),e.transferAttributes(this,o,m)):e.segmentParentage<=t.segmentParentage?(e.weight+=t.weight,t.copyFromWhenOverlap(this,e,m),t.transferAttributes(this,n,m)):(t.weight=e.weight+t.weight,e.copyFromWhenOverlap(this,t,m),e.transferAttributes(this,o,m)),_?3:2}postProcessResultPartsForCurves(e,t,r,s,n){n===(0,l.Y)()&&(0,i.d)("curve_helper");for(let r=e;r!==t;r=r.getNextInChain())this.updateSegmentToNodes(r);for(let e=r;e!==s;e=e.getNextInChain())this.updateSegmentToNodes(e);for(let a=e;a!==t;a=a.getNextInChain()){let e=a.end.pt.sub(a.start.pt);for(let t=r;t!==s;t=t.getNextInChain()){let r=0;if(a.start.pt.equals(t.start.pt)&&a.end.pt.equals(t.end.pt)?r=1:a.start.pt.equals(t.end.pt)&&a.end.pt.equals(t.start.pt)&&(r=-1),!r){let r=+!!a.start.pt.equals(t.start.pt);if(r||(r=a.end.pt.equals(t.end.pt)?2:0,r||(r=a.end.pt.equals(t.start.pt)?3:0,r||=a.start.pt.equals(t.end.pt)?4:0)),r){let s,o=t.end.pt.sub(t.start.pt),l=e.dotProduct(o);switch(r){case 1:case 2:s=l>0;break;case 3:case 4:s=l<0;break;default:(0,i.d)("post_process_result_parts_for_curves_")}s&&this.m_pairs.push(_e(a,t,n,!1))}continue}let s=this.parent.m_resultSegments[a.segmentIndex],o=this.parent.m_resultSegments[t.segmentIndex],m=[.5,.25,.75];for(let e=0,t=m.length;e<t;++e){let t=m[e],i=new l.P;s.get().queryCoord2D(t,i);let n=o.get().getClosestCoordinate(i,!1),a=new l.P;if(o.get().queryCoord2D(n,a),l.P.distance(i,a)>this.parent.m_tolerance){r=0;break}}if(!r){this.m_pairs.push(_e(a,t,n,!1));continue}for(let e=0,t=m.length;e<t;++e){let t=m[e],i=new l.P;o.get().queryCoord2D(t,i);let n=s.get().getClosestCoordinate(i,!1),a=new l.P;if(s.get().queryCoord2D(n,a),l.P.distance(i,a)>this.parent.m_tolerance){r=0;break}}if(!r){this.m_pairs.push(_e(a,t,n,!1));continue}a.equalEdge=t,t.equalEdge=a;let h=a.rank,g=t.rank;h===g&&(h*=le.c_maxGeometryTypeToRankDelta,g*=le.c_maxGeometryTypeToRankDelta,h+=de(s.get().getGeometryType(),s.get(),!0),g+=de(o.get().getGeometryType(),o.get(),!0)),h>g||h===g&&a.segmentParentage<=t.segmentParentage?(s.copyTo(o,!1),t.segmentParentage=a.segmentParentage,-1===r&&o.get().reverse()):(o.copyTo(s,!1),a.segmentParentage=t.segmentParentage,-1===r&&s.get().reverse());break}}this.updateAttachedEdgesAfterNodeChange(e.start),t&&this.updateAttachedEdgesAfterNodeChange(t.start),this.updateAttachedEdgesAfterNodeChange(r.start),s&&this.updateAttachedEdgesAfterNodeChange(s.start)}processDoublyConnectedEdges(e,t,r,s){r===(0,l.Y)()&&(0,i.d)("curve_helper");let n=this.getSegment(e).get(),o=this.getSegment(t).get(),m=n.getStartXY().equals(o.getStartXY())&&n.getEndXY().equals(o.getEndXY())?1:n.getEndXY().equals(o.getStartXY())&&n.getStartXY().equals(o.getEndXY())?-1:0;if(0!==m){let i=new a.S;n.queryCut(0,.5,i),i.get().snapControlPoints(s*s);let l=new a.S;n.queryCut(.5,1,l),l.get().snapControlPoints(s*s),this.splitEdgeInPlace(e),e.end.pt=i.get().getEndXY(),e.segmentIndex=this.parent.allocResultSegmentFromBuffer(i),e.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l);let h=o.getClosestCoordinate(e.end.pt,!1);return Math.abs(h-.5)>.2&&(h=.5),o.queryCut(0,h,i),i.get().snapControlPoints(s*s),o.queryCut(h,1,l),l.get().snapControlPoints(s*s),this.splitEdgeInPlace(t),t.end.pt=i.get().getEndXY(),t.segmentIndex=this.parent.allocResultSegmentFromBuffer(i),t.getNextInChain().segmentIndex=this.parent.allocResultSegmentFromBuffer(l),m>0?(this.m_pairs.push(_e(e,t,r,!1)),this.m_pairs.push(_e(e.getNextInChain(),t.getNextInChain(),r,!1))):(this.m_pairs.push(_e(e,t.getNextInChain(),r,!1)),this.m_pairs.push(_e(e.getNextInChain(),t,r,!1))),!0}return!1}newNode(e,t,r,s){let i=new ue;return this.m_newNodes.push(i),i.pt=e,i.rank=r,i.weight=t,i.bIsBreak=s,i}newEdge(e,t,r,s,i,n){let a=new ge;return a.start=e,a.end=t,e.nextInChain=a,t.prevInChain=a,a.segmentIndex=r,a.segmentParentage=n,a.rank=i,a.weight=s,a}splitEdgeInPlace(e){e.segmentIndex=-1;let t=new ge,r=new ue;this.m_newNodes.push(r),r.pt.setNAN(),r.nextInChain=t,r.prevInChain=e,r.prevInHash=null,r.nextInHash=null,r.prevEqual=null,r.nextEqual=null,r.weight=e.weight,r.rank=e.rank,r.bIsBreak=!1,r.bBigMove=!1,t.start=r,t.segmentIndex=-1,t.end=e.end,t.end.prevInChain=t,t.rank=e.rank,t.weight=e.weight,t.segmentParentage=e.segmentParentage,e.end=r,e.equalEdge&&(e.equalEdge.equalEdge=null),e.equalEdge=null}updateSegmentOnly(e,t){e.segmentIndex=t}updateAttachedEdgesAfterNodeChange(e){for(let t=e.equalListHead();null!==t;t=t.nextEqual)this.updateAttachedEdgesAfterNodeChangeImpl(t)}updateAttachedEdgesAfterNodeChangeImpl(e){let t=e.prevInChain;if(t&&t.hasSegment()){let r=this.getSegment(t).get();e.pt.equals(r.getEndXY())||(r.setCoordsForIntersector(t.start.pt,t.end.pt,!1),r.ensureXYMonotone())}let r=e.nextInChain;if(r&&r.hasSegment()){let t=this.getSegment(r).get();e.pt.equals(t.getStartXY())||(t.setCoordsForIntersector(r.start.pt,r.end.pt,!1),t.ensureXYMonotone())}}updateSegmentToNodes(e){let t=this.getSegment(e).get();(!e.start.pt.equals(t.getStartXY())||!e.end.pt.equals(t.getEndXY()))&&(t.setCoordsForIntersector(e.start.pt,e.end.pt,!1),t.ensureXYMonotone()),this.updateAttachedEdgesAfterNodeChange(e.start),this.updateAttachedEdgesAfterNodeChange(e.end)}getSegment(e){return this.parent.m_resultSegments[e.segmentIndex]}clusterNodes(e){let t=!1,r=[],s=[],i=[];for(let e=0,t=this.m_newNodes.length;e<t;e++){let r=this.m_newNodes[e];if(null===r)continue;let s=r;for(let i=e+1;i<t;i++){let e=this.m_newNodes[i];null!==e&&r.pt.equals(e.pt)&&(s.nextInHash=e,e.prevInHash=s,s=e,this.m_newNodes[i]=null)}}for(let n=0,a=this.m_newNodes.length;n<a;n++){let a=this.m_newNodes[n];if(null==a)continue;for(a.hash=this.calculateHash(a.pt);;){let n=(0,l.D)(4),o=this.hashTableBinsToCheck(a,n);for(let t=0;t<o;t++)if(null!==n[t])for(let o=n[t];null!==o;){let t=o.nextInHash;l.P.distance(a.pt,o.pt)<=e&&(r.push(o),this.removeNodeFromHash(o),o.hash=0,i.push(o),s.push(o)),o=t}let m=!1;for(let e of r)if(!a.pt.equals(e.pt)){let r=ie(a.pt,e.pt,a.weight,a.rank,e.weight,e.rank);a.pt.assign(r.pt),a.weight=r.weight,a.rank=r.rank,m=!0,t=!0}if(r.length=0,!m)break;a.hash=this.calculateHash(a.pt)}i.push(a),s.push(a);for(let e=a.nextInHash;null!==e;){e.prevInHash=null;let t=e.nextInHash;e.nextInHash=null,i.push(e),s.push(e),e=t}let o=a.hash,m=null,h=null;for(let e of s)a!==e&&(e.hash=o,e.pt.assign(a.pt),e.rank=a.rank,e.weight=a.weight),e.prevInHash=m,m&&(m.nextInHash=e),e.prevEqual=h,e.nextEqual=null,h&&(h.nextEqual=e),h=e,m=e;let g=o%this.m_hashTableOfEquals.length;m.nextInHash=this.m_hashTableOfEquals[g],null!==this.m_hashTableOfEquals[g]&&(this.m_hashTableOfEquals[g].prevInHash=m),this.m_hashTableOfEquals[g]=s[0],this.m_hashTableOfEqualsSize+=s.length,s.length=0,this.rehashIfNeeded()}if(this.m_newNodes.length=0,t)for(let e of i)this.updateAttachedEdgesAfterNodeChange(e)}rehashIfNeeded(){if(2*this.m_hashTableOfEqualsSize>this.m_hashTableOfEquals.length){let e=this.m_hashTableOfEquals;this.m_hashTableOfEquals=(0,l.D)(2*e.length),this.m_hashTableOfEqualsSize=0;for(let t of e){let e=t;for(;e;){let t=e.nextInHash;e.nextInHash=null,e.prevInHash=null,this.addNodeToHashImpl(e),e=t}}}}addNodeToHashImpl(e){let t=e.hash%this.m_hashTableOfEquals.length,r=this.m_hashTableOfEquals[t];e.nextInHash=r,null!==r&&(r.prevInHash=e),this.m_hashTableOfEquals[t]=e,this.m_hashTableOfEqualsSize++}removeNodeFromHash(e){let t=e.hash%this.m_hashTableOfEquals.length,r=e.prevInHash,s=e.nextInHash;r?r.nextInHash=s:this.m_hashTableOfEquals[t]=s,s&&(s.prevInHash=r),this.m_hashTableOfEqualsSize--,e.prevInHash=null,e.nextInHash=null}hashTableBinsToCheck(e,t){let r=(e.pt.x-this.m_origin.x)/this.m_cell.x,s=(e.pt.y-this.m_origin.y)/this.m_cell.y,i=(0,l.i)()-1,n=Math.round((0,l.a)(r,-i,i)),a=Math.round((0,l.a)(s,-i,i)),o=n|a<<32;o=(0,l.C)(o),t[0]=this.m_hashTableOfEquals[o%this.m_hashTableOfEquals.length];let m=n+1|a<<32;m=(0,l.C)(m);let h=1;t[1]=this.m_hashTableOfEquals[m%this.m_hashTableOfEquals.length],t[1]!==t[0]&&(h=2);let g=n+1|a+1<<32;g=(0,l.C)(g),t[h]=this.m_hashTableOfEquals[g%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}h++;let u=n|a+1<<32;u=(0,l.C)(u),t[h]=this.m_hashTableOfEquals[u%this.m_hashTableOfEquals.length];for(let e=0;e<h;e++)if(t[h]===t[e]){h--;break}return h++,h}calculateHash(e){let t=(e.x-this.m_origin.x)/this.m_cell.x,r=(e.y-this.m_origin.y)/this.m_cell.y,s=(0,l.i)()-1,i=Math.round((0,l.a)(t,-s,s))|Math.round((0,l.a)(r,-s,s))<<32;return i=(0,l.C)(i),0===i&&(i=1),i}processSharpCorners(e,t,r,s){if(this.parent.m_param1.length=0,this.parent.m_param2.length=0,e.getStartXY().equals(t.getStartXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,0,0,r,2,i,n,s);if(o){this.parent.m_param1.push(0),this.parent.m_param2.push(0);for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return o+1}}if(e.getEndXY().equals(t.getEndXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,1,1,r,2,i,n,s);if(o){for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(1),o+1}}if(e.getStartXY().equals(t.getEndXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,0,1,r,2,i,n,s);if(o){this.parent.m_param1.push(0),this.parent.m_param2.push(1);for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return o+1}}if(e.getEndXY().equals(t.getStartXY())){let i=[0,0],n=[0,0],o=(0,a.a1)(e,t,1,0,r,2,i,n,s);if(o){for(let e=0;e<o;e++)this.parent.m_param1.push(i[e]),this.parent.m_param2.push(n[e]);return this.parent.m_param1.push(1),this.parent.m_param2.push(0),o+1}}return 0}}function de(e,t,r){let s=0;switch(e){case i.G.enumLine:s=0;break;case i.G.enumBezier:s=2;break;case i.G.enumRationalBezier2:s=3;break;case i.G.enumBezier2:s=1;break;case i.G.enumEllipticArc:s=0===t.projectionBehavior()?5:4;break;default:(0,i.d)("")}return r?5-s:s}class ce extends ${m_parent;constructor(e){super(e.m_shape,e.m_tolerance,!1),this.m_parent=e}compare(e,t,r){if(this.m_bIntersectionDetected)return-1;let s=e.getElement(r),i=this.m_parent.getEdgeOriginVertices(t),n=this.m_parent.m_edgeVertices.getFirstElement(i),a=this.m_parent.getEdgeOriginVertices(s),o=this.m_parent.m_edgeVertices.getFirstElement(a);return this.m_currentNode=r,this.compareSegments(t,n,s,o)}}class fe extends ee{m_parent;constructor(e){super(e.m_shape,e.m_tolerance),this.m_parent=e}compare(e,t){if(this.m_bIntersectionDetected)return-1;let r=e.getElement(t),s=this.m_parent.getEdgeOriginVertices(r),i=this.m_parent.m_edgeVertices.getFirstElement(s);return this.m_currentNode=t,this.compareVertex(e,t,i)}}class xe extends o.F{m_shape;pt1=l.P.getNAN();pt2=l.P.getNAN();constructor(e){super(),this.m_shape=e}compare(e,t,r){this.m_shape.queryXY(t,this.pt1);let s=e.getElement(r);return this.m_shape.queryXY(s,this.pt2),this.pt1.compare(this.pt2)}}class Pe{m_shape;m_point=l.P.getNAN();m_pt=l.P.getNAN();constructor(e){this.m_shape=e}setPoint(e){this.m_point.setCoordsPoint2D(e)}compare(e,t){let r=e.getElement(t);return this.m_shape.queryXY(r,this.m_pt),this.m_point.compare(this.m_pt)}}class ye{m_shape=null;m_progressTracker=null;m_edges=new o.S(8);m_clusters=new o.S(5);m_clusterVertices=new Q(!1);m_edgeVertices=new Q(!1);m_helperPoint=new o.P;m_eventQ=new o.T;m_sweepStructure=new o.T;m_bComplications=!1;m_bTrackChanges;m_sweepComparator=null;m_tempEdgeBuffer=[];m_modifiedClusters=[];m_edgesToInsertInSweepStructure=[];m_prevNeighbour=-1;m_nextNeighbour=-1;m_bContinuingSegmentChainOptimization=!1;m_progressCounter=0;m_segmentIntersector=new le;m_segBuf1=new a.S;m_segBuf2=new a.S;m_sweepPoint=new l.P(0,0);m_tolerance=0;m_toleranceSqr=0;m_sweepPointCluster=-1;m_vertexClusterIndex=-1;m_bCracked=!1;m_bSweepPointClusterWasModified=!1;constructor(e,t){this.m_progressTracker=e,this.m_bTrackChanges=t}hadComplications(){return this.m_bComplications}sweep(e,t){let r=new m.T;r.setSwapCoordinates(),e.applyTransformation(r),this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t;let s=this.sweepImpl_();return e.applyTransformation(r),s||=(this.fillEventQueuePass2(),this.sweepImpl_()||s),this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_shape=null,this.m_bCracked}sweepVertical(e,t){this.setEditShape_(e),this.m_bCracked=!1,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bComplications=!1;let r=this.sweepImpl_();if(!this.m_bComplications){let s=e.filterClosePoints(t,!0,!1,this.m_bTrackChanges,-1);this.m_bComplications=1===s,r||=1===s}return-1!==this.m_vertexClusterIndex&&(this.m_shape.removeUserIndex(this.m_vertexClusterIndex),this.m_vertexClusterIndex=-1),this.m_shape=null,r}getEdgeCluster(e,t){return this.m_edges.getField(e,0+t)}setEdgeCluster_(e,t,r){this.m_edges.setField(e,0+t,r)}getEdgeOriginVertices(e){return this.m_edges.getField(e,2)}setEdgeOriginVertices_(e,t){this.m_edges.setField(e,2,t)}getNextEdgeEx(e,t){return this.m_edges.getField(e,3+t)}setNextEdgeEx_(e,t,r){this.m_edges.setField(e,3+t,r)}getEdgeSweepNode(e){return this.m_edges.getField(e,7)}setEdgeSweepNode_(e,t){this.m_edges.setField(e,7,t)}getNextEdge(e,t){let r=this.getEdgeEnd(e,t);return this.m_edges.getField(e,3+r)}setNextEdge_(e,t,r){let s=this.getEdgeEnd(e,t);this.m_edges.setField(e,3+s,r)}getPrevEdge(e,t){let r=this.getEdgeEnd(e,t);return this.m_edges.getField(e,5+r)}setPrevEdge_(e,t,r){let s=this.getEdgeEnd(e,t);this.m_edges.setField(e,5+s,r)}getClusterVertices(e){return this.m_clusters.getField(e,0)}setClusterVertices_(e,t){this.m_clusters.setField(e,0,t)}getClusterSweepEdgeList(e){return this.m_clusters.getField(e,2)}setClusterSweepEdgeList_(e,t){this.m_clusters.setField(e,2,t)}getClusterFirstEdge(e){return this.m_clusters.getField(e,1)}setClusterFirstEdge_(e,t){this.m_clusters.setField(e,1,t)}getClusterEventQNode(e){return this.m_clusters.getField(e,3)}setClusterEventQNode_(e,t){this.m_clusters.setField(e,3,t)}newCluster_(e){let t=this.m_clusters.newElement(),r=this.m_clusterVertices.createList();return this.setClusterVertices_(t,r),-1!==e&&(this.m_clusterVertices.addElement(r,e),this.m_shape.setUserIndex(e,this.m_vertexClusterIndex,t)),t}deleteCluster_(e){this.m_clusters.deleteElement(e)}addVertexToCluster_(e,t){let r=this.getClusterVertices(e);this.m_clusterVertices.addElement(r,t),this.m_shape.setUserIndex(t,this.m_vertexClusterIndex,e)}newEdge_(e){let t=this.m_edges.newElement(),r=this.m_edgeVertices.createList();return this.setEdgeOriginVertices_(t,r),-1!==e&&this.m_edgeVertices.addElement(r,e),t}addVertexToEdge_(e,t){let r=this.getEdgeOriginVertices(e);this.m_edgeVertices.addElement(r,t)}deleteEdge_(e){this.m_edges.deleteElement(e);let t=this.m_edgesToInsertInSweepStructure.findIndex(t=>t===e);t>=0&&(0,l.N)(this.m_edgesToInsertInSweepStructure,t)}addEdgeToCluster(e,t){-1===this.getEdgeCluster(e,0)?this.setEdgeCluster_(e,0,t):-1===this.getEdgeCluster(e,1)?this.setEdgeCluster_(e,1,t):(0,i.d)(""),this.addEdgeToClusterImpl_(e,t)}addEdgeToClusterImpl_(e,t){let r=this.getClusterFirstEdge(t);if(-1!==r){let s=this.getNextEdge(r,t);this.setPrevEdge_(s,t,e),this.setNextEdge_(e,t,s),this.setNextEdge_(r,t,e),this.setPrevEdge_(e,t,r)}else this.setPrevEdge_(e,t,e),this.setNextEdge_(e,t,e),this.setClusterFirstEdge_(t,e)}getEdgeEnd(e,t){return this.getEdgeCluster(e,0)===t?0:1}mergeClusters_(e,t){this.dbgCheckCluster_(e),this.dbgCheckCluster_(t);let r=this.getClusterEventQNode(t);-1!==r&&(this.m_eventQ.deleteNode(r),this.setClusterEventQNode_(t,-1));let s=this.getClusterFirstEdge(e),i=this.getClusterFirstEdge(t);if(-1!==i){let r=i,n=i,a=!1;do{this.dbgCheckEdge_(r),a=!1;let s=this.getEdgeEnd(r,t),o=this.getNextEdgeEx(r,s);if(this.getEdgeCluster(r,s+1&1)===e){this.disconnectEdge_(r);let e=this.getEdgeOriginVertices(r);if(this.m_edgeVertices.deleteList(e),this.deleteEdge_(r),r===o){i=-1;break}i===r&&(i=this.getClusterFirstEdge(t),n=o,a=!0)}r=o}while(r!==n||a);if(-1!==i){do{let s=this.getEdgeEnd(r,t),i=this.getNextEdgeEx(r,s);this.setEdgeCluster_(r,s,e),r=i}while(r!==n);if(s=this.getClusterFirstEdge(e),-1!==s){let t=this.getNextEdge(s,e),r=this.getNextEdge(i,e);t===s?(this.setClusterFirstEdge_(e,i),this.addEdgeToClusterImpl_(s,e),this.setClusterFirstEdge_(e,s)):r===i&&this.addEdgeToClusterImpl_(i,e),this.setNextEdge_(i,e,t),this.setPrevEdge_(t,e,i),this.setNextEdge_(s,e,r),this.setPrevEdge_(r,e,s)}else this.setClusterFirstEdge_(e,i)}}let n=this.getClusterVertices(e),a=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(a);-1!==t;t=this.m_clusterVertices.getNext(t)){let r=this.m_clusterVertices.getElement(t);this.m_shape.setUserIndex(r,this.m_vertexClusterIndex,e)}this.m_clusterVertices.concatenateLists(n,a),this.deleteCluster_(t),this.dbgCheckCluster_(e)}mergeEdges_(e,t){this.dbgCheckEdge_(e),this.dbgCheckEdge_(t);let r=this.getEdgeCluster(e,0),s=this.getEdgeCluster(e,1),i=this.getEdgeCluster(t,0),n=this.getEdgeCluster(t,1),a=this.getEdgeOriginVertices(e),o=this.getEdgeOriginVertices(t);if(this.m_edgeVertices.concatenateLists(a,o),t===this.getClusterFirstEdge(r)&&this.setClusterFirstEdge_(r,e),t===this.getClusterFirstEdge(s)&&this.setClusterFirstEdge_(s,e),this.disconnectEdge_(t),this.deleteEdge_(t),!(r===i&&s===n||s===i&&r===n)){let e=this.getClusterXY(r),t=this.getClusterXY(i);e.isEqualPoint2D(t)?(r!==i&&this.mergeClusters_(r,i),s!==n&&this.mergeClusters_(s,n)):(s!==i&&this.mergeClusters_(s,i),r!==n&&this.mergeClusters_(r,n))}this.dbgCheckEdge_(e)}disconnectEdge_(e){let t=this.getEdgeCluster(e,0),r=this.getEdgeCluster(e,1);this.disconnectEdgeFromCluster_(e,t),this.disconnectEdgeFromCluster_(e,r)}disconnectEdgeFromCluster_(e,t){let r=this.getNextEdge(e,t),s=this.getPrevEdge(e,t),i=this.getClusterFirstEdge(t);r===e?this.setClusterFirstEdge_(t,-1):(this.setNextEdge_(s,t,r),this.setPrevEdge_(r,t,s),i===e&&this.setClusterFirstEdge_(t,r))}applyIntersectorToEditShape_(e,t,r){let s=this.m_edgeVertices.getFirst(e),i=this.m_edgeVertices.getElement(s),n=this.getClusterFromVertex(i),a=this.m_shape.getNextVertex(i),o=this.getClusterFromVertex(a),l=this.m_shape.getXY(i),m=this.m_shape.getXY(a),h=!1,g=!1,u=t.getResultSegment(r,0).getStartXY(),_=t.getResultSegment(r,t.getResultSegmentCount(r)-1).getEndXY();l.equals(u)||(h=!0),m.equals(_)||(g=!0),this.m_shape.splitSegmentWithIntersector(i,t,r,!0,!0);let p=this.m_bTrackChanges&&t.getSegmentChanged(r);for(p&&this.m_shape.setGeometryModifiedWithVertex(i,!0),s=this.m_edgeVertices.getNext(s);-1!==s;s=this.m_edgeVertices.getNext(s)){let e=this.m_edgeVertices.getElement(s),i=this.getClusterFromVertex(e)===n;this.m_shape.splitSegmentWithIntersector(e,t,r,i,!0),p&&this.m_shape.setGeometryModifiedWithVertex(e,!0)}if(h&&this.updateClusterXY(!0,n,u,t.getResultSegmentStartPointWeight(r,0),t.getResultSegmentStartPointRank(r,0)),g){let e=t.getResultSegmentCount(r)-1;this.updateClusterXY(!0,o,_,t.getResultSegmentEndPointWeight(r,e),t.getResultSegmentEndPointRank(r,e))}}createEdgesAndClustersFromSplitEdge_(e,t,r){this.dbgCheckNewEdgesArray_();let s=this.getEdgeOriginVertices(e),i=this.getEdgeCluster(e,0),n=this.getEdgeCluster(e,1),a=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(a);let l=o.S.impossibleIndex3();this.setEdgeSweepNode_(a,l),this.m_tempEdgeBuffer.push(a),this.addEdgeToCluster(a,i);let m=t.getResultSegmentCount(r);for(let e=1;e<m;e++){let e=this.newCluster_(-1);this.m_modifiedClusters.push(e),this.m_tempEdgeBuffer.push(e),this.addEdgeToCluster(a,e);let t=this.newEdge_(-1);this.m_edgesToInsertInSweepStructure.push(t),this.setEdgeSweepNode_(t,l),this.m_tempEdgeBuffer.push(t),this.addEdgeToCluster(t,e),a=t}this.addEdgeToCluster(a,n);for(let e=this.m_edgeVertices.getFirst(s);-1!==e;e=this.m_edgeVertices.getNext(e)){let t=this.m_edgeVertices.getElement(e);if(this.getClusterFromVertex(t)===i){let e=0,r=this.m_tempEdgeBuffer.length;do{if(e>0){let r=this.m_tempEdgeBuffer[e-1];this.addVertexToCluster_(r,t)}let r=this.m_tempEdgeBuffer[e];e+=2,this.addVertexToEdge_(r,t),t=this.m_shape.getNextVertex(t)}while(e<r)}else{let e=this.m_tempEdgeBuffer.length-1;do{if(e<this.m_tempEdgeBuffer.length-2){let r=this.m_tempEdgeBuffer[e+1];this.addVertexToCluster_(r,t)}let r=this.m_tempEdgeBuffer[e];e-=2,this.addVertexToEdge_(r,t),t=this.m_shape.getNextVertex(t)}while(e>=0)}}this.m_tempEdgeBuffer.length=0,this.dbgCheckNewEdgesArray_()}getVertexFromClusterIndex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}getClusterFromVertex(e){return this.m_shape.getUserIndex(e,this.m_vertexClusterIndex)}processSplitHelper1_(e,t,r){let s=this.getEdgeCluster(t,0),i=this.getClusterXY(s),n=this.getEdgeCluster(t,1),a=this.getClusterXY(n),l=r.getResultSegmentCount(e),m=r.getResultSegment(e,0),h=m.getStartXY();if(i.isEqualPoint2D(h)||(this.m_bComplications||i.compare(this.m_sweepPoint)*h.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(s,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(s)),!this.m_bComplications&&l>1){let e=i.compare(a),t=m.getEndXY();(i.compare(t)!==e||t.compare(a)!==e||t.compare(this.m_sweepPoint)<0)&&(this.m_bComplications=!0)}m=r.getResultSegment(e,l-1);let g=m.getEndXY();a.isEqualPoint2D(g)||(this.m_bComplications||a.compare(this.m_sweepPoint)*g.compare(this.m_sweepPoint)<0&&(this.m_bComplications=!0),this.getAffectedEdges(n,this.m_tempEdgeBuffer),this.m_modifiedClusters.push(n)),this.m_tempEdgeBuffer.push(t);for(let e=0,r=this.m_tempEdgeBuffer.length;e<r;e++){let r=this.m_tempEdgeBuffer[e],s=this.getEdgeSweepNode(r);o.S.isValidElement(s)&&(this.m_sweepStructure.deleteNode(s),this.setEdgeSweepNode_(r,-1));let i=o.S.impossibleIndex3();r!==t&&this.getEdgeSweepNode(r)!==i&&(this.m_edgesToInsertInSweepStructure.push(r),this.setEdgeSweepNode_(r,i))}this.m_tempEdgeBuffer.length=0}checkAndFixIntersection_(e,t){let r=this.m_sweepStructure.getElement(e);return this.m_sweepComparator.compare(this.m_sweepStructure,r,t),!!this.m_sweepComparator.intersectionDetected()&&(this.m_sweepComparator.clearIntersectionDetectedFlag(),this.fixIntersection_(e,t),!0)}fixIntersection_(e,t){this.m_bCracked=!0;let r=this.m_sweepStructure.getElement(e),s=this.m_sweepStructure.getElement(t),i=null,n=null,a=this.getEdgeOriginVertices(r),o=this.m_edgeVertices.getFirstElement(a),l=this.getEdgeOriginVertices(s),m=this.m_edgeVertices.getFirstElement(l);this.m_shape.querySegment(o,this.m_segBuf1,!1,!1),i=this.m_segBuf1.get();let h=this.m_shape.getNextVertex(o),g=this.m_shape.getWeight(o),u=this.m_shape.getSegmentParentageBreakVertex(o),_=this.m_shape.getWeight(h),p=this.m_shape.getSegmentParentageBreakVertex(h),d=this.m_shape.getSegmentWeight(o),c=this.m_shape.getRank(o),f=this.m_shape.getRank(h),x=this.m_shape.getSegmentRank(o),P=this.m_shape.getSegmentParentage(o);this.m_shape.querySegment(m,this.m_segBuf2,!1,!1),n=this.m_segBuf2.get();let y=this.m_shape.getNextVertex(m),E=this.m_shape.getWeight(m),S=this.m_shape.getSegmentParentageBreakVertex(m),C=this.m_shape.getWeight(y),I=this.m_shape.getSegmentParentageBreakVertex(y),v=this.m_shape.getSegmentWeight(m),G=this.m_shape.getRank(m),w=this.m_shape.getRank(y),b=this.m_shape.getSegmentRank(m),T=this.m_shape.getSegmentParentage(m);this.m_segmentIntersector.pushSegment(i,g,c,_,f,d,x,u,p,P),this.m_segmentIntersector.pushSegment(n,E,G,C,w,v,b,S,I,T),3===this.m_segmentIntersector.intersect2D(this.m_tolerance,!0)&&(this.m_bComplications=!0),this.splitEdge_(r,s,-1,this.m_segmentIntersector),this.m_segmentIntersector.clear()}fixIntersectionPointSegment_(e,t){this.m_bCracked=!0;let r=this.m_sweepStructure.getElement(t),s=null,i=this.getEdgeOriginVertices(r),n=this.m_edgeVertices.getFirstElement(i);this.m_shape.querySegment(n,this.m_segBuf1,!1,!1),s=this.m_segBuf1.get();let a=this.m_shape.getNextVertex(n),o=this.m_shape.getWeight(n),l=this.m_shape.getSegmentParentageBreakVertex(n),m=this.m_shape.getWeight(a),h=this.m_shape.getSegmentParentageBreakVertex(a),g=this.m_shape.getSegmentWeight(n),u=this.m_shape.getRank(n),_=this.m_shape.getRank(a),p=this.m_shape.getSegmentRank(n),d=this.m_shape.getSegmentParentage(n),c=this.getClusterFirstVertex(e);this.m_segmentIntersector.pushSegment(s,o,u,m,_,g,p,l,h,d),this.m_shape.queryPoint(c,this.m_helperPoint);let f=this.m_shape.getWeight(c),x=this.m_shape.getRank(c);this.m_segmentIntersector.intersect2DEx(this.m_tolerance,this.m_helperPoint,x,f,!0),this.splitEdge_(r,-1,e,this.m_segmentIntersector),this.m_segmentIntersector.clear()}insertNewEdges_(){if(0===this.m_edgesToInsertInSweepStructure.length)return!0;this.dbgCheckNewEdgesArray_();let e=!0,t=0,r=this.m_edgesToInsertInSweepStructure.length,s=Math.max(2*r+200,this.m_sweepStructure.size()+200);for(;this.m_edgesToInsertInSweepStructure.length;){if(this.m_edgesToInsertInSweepStructure.length>Math.max(100,this.m_shape.getTotalPointCount())||t>s){this.m_edgesToInsertInSweepStructure.length=0,this.m_bComplications=!0,e=!1;break}let r=this.m_edgesToInsertInSweepStructure.at(-1);this.m_edgesToInsertInSweepStructure.pop(),this.setEdgeSweepNode_(r,-1);let i=this.isEdgeOnSweepLine_(r);o.S.isValidElement(i)?(this.insertNewEdgeToSweepStructure_(r,i),t++):i!==o.S.impossibleIndex2()&&(e=!1),this.m_bContinuingSegmentChainOptimization=!1}return e}insertNewEdgeToSweepStructure_(e,t){let r;if(this.m_bContinuingSegmentChainOptimization?(r=this.m_sweepStructure.addElementAtPosition(this.m_prevNeighbour,this.m_nextNeighbour,e,!0,!0),this.m_bContinuingSegmentChainOptimization=!1):r=this.m_sweepStructure.addUniqueElement(e),-1===r){let t=this.m_sweepStructure.getDuplicateElement(),r=this.m_sweepStructure.getElement(t);return this.mergeEdges_(r,e),!1}if(this.setEdgeSweepNode_(e,r),this.m_sweepComparator.intersectionDetected()){this.m_sweepComparator.clearIntersectionDetectedFlag();let e=this.m_sweepComparator.getLastComparedNode();return this.m_prevNeighbour===e&&(this.m_prevNeighbour=-1),this.m_nextNeighbour===e&&(this.m_nextNeighbour=-1),this.fixIntersection_(e,r),!0}return!1}isEdgeOnSweepLine_(e){let t=this.getEdgeCluster(e,0),r=this.getEdgeCluster(e,1),s=this.getClusterXY(t),i=this.getClusterXY(r);if(l.P.sqrDistance(s,i)<=this.m_toleranceSqr)return this.m_bComplications=!0,-1;let n=s.compare(this.m_sweepPoint),a=i.compare(this.m_sweepPoint);return n<=0&&a>0?r:a<=0&&n>0?t:n>0&&a>0?o.S.impossibleIndex2():-1}fillEventQueue(){let e=new o.a(0),t=this.m_shape.queryVertexIteratorOnSelection();for(let r=t.next();-1!==r;r=t.next())-1!==this.m_shape.getUserIndex(r,this.m_vertexClusterIndex)&&e.add(r);this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0),this.m_eventQ.clear(),this.m_eventQ.setCapacity(e.size()),this.m_eventQ.setComparator(new xe(this.m_shape));let r=l.P.getNAN();r.setNAN();let s=-1;for(let t=0,i=e.size();t<i;t++){let i=e.read(t);if(this.m_shape.getXY(i).isEqualPoint2D(r)){let e=this.m_shape.getUserIndex(i,this.m_vertexClusterIndex);this.mergeClusters_(s,e);continue}s=this.getClusterFromVertex(i),this.m_shape.queryXY(i,r);let n=this.m_eventQ.addBiggestElement(i);this.setClusterEventQNode_(s,n)}}fillEventQueuePass2(){let e=new o.a(0);for(let t=this.m_eventQ.getFirst();-1!==t;t=this.m_eventQ.getNext(t)){let r=this.m_eventQ.getElement(t);e.add(r)}this.m_eventQ.clear(),this.m_shape.sortVerticesSimpleByY(e,0,e.size()),this.progress_(!0);for(let t=0,r=e.size();t<r;t++){let r=e.read(t),s=this.getClusterFromVertex(r),i=this.m_eventQ.addBiggestElement(r);this.setClusterEventQNode_(s,i)}}getAffectedEdges(e,t){let r=this.getClusterFirstEdge(e);if(-1===r)return;let s=r;do{let r=this.getEdgeSweepNode(s);o.S.isValidElement(r)&&t.push(s),s=this.getNextEdge(s,e)}while(s!==r)}updateClusterXY(e,t,r,s,i){let n=this.getClusterVertices(t);for(let t=this.m_clusterVertices.getFirst(n);-1!==t;t=this.m_clusterVertices.getNext(t)){let n=this.m_clusterVertices.getElement(t);this.m_shape.setXYMonotonicPoint2D(n,r),this.m_shape.setWeight(n,s),this.m_shape.setRank(n,i),e&&this.m_bTrackChanges&&this.m_shape.setGeometryModifiedWithVertex(n,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}}splitEdge_(e,t,r,s){this.dbgCheckEdge_(e),-1!==t&&this.dbgCheckEdge_(t),this.disconnectEdge_(e),-1!==t&&this.disconnectEdge_(t),this.processSplitHelper1_(0,e,s),-1!==t&&this.processSplitHelper1_(1,t,s),-1!==r&&s.getResultPointChanged()&&this.m_modifiedClusters.push(r);for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e],r=this.getClusterEventQNode(t);-1!==r&&(this.m_eventQ.deleteNode(r),this.setClusterEventQNode_(t,-1))}let i=this.getEdgeOriginVertices(e),n=-1===t?-1:this.getEdgeOriginVertices(t);if(this.applyIntersectorToEditShape_(i,s,0),-1!==n)this.applyIntersectorToEditShape_(n,s,1);else{let e=s.getResultPoint().getXY();this.updateClusterXY(s.getResultPointChanged(),r,e,s.getResultPointWeight(),s.getResultPointRank())}this.createEdgesAndClustersFromSplitEdge_(e,s,0),-1!==t&&this.createEdgesAndClustersFromSplitEdge_(t,s,1),this.m_edgeVertices.deleteList(i),this.deleteEdge_(e),-1!==t&&(this.m_edgeVertices.deleteList(n),this.deleteEdge_(t));for(let e=0,t=this.m_modifiedClusters.length;e<t;e++){let t=this.m_modifiedClusters[e];t===this.m_sweepPointCluster&&(this.m_bSweepPointClusterWasModified=!0);let r=this.getClusterEventQNode(t);if(-1===r){let e=this.getClusterFirstVertex(t);if(r=this.m_eventQ.addUniqueElement(e),-1===r){let e=this.m_eventQ.getDuplicateElement(),r=this.m_eventQ.getElement(e),s=this.getClusterFromVertex(r);this.mergeClusters_(s,t)}else this.setClusterEventQNode_(t,r)}}this.m_modifiedClusters.length=0}getClusterXY(e){let t=this.getClusterFirstVertex(e);return this.m_shape.getXY(t)}getClusterFirstVertex(e){let t=this.getClusterVertices(e);return this.m_clusterVertices.getFirstElement(t)}dbgCheckEdge_(e){}dbgCheckCluster_(e){}dbgCheckNewEdgesArray_(){}dbgSaveSweepStructure_(e){}sweepImpl_(){this.progress_(!0),this.m_bSweepPointClusterWasModified=!1,this.m_sweepPointCluster=-1,null===this.m_sweepComparator&&(this.m_sweepStructure.disableBalancing(),this.m_sweepComparator=new ce(this),this.m_sweepStructure.setComparator(this.m_sweepComparator));let e=[],t=null,r=null;this.m_prevNeighbour=-1,this.m_nextNeighbour=-1,this.m_bContinuingSegmentChainOptimization=!1;let s=o.S.impossibleIndex2(),i=o.S.impossibleIndex3();for(let n=this.m_eventQ.getFirst();-1!==n;){this.progress_(),this.dbgCheckSweepStructure_(),this.m_bContinuingSegmentChainOptimization=!1,this.m_prevNeighbour=-1,this.m_nextNeighbour=-1;let a=this.m_eventQ.getElement(n);this.m_sweepPointCluster=this.getClusterFromVertex(a),this.m_shape.queryXY(a,this.m_sweepPoint),this.m_sweepComparator.setSweepY(this.m_sweepPoint.y,this.m_sweepPoint.x);let o=!1;{let t=this.getClusterFirstEdge(this.m_sweepPointCluster);if(o=-1===t,!o){let r=t;do{let t=this.getEdgeSweepNode(r);-1===t?(this.m_edgesToInsertInSweepStructure.push(r),this.setEdgeSweepNode_(r,i)):t!==i&&e.push(t),r=this.getNextEdge(r,this.m_sweepPointCluster)}while(r!==t)}}if(!this.m_sweepStructure.isAutoBalancing()&&(this.m_sweepStructure.getMaxDepthEver()>4||this.m_edgesToInsertInSweepStructure.length>10)&&this.m_sweepStructure.enableBalancing(),e.length>0){this.m_bContinuingSegmentChainOptimization=1===e.length&&1===this.m_edgesToInsertInSweepStructure.length;for(let t=0,r=e.length;t<r;t++){let r=this.m_sweepStructure.getElement(e[t]);this.setEdgeSweepNode_(r,s)}let t=s,r=s;for(let i=0,n=e.length;i<n;i++){let n=e[i];if(t===s){let e=this.m_sweepStructure.getPrev(n);if(-1!==e){let r=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(r)!==s&&(t=e)}else t=-1}if(r===s){let e=this.m_sweepStructure.getNext(n);if(-1!==e){let t=this.m_sweepStructure.getElement(e);this.getEdgeSweepNode(t)!==s&&(r=e)}else r=-1}if(t!==s&&r!==s)break}for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_sweepStructure.getElement(r);this.m_sweepStructure.deleteNode(r),this.setEdgeSweepNode_(s,-1)}e.length=0,this.m_prevNeighbour=t,this.m_nextNeighbour=r,-1!==t&&-1!==r?this.m_bContinuingSegmentChainOptimization||this.checkAndFixIntersection_(t,r):-1===t&&-1===r&&(this.m_bContinuingSegmentChainOptimization=!1)}else o&&(null===t&&(t=new fe(this)),t.setPoint(this.m_sweepPoint),this.m_sweepStructure.searchUpperBound(t),t.intersectionDetected()&&(t.clearIntersectionDetectedFlag(),this.fixIntersectionPointSegment_(this.m_sweepPointCluster,t.getCurrentNode())));let l=this.m_bContinuingSegmentChainOptimization;!this.insertNewEdges_()&&l&&-1!==this.m_prevNeighbour&&-1!==this.m_nextNeighbour&&this.checkAndFixIntersection_(this.m_prevNeighbour,this.m_nextNeighbour),this.m_bSweepPointClusterWasModified?(this.m_bSweepPointClusterWasModified=!1,null===r&&(r=new Pe(this.m_shape)),r.setPoint(this.m_sweepPoint),n=this.m_eventQ.searchUpperBound(r)):n=this.m_eventQ.getNext(n)}return this.m_bCracked}setEditShape_(e){this.m_shape=e,this.m_vertexClusterIndex=this.m_shape.createUserIndex(),this.m_edges.setCapacity(e.getSelectedCount()+32),this.m_clusters.setCapacity(e.getSelectedCount()),this.m_clusterVertices.reserveLists(e.getSelectedCount()),this.m_clusterVertices.reserveNodes(e.getSelectedCount()),this.m_edgeVertices.reserveLists(e.getSelectedCount()+32),this.m_edgeVertices.reserveNodes(e.getSelectedCount()+32);for(let t=this.m_shape.getFirstGeometry();-1!==t;t=this.m_shape.getNextGeometry(t))if((0,i.j)(this.m_shape.getGeometryType(t)))for(let r=this.m_shape.getFirstPath(t);-1!==r;r=this.m_shape.getNextPath(r)){let t=this.m_shape.getPathSize(r),s=this.m_shape.getFirstVertex(r);if(-1===s)continue;let i=this.m_shape.getNextVertex(s);if(-1===i||i===s)continue;let n=-1;e.selected(s)&&(n=this.newCluster_(s));let a=-1;-1!==n&&e.selected(i)&&(a=this.newEdge_(s),this.addEdgeToCluster(a,n));let o=a;for(let e=0,r=t-2;e<r;e++){let e=this.m_shape.getNextVertex(i),t=-1;if(this.m_shape.selected(i)){let r=this.newCluster_(i);-1!==o&&this.addEdgeToCluster(o,r),this.m_shape.selected(e)&&(t=this.newEdge_(i),this.addEdgeToCluster(t,r))}o=t,i=e}if(this.m_shape.isClosedPath(r)){let e=this.m_shape.getNextVertex(i);if(this.m_shape.selected(i)){let t=this.newCluster_(i);if(-1!==o&&this.addEdgeToCluster(o,t),this.m_shape.selected(e)){let e=this.newEdge_(i);this.addEdgeToCluster(e,t),this.addEdgeToCluster(e,n)}}}else{let e=-1;this.m_shape.selected(i)&&(e=this.newCluster_(i),-1!==o&&this.addEdgeToCluster(o,e))}}else for(let e=this.m_shape.getFirstPath(t);-1!==e;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let r=0,s=this.m_shape.getPathSize(e);r<s;r++)this.m_shape.selected(t)&&this.newCluster_(t),t=this.m_shape.getNextVertex(t)}this.fillEventQueue()}progress_(e=!1){}dbgCheckSweepStructure_(){}}function Ee(e,t,r){return{vertex0:e,vertex1:t,dir:r}}class Se{m_shape=null;m_progressTracker;m_spikes=[];m_points=new o.a(0);m_pointsIndex=-1;m_dissolvedEdges=0;constructor(e){this.m_progressTracker=e}executeImpl_(e,t){if(this.m_shape=e,e.getPathCount(t)<2&&e.getPointCount(t)<6)return;this.m_points.resize(0);for(let r=e.getFirstPath(t);-1!==r;r=e.getNextPath(r)){let t=e.getFirstVertex(r);for(let s=0,i=e.getPathSize(r);s<i;s++,t=e.getNextVertex(t))this.m_points.add(t)}this.m_pointsIndex=e.createUserIndex();for(let t=0,r=this.m_points.size();t<r;++t)e.setUserIndex(this.m_points.read(t),this.m_pointsIndex,t);e.sortVerticesSimpleByY(this.m_points,0,this.m_points.size());let r=this.m_points.read(0),s=e.getXY(r),n=1,a=0,o=[];for(let t=1;t<this.m_points.size();t++){let i=this.m_points.read(t);if(-1===i||-1===e.getUserIndex(i,this.m_pointsIndex))continue;let l=e.getXY(i);if(l.isEqualPoint2D(s))n++;else{if(n>1){for(let r=a;r<t;r++){let t=this.m_points.read(r);if(-1===e.getUserIndex(t,this.m_pointsIndex))continue;let i=e.getNextVertex(t),n=e.getPrevVertex(t);if(t!==i&&!e.isEqualXYPoint2D(i,s)){let e=Ee(t,i,1);o.push(e)}if(t!==n&&n!==i&&!e.isEqualXYPoint2D(n,s)){let e=Ee(t,n,-1);o.push(e)}}o.length>0&&this.processBunch_(o,s)}r=i,s.assign(l),n=1,a=t}}if(0===this.m_dissolvedEdges)return e.removeUserIndex(this.m_pointsIndex),void(this.m_pointsIndex=-1);let l=e.getPointCount(t);for(let t=0;t<this.m_points.size();t++){let r=this.m_points.read(t);if(-1===r)continue;if(-1!==e.getUserIndex(r,this.m_pointsIndex)){e.setUserIndex(r,this.m_pointsIndex,-1);continue}let s=e.getPathFromVertex(r);e.getFirstVertex(s)===r&&e.setFirstVertex(s,-1),e.freeVertex(r),this.m_points.write(t,-1),l--}let m=e.createPathUserIndex(),h=e.getPathCount(t);for(let r=0,s=this.m_points.size();r<s;++r){if(-1===this.m_points.read(r))continue;let s=this.m_points.read(r);if(-1!==e.getUserIndex(s,this.m_pointsIndex))continue;let n=e.getPathFromVertex(s),a=-1;if(2===e.getPathUserIndex(n,m)){n=-1;for(let t=e.getNextVertex(s);t!==s;t=e.getNextVertex(t)){let r=e.getPathFromVertex(t);if(2!==e.getPathUserIndex(r,m)){n=r,s=t;break}}-1===n&&(n=e.insertPath(t,-1),e.setClosedPath(n,!0),h++),(0,i.g)(-1!==n)}e.setPathUserIndex(n,m,2),a=e.getFirstVertex(n);let o=0,l=!1,g=s;do{a===g&&(l=!0),e.setUserIndex(g,this.m_pointsIndex,1);let t=e.getPathFromVertex(g);t!==n&&(2!==e.getPathUserIndex(t,m)&&(e.setPathUserIndex(t,m,1),e.setFirstVertex(t,-1)),e.setPathToVertex(g,n)),o++,g=e.getNextVertex(g)}while(g!==s);l||e.setFirstVertex(n,s),e.setPathSize(n,o)}for(let r=e.getFirstPath(t);-1!==r;){let t=e.getNextPath(r);(1===e.getPathUserIndex(r,m)||-1===e.getFirstVertex(r))&&(e.removePathOnly(r),h--),r=t}e.setGeometryVertexCount(t,l),e.setGeometryPathCount(t,h),e.removePathUserIndex(m),e.removeUserIndex(this.m_pointsIndex),this.m_pointsIndex=-1,e.dbgVerifyVertexCounts(),e.filterClosePoints(0,!0,!1,!1,t)}processBunch_(e,t){e.sort((e,r)=>{let s=this.m_shape.getXY(e.vertex1).sub(t),i=this.m_shape.getXY(r.vertex1).sub(t),n=l.P.compareVectors(s,i);return 0===n?e.dir<r.dir?-1:1:n});let r=0,s=this.m_shape.getXY(e[0].vertex1),i=1,n=this.m_shape.hasCurves();for(let t=1,a=e.length;t<a;t++){let o=this.m_shape.getXY(e[t].vertex1);if(!(o.isEqualPoint2D(s)&&(i++,t+1<a))){if(2===i){let t=e[r],s=e[r+1],i=t.dir;if(i!==s.dir){let e=!0;if(n&&(e=!this.m_shape.isCurve(1===t.dir?t.vertex0:t.vertex1)&&!this.m_shape.isCurve(1===s.dir?s.vertex0:s.vertex1)),e){if(1===i){let e=t.vertex0,r=s.vertex0;this.m_shape.setNextVertex(e,r),this.m_shape.setPrevVertex(r,e),this.m_shape.getPrevVertex(e)===r&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(r,this.m_pointsIndex,-1));let i=t.vertex1,n=s.vertex1;this.m_shape.setPrevVertex(i,n),this.m_shape.setNextVertex(n,i),this.m_shape.getNextVertex(i)===n&&(this.m_shape.setUserIndex(i,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}else{let e=t.vertex0,r=s.vertex0;this.m_shape.setPrevVertex(e,r),this.m_shape.setNextVertex(r,e),this.m_shape.getNextVertex(e)===r&&(this.m_shape.setUserIndex(e,this.m_pointsIndex,-1),this.m_shape.setUserIndex(r,this.m_pointsIndex,-1));let i=t.vertex1,n=s.vertex1;this.m_shape.setNextVertex(i,n),this.m_shape.setPrevVertex(n,i),this.m_shape.getPrevVertex(i)===n&&(this.m_shape.setUserIndex(i,this.m_pointsIndex,-1),this.m_shape.setUserIndex(n,this.m_pointsIndex,-1))}this.m_dissolvedEdges+=2}}}s.assign(o),r=t,i=1}}e.length=0}}function Ce(e){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))if((0,i.j)(e.getGeometryType(t)))return!0;return!1}function Ie(e,t,r,s,i){if(!Ce(t))return!1;let n=new Ge(i);if(n.m_shape=t,n.m_tolerance=r,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==s,n.needsCrackingImpl_())return s&&s.assign(n.m_nonSimpleResult),!0;let a=new m.T;a.setSwapCoordinates(),t.applyTransformation(a),n=new Ge(i),n.m_shape=t,n.m_tolerance=r,n.m_bAllowCoincident=e,n.m_bNeedsNonSimpleResult=null!==s;let o=n.needsCrackingImpl_();return t.applyTransformation(a),!!o&&(s&&s.assign(n.m_nonSimpleResult),!0)}function ve(e,t){return{t:e,index:t}}class Ge{static s_bForceBruteForce=!0;m_shape=null;m_progressTracker=null;m_nonSimpleResult=new c;m_tolerance=0;m_sweepComparator=null;m_progressCounter=0;m_bTrackChanges=!1;m_bNeedsNonSimpleResult=!1;m_bAllowCoincident=!0;crackBruteForce_(){let e=this.crackBruteForceImpl_();if(!e&&this.m_shape.hasCurves()){let t=new m.T;t.setSwapCoordinates(),this.m_shape.applyTransformation(t),e=this.crackBruteForceImpl_(),this.m_shape.applyTransformation(t)}return e}crackBruteForceImpl_(){let e=!1,t=new a.S,r=new a.S,s=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=new o.P,h=new le,g=this.m_shape.getTotalPointCount(),u=g*g*2,_=this.m_shape.queryVertexIteratorOnSelection();for(let n=_.next();-1!==n;n=_.next()){let o=this.m_shape.getGeometryType(_.currentGeometry()),g=1,p=1,d=1,c=0,f=0,x=0,P=this.m_shape.getSegmentParentage(n),y=!1,E=!1,S=null,C=!1;if((0,i.f)(o))g=this.m_shape.getWeight(n),c=this.m_shape.getRank(n);else{if(S=this.getSegment_(n,t),null===S)continue;let e=this.m_shape.getVertexIndex(n);g=this.m_shape.getWeightWithIndex(e),c=this.m_shape.getRankWithIndex(e),d=this.m_shape.getSegmentWeightWithIndex(e),x=this.m_shape.getSegmentRankWithIndex(e),y=this.m_shape.getSegmentParentageBreakVertex(n);{let e=this.m_shape.getNextVertex(n);p=this.m_shape.getWeight(e),f=this.m_shape.getRank(e),E=this.m_shape.getSegmentParentageBreakVertex(e)}if(S.queryLooseEnvelope(s),s.inflateCoords(this.m_tolerance,this.m_tolerance),S.isDegenerate(this.m_tolerance)){if(!S.isDegenerate(0))continue;C=!0,S=null}}let I=new a.V({copy:_}),v=I.next();-1!==v&&(v=I.next());let G=0;for(;-1!==v;v=I.next()){if(0!==G){G--;continue}if(this.m_shape.getTotalPointCount()>u)return e;this.progress_();let o=this.m_shape.getGeometryType(I.currentGeometry()),w=null,b=!1,T=0,N=0,D=0,V=0,k=0,F=0,H=!1,A=!1,M=this.m_shape.getSegmentParentage(v);if((0,i.f)(o))T=this.m_shape.getWeight(v),V=this.m_shape.getRank(v);else{if(w=this.getSegment_(v,r),null===w)continue;let e=this.m_shape.getVertexIndex(v);T=this.m_shape.getWeightWithIndex(e),V=this.m_shape.getRankWithIndex(e),D=this.m_shape.getSegmentWeightWithIndex(e),F=this.m_shape.getSegmentRankWithIndex(e),H=this.m_shape.getSegmentParentageBreakVertex(v);{let e=this.m_shape.getNextVertex(v);N=this.m_shape.getWeight(e),k=this.m_shape.getRank(e),A=this.m_shape.getSegmentParentageBreakVertex(e)}if(w.queryLooseEnvelope(l),w.isDegenerate(this.m_tolerance)){if(!w.isDegenerate(0))continue;b=!0,w=null}}let U=0,q=0;if(null!==S&&null!==w)s.isIntersectingNe(l)&&0!==(0,a.T)(!0,!0,S,w,this.m_tolerance,!0)&&(h.pushSegment(S,g,c,p,f,d,x,y,E,P),h.pushSegment(w,T,V,N,k,D,F,H,A,M),h.intersect2D(this.m_tolerance,!0),e||=h.getSegmentChanged(0)||h.getSegmentChanged(1),U=h.getResultSegmentCount(0),q=h.getResultSegmentCount(1),U+q>0&&(this.m_shape.splitSegmentWithIntersector(n,h,0,!0,!0),this.m_shape.splitSegmentWithIntersector(v,h,1,!0,!0),this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(n,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(v,!0))),q>1&&(G+=q-1),h.clear());else if(null!==S){let t=this.m_shape.getXY(v);if(s.contains(t)){if(h.pushSegment(S,g,c,p,f,d,x,y,E,P),this.m_shape.queryPoint(v,m),h.intersect2DEx(this.m_tolerance,m,V,T,!1),e||=h.getSegmentChanged(0)||h.getResultPointChanged(),U=h.getResultSegmentCount(0),U>0)if(this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(n,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(v,!0)),this.m_shape.splitSegmentWithIntersector(n,h,0,!0,!0),b){let e=-1;for(let t=this.m_shape.getNextVertex(v);-1!==t&&t!==v&&(w=this.getSegment_(t,r),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=v;-1!==t&&(this.m_shape.setPoint(t,h.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(v,h.getResultPoint(),!0);h.clear()}}else{if(null===w)continue;{let t=this.m_shape.getXY(n);if(l.inflateCoords(this.m_tolerance,this.m_tolerance),l.contains(t)){if(h.pushSegment(w,T,V,N,k,D,F,H,A,M),this.m_shape.queryPoint(n,m),h.intersect2DEx(this.m_tolerance,m,c,g,!1),e||=h.getSegmentChanged(0)||h.getResultPointChanged(),q=h.getResultSegmentCount(0),q>0)if(this.m_bTrackChanges&&(h.getSegmentChanged(0)&&this.m_shape.setGeometryModifiedWithVertex(v,!0),h.getSegmentChanged(1)&&this.m_shape.setGeometryModifiedWithVertex(n,!0)),this.m_shape.splitSegmentWithIntersector(v,h,0,!0,!0),G+=q-1,C){let e=-1;for(let t=this.m_shape.getNextVertex(n);-1!==t&&t!==n&&(w=this.getSegment_(t,r),e=t,null!=w&&w.isDegenerate(0));t=this.m_shape.getNextVertex(t));for(let t=n;-1!==t&&(this.m_shape.setPoint(t,h.getResultPoint(),!0),t!==e);t=this.m_shape.getNextVertex(t));}else this.m_shape.setPoint(n,h.getResultPoint(),!0);h.clear()}}}if(U+q!==0&&0!==U){let e=!1;for(;S=this.getSegment_(n,t),null!=S&&(S.queryEnvelope(s),S.isDegenerate(this.m_tolerance));){if(!(U>1)){e=!0;break}n=_.next(),U--,(0,i.g)(-1!==n)}if(e)break}}}return e}m_sweepStructure=new o.T;crackerPlaneSweep_(){return this.planesweep_()}planesweep_(){return new ye(this.m_progressTracker,this.m_bTrackChanges).sweep(this.m_shape,this.m_tolerance)}needsCrackingImpl_(){let e=!1,t=new o.a(0);t.resize(this.m_shape.getSelectedCount());let r=this.m_shape.queryVertexIteratorOnSelection();for(let e=0,s=r.next();-1!==s;++e,s=r.next())t.write(e,s);this.m_shape.sortVerticesSimpleByY(t,0,t.size()),t.add(-1);let s=this.m_shape.createUserIndex(),n=this.m_shape.createUserIndex();this.m_sweepComparator=new $(this.m_shape,this.m_tolerance,!this.m_bAllowCoincident),this.m_sweepStructure.setComparator(this.m_sweepComparator);let a=null,m=[],h=[],g=0,u=new l.P;for(let r=t.read(g++);-1!==r;){this.m_shape.queryXY(r,u);let o=!1;do{let e=this.m_shape.getNextVertex(r),i=this.m_shape.getPrevVertex(r);o||=-1!==e||-1!==i,-1!==e&&!this.m_shape.selected(e)&&(e=-1),-1!==i&&!this.m_shape.selected(i)&&(i=-1),-1!==e&&this.m_shape.compareVerticesSimpleY(r,e)<0&&(h.push(r),h.push(e)),-1!==i&&this.m_shape.compareVerticesSimpleY(r,i)<0&&(h.push(i),h.push(i));let a=this.m_shape.getUserIndex(r,s);-1!==a&&(m.push(a),this.m_shape.setUserIndex(r,s,-1));let l=this.m_shape.getUserIndex(r,n);-1!==l&&(m.push(l),this.m_shape.setUserIndex(r,n,-1)),r=t.read(g++)}while(-1!==r&&this.m_shape.isEqualXYPoint2D(r,u));if(!o&&(null===a&&(a=new ee(this.m_shape,this.m_tolerance)),a.setPoint(u),this.m_sweepStructure.searchUpperBound(a),a.intersectionDetected())){e=!0,this.m_bNeedsNonSimpleResult&&((0,i.d)("needsCrackingIMpl_"),this.m_nonSimpleResult=new c(6,-1,-1));break}let _=1===m.length&&2===h.length;m.length>32&&(0,l.w)(m);let p=-1,d=-1;if(!_)for(let t=0,r=m.length;t<r;t++){let r=m[t],s=this.m_sweepStructure.getPrev(r);if(-1!==s&&-1===m.indexOf(s))if(-1===p)p=s;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new c(6,-1,-1)}let i=this.m_sweepStructure.getNext(r);if(-1!==i&&-1===m.indexOf(i))if(-1===d)d=i;else{if(e=!0,!this.m_bNeedsNonSimpleResult)break;this.m_nonSimpleResult=new c(6,-1,-1)}if(-1!==p&&-1!==d)break}if(e&&!this.m_bNeedsNonSimpleResult)break;if(this.m_sweepComparator.setSweepY(u.y,u.x),!_){for(let e=0,t=m.length;e<t;e++){let t=m[e];this.m_sweepStructure.deleteNode(t)}m.length=0}if(!_&&-1!==p&&-1!==d&&this.checkForIntersections_(p,d)){e=!0,this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult());break}for(let t=0,r=h.length;t<r;t+=2){let r,i=h[t],a=h[t+1];if(_?(r=this.m_sweepStructure.replaceElementAtPosition(m[0],i,!0,!0),m.length=0,_=!1):r=this.m_sweepStructure.addElement(i),this.m_sweepComparator.intersectionDetected()){this.m_bNeedsNonSimpleResult&&(this.m_nonSimpleResult=this.m_sweepComparator.getResult()),e=!0;break}-1===this.m_shape.getUserIndex(a,s)?this.m_shape.setUserIndex(a,s,r):this.m_shape.setUserIndex(a,n,r)}if(e)break;h.length=0}return this.m_shape.removeUserIndex(s),this.m_shape.removeUserIndex(n),e}checkForIntersections_(e,t){let r=this.m_sweepStructure.getElement(e);this.m_sweepComparator.compare(this.m_sweepStructure,r,t);let s=this.m_sweepComparator.intersectionDetected();return this.m_sweepComparator.clearIntersectionDetectedFlag(),s}getSegment_(e,t){return Ge.st_getSegment(this.m_shape,e,t)}static st_getSegment(e,t,r){return e.querySegment(t,r,!1,!1)?r.get():null}dbgPrintSweepEdge(e){}dbgPrintSweepStructure(){}dbgSaveSweepStructure(e=null){}dbgCheckSweepStructure(){}progress_(e=!1){this.m_progressCounter++}crackAWithBMultiPath_(e,t,r){let s=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(s);let m=n.Envelope2D.constructEmpty();if(t.queryLooseEnvelope(m),m.inflateCoords(r,r),!m.isIntersecting(s))return e;let h=e.getImpl(),g=h.getAccelerators(),u=null,_=null;g&&(_=g.getQuadTree()),function(e,t){let r=e.getPointCount();return!(r<16)&&2*r+Math.log(r)/Math.log(2)*1*t<1*r*t}(e,(0,i.v)(t))&&(u=(0,o.u)(h,m),_=u);let p=_?_.getIteratorForQT():null,d=t.querySegmentIterator(),c=e.querySegmentIterator(),f=(0,l.c)(15,NaN),x=[];for(;d.nextPath();)for(;d.hasNextSegment();){let e=d.nextSegment();if(_){p.resetIterator(e,r);for(let t=p.next();-1!==t;t=p.next()){this.progress_();let s=_.getElement(t);if(c.resetToVertex(s,-1),c.hasNextSegment()){let t=c.nextSegment().intersect(e,null,f,null,r);for(let e=0;e<t;e++){let t=f[e];if(0===t||1===t)continue;let r=ve(t,c.getStartPointIndex());x.push(r)}}}}else{let t=n.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(t),t.inflateCoords(r,r),!s.isIntersecting(t))continue;for(c.resetToFirstPath();c.nextPath();)for(;c.hasNextSegment();){let s=c.nextSegment(),i=n.Envelope2D.constructEmpty();if(s.queryLooseEnvelope(i),!i.isIntersecting(t))continue;let a=s.intersect(e,null,f,null,r);for(let e=0;e<a;e++){let t=f[e];if(0===t||1===t)continue;let r=ve(t,c.getStartPointIndex());x.push(r)}}}}if(0===x.length)return e;x.sort((e,t)=>e.index<t.index?-1:e.index>t.index?1:e.t<t.t?-1:+(e.t>t.t));let P=e.createInstance();for(P.getGeometryType()===i.G.enumPolygon&&P.setFillRule(e.getFillRule()),c.resetToFirstPath();c.nextPath()&&!c.hasNextSegment(););(0,i.g)(c.hasNextSegment());let y=c.nextSegment(),E=new a.S,S=-1;for(let e=0,t=x.length;e<t;){let r=x[e].index,s=e+1;for(;s<t&&x[s].index===r;)++s;for(;c.getStartPointIndex()<r;){this.progress_();let e=c.hasNextSegment(),t=c.getPathIndex();if((e||!c.isClosingSegment()||c.isCurve())&&((0,i.g)(null!==y),P.addSegment(y,S!==t)),S=t,!e){for(c.isPathClosed();c.nextPath()&&!c.hasNextSegment(););(0,i.g)(c.hasNextSegment())}y=c.nextSegment()}let n=0;for(let t=e;t<s;t++){let e=x[t].t;if(e===n)continue;(0,i.g)(null!==y),y.queryCut(n,e,E),n=e;let r=c.getPathIndex();P.addSegment(E.get(),S!==r),S=r}let a=c.hasNextSegment();if((a||!c.isClosingSegment()||c.isCurve())&&((0,i.g)(null!=y),y.queryCut(n,1,E),P.addSegment(E.get(),!1)),a)y=c.nextSegment();else{for(;c.nextPath()&&!c.hasNextSegment(););y=c.hasNextSegment()?c.nextSegment():null}e=s}if(null!==y){let e=c.getPathIndex();(c.hasNextSegment()||!c.isClosingSegment()||c.isCurve())&&P.addSegment(y,S!==e),S=e}let C=c.hasNextSegment();for(;;){if(!C){for(;c.nextPath()&&(C=c.hasNextSegment(),!C););if(!C)break}y=c.nextSegment();let e=c.getPathIndex();C=c.hasNextSegment(),(C||!c.isClosingSegment()||c.isCurve())&&P.addSegment(y,S!==e),S=e}return P}constructor(e){this.m_progressTracker=e}}class we{m_inputPoint;m_windnum;m_monotoneParts=(0,l.d)(a.S,16);m_xOrds=(0,l.c)(16,NaN);m_tolerance;m_toleranceSqr;m_miny;m_maxy;m_bAlternate;m_bTestBorder;m_bBreak;constructor(e,t){this.m_inputPoint=l.P.getNAN(),this.m_miny=0,this.m_maxy=0,this.m_windnum=0,this.m_bAlternate=e,this.m_tolerance=t,this.m_toleranceSqr=t*t,this.m_bTestBorder=t>0,this.m_bBreak=!1}_DoOne(e){if(!this.m_bTestBorder&&(this.m_bAlternate&&this.m_inputPoint.equals(e.getStartXY())||this.m_inputPoint.equals(e.getEndXY())))return void(this.m_bBreak=!0);if(e.getStartY()===this.m_inputPoint.y&&e.getStartY()===e.getEndY()){if(this.m_bAlternate&&!this.m_bTestBorder){let t=Math.min(e.getStartX(),e.getEndX()),r=Math.max(e.getStartX(),e.getEndX());this.m_inputPoint.x>t&&this.m_inputPoint.x<r&&(this.m_bBreak=!0)}return}let t=!1,r=Math.max(e.getStartX(),e.getEndX());if(this.m_inputPoint.x>r)t=!0;else if(this.m_inputPoint.x>=Math.min(e.getStartX(),e.getEndX())){let s=e.intersectionOfYMonotonicWithAxisX(this.m_inputPoint.y,r);t=!Number.isNaN(s)&&s<=this.m_inputPoint.x}if(t){if(this.m_inputPoint.y===e.getStartY()){if(this.m_inputPoint.y<e.getEndY())return}else if(this.m_inputPoint.y===e.getEndY()&&this.m_inputPoint.y<e.getStartY())return;this.m_bAlternate?this.m_windnum^=1:this.m_windnum+=e.getStartY()>e.getEndY()?1:-1}}_Result(){return!!this.m_windnum}testBorder(e){let t=e.getClosestCoordinate(this.m_inputPoint,!1),r=e.getCoord2D(t);return l.P.sqrDistance(r,this.m_inputPoint)<=this.m_toleranceSqr}setInputPoint(e){this.m_inputPoint.setCoordsPoint2D(e),this.m_miny=e.y-this.m_tolerance,this.m_maxy=e.y+this.m_tolerance}processSegment(e){let t=e.queryInterval(0,1);if(t.vmin>this.m_maxy||t.vmax<this.m_miny)return!1;if(this.m_bTestBorder&&this.testBorder(e))return!0;if(t.vmin>this.m_inputPoint.y||t.vmax<this.m_inputPoint.y)return!1;let r=0;if(e.isCurve()&&(0===this.m_monotoneParts.length&&(this.m_monotoneParts.length=128),r=e.getMonotonicParts(this.m_monotoneParts,!0),(0,i.g)(this.m_monotoneParts.length>=r)),r>0)for(let e=0;e<r;e++){let t=this.m_monotoneParts[e].get(),r=l.E.construct(t.getStartY(),t.getEndY());if(!(r.vmin>this.m_inputPoint.y||r.vmax<this.m_inputPoint.y)&&(this._DoOne(t),this.m_bBreak))return!0}else if(this._DoOne(e),this.m_bBreak)return!0;return!1}result(){return(0,i.g)(0),2}}function be(e,t,r){if(e.isEmpty())return 0;let s=n.Envelope2D.constructEmpty();if(e.queryLooseEnvelope(s),s.inflateCoords(r,r),!s.contains(t))return 0;let a=e.getImpl().getAccelerators();if(a){a.getRasterizedGeometry()&&(0,i.g)(0);let s=a.getQuadTree();if(s)return function(e,t,r,s){let i=new n.Envelope2D;e.queryLooseEnvelope(i),i.inflateCoords(s,s);let a=0===e.getFillRule(),o=new we(a,s);o.setInputPoint(r);let l=i.clone();l.xmax=r.x+s,l.ymin=r.y-s,l.ymax=r.y+s;let m=e.getImpl().querySegmentIterator(),h=t.getIterator(l,s);for(let e=h.next();-1!==e;e=h.next())if(m.resetToVertex(t.getElement(e),-1),m.hasNextSegment()){let e=m.nextSegment();if(o.processSegment(e))return-1}return+!!o._Result()}(e,s,t,r)}return function(e,t,r){let s=0===e.getFillRule(),i=new we(s,r);i.setInputPoint(t);let n=e.getImpl().querySegmentIterator();for(;n.nextPath();)for(;n.hasNextSegment();){let e=n.nextSegment();if(i.processSegment(e))return-1}return+!!i._Result()}(e,t,r)}function Te(e,t){let r=e.getPointCount();return!(r<16)&&2*r+Math.log(r)/Math.log(2)*1*t<1*r*t}function Ne(e,t,r){let s=new Fe(r);return s.m_shape=e,s.m_geometry=t,s.m_sortedVertices=null,s.m_bFixSelfTangency=!1,s.fixRingOrientationForMp2sp_()}class De{m_shape;m_end1Nodes=[];m_end2Nodes=[];m_directions=[];m_firstFree;getDirection_(e){return this.m_shape.getNextVertex(this.getEnd1(e))===this.getEnd2(e)}getEnd_(e){let t=this.getEnd1(e),r=this.getEnd2(e);return this.m_shape.getNextVertex(t)===r?r:t}constructor(e){this.m_shape=e,this.m_firstFree=-1}getSegment(e){return this.m_shape.getSegment(this.getStart(e))}isBottomUp(e){let t=this.getEnd1(e),r=this.getEnd2(e);this.m_shape.getPrevVertex(t)===r&&(r=(0,l.s)(t,t=r));let s=l.P.getNAN(),n=l.P.getNAN();return this.m_shape.queryXY(t,s),this.m_shape.queryXY(r,n),(0,i.g)(!s.equals(n)),s.y<n.y}getStart(e){let t=this.getEnd1(e),r=this.getEnd2(e);return this.m_shape.getNextVertex(t)===r?t:r}getEnd1(e){return this.m_end1Nodes[e]}getEnd2(e){return this.m_end2Nodes[e]}freeEdge(e){this.m_end1Nodes[e]=this.m_firstFree,this.m_firstFree=e}newEdge(e){if(-1!==this.m_firstFree){let t=this.m_firstFree;return this.m_firstFree=this.m_end1Nodes[t],this.m_end1Nodes[t]=e,this.m_end2Nodes[t]=this.m_shape.getNextVertex(e),t}let t=this.m_end1Nodes.length;return this.m_end1Nodes.push(e),this.m_end2Nodes.push(this.m_shape.getNextVertex(e)),t}getShape(){return this.m_shape}getPath(e){return this.m_shape.getPathFromVertex(this.getEnd1(e))}}let Ve=class extends o.F{m_helper;m_line1=new a.L;m_line2=new a.L;m_leftElm=-1;m_leftx=0;m_seg1=null;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s,n=e.getElement(r),a=this.m_helper.m_edges;this.m_leftElm===t?s=this.m_leftx:(this.m_seg1=a.getSegment(t),this.m_seg1?s=this.m_seg1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(a.getShape().queryLineConnector(a.getStart(t),this.m_line1,!0),this.m_seg1=this.m_line1,s=this.m_line1.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),this.m_leftx=s,this.m_leftElm=t);let o,l=a.getSegment(n);if(l?o=l.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0):(a.getShape().queryLineConnector(a.getStart(n),this.m_line2,!0),l=this.m_line2,o=this.m_line2.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0)),s===o){let e=a.isBottomUp(t),r=a.isBottomUp(n),m=e?this.m_seg1.getEndY():this.m_seg1.getStartY(),h=r?l.getEndY():l.getStartY(),g=Math.min(m,h),u=.5*(g+this.m_helper.m_yScanline);u===this.m_helper.m_yScanline&&(u=g),s=this.m_seg1.intersectionOfYMonotonicWithAxisX(u,0),o=l.intersectionOfYMonotonicWithAxisX(u,0),s===o&&(0,i.A)("")}return s<o?-1:+(s>o)}reset(){this.m_leftElm=-1}};class ke{m_sortedVertices;m_sortedVerticesArray;m_node=-1;m_index=0;constructor(e){this.m_sortedVertices=e.m_sortedVertices,this.m_sortedVerticesArray=e.m_sortedVerticesArray,this.m_sortedVertices&&(this.m_node=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList()))}next(){if(this.m_sortedVertices){let e=this.m_node;if(-1===e)return-1;let t=this.m_sortedVertices.getData(e);return this.m_node=this.m_sortedVertices.getNext(e),t}if(this.m_index<this.m_sortedVerticesArray.size()){let e=this.m_sortedVerticesArray.read(this.m_index);return this.m_index++,e}return-1}}class Fe{m_edges=null;m_sweepComparator;m_shape=null;m_AET=new o.T;m_yScanline=0;m_geometry=-1;m_unknownRingOrientationCount=-1;m_sortedVertices=null;m_sortedVerticesArray=null;m_unknownNodes=[];m_progressTracker;m_node1UserIndex=-1;m_node2UserIndex=-1;m_pathOrientationIndex=-1;m_pathParentageIndex=-1;m_pathParentsIndex=-1;m_progressCounter=0;m_bFixSelfTangency=!1;constructor(e){this.m_progressTracker=e,this.m_AET.disableBalancing(),this.m_sweepComparator=new Ve(this),this.m_AET.setComparator(this.m_sweepComparator)}fixRingOrientation_(){let e=this.fixRingOrientationImplMain_();return-1===this.m_pathOrientationIndex||this.fixRingOrientationImplSimplify_(),e}fixRingOrientationForMp2sp_(){return this.fixRingOrientationImplMain_(),-1===this.m_pathOrientationIndex?-1:this.fixRingOrientationImplMp2sp_()}processBunchForRingOrientationTest_(e){return this.processBunchForRingOrientationTestOddEven_(e)}processBunchForRingOrientationTestOddEven_(e){let t=!1;if(this.m_edges||=new De(this.m_shape),this.m_unknownNodes.length=0,this.processBunchForRingOrientationRemoveEdges_(e),!this.m_AET.isAutoBalancing()){let t=0;for(let r=0,s=e.length;r<s;r++)-1!==e[r]&&t++;(t>10||this.m_AET.getMaxDepthEver()>4)&&this.m_AET.enableBalancing()}for(let t=0,r=e.length;t<r;t++){let r=e[t];-1!==r&&this.insertEdge_(r,-1)}for(let e=0;e<this.m_unknownNodes.length&&this.m_unknownRingOrientationCount>0;e++){let r=this.m_unknownNodes[e],s=this.m_AET.getElement(r),n=this.m_edges.getPath(s),a=-1;if(0===this.m_shape.getPathUserIndex(n,this.m_pathOrientationIndex)){let e=this.m_AET.getPrev(r),s=r,n=!1;for(;e!==o.T.st_nullNode();){let t=this.m_AET.getElement(e),r=this.m_edges.getPath(t);if(0!==this.m_shape.getPathUserIndex(r,this.m_pathOrientationIndex)){a=r;break}s=e,e=this.m_AET.getPrev(e)}if(e===o.T.st_nullNode())n=!0,e=s;else{let t=this.m_AET.getElement(e);n=this.m_edges.isBottomUp(t),e=this.m_AET.getNext(e),n=!n}do{let r=this.m_AET.getElement(e),o=this.m_edges.getPath(r);if(0===this.m_shape.getPathUserIndex(o,this.m_pathOrientationIndex)){if(n!==this.m_edges.isBottomUp(r)){let e=this.m_shape.getFirstVertex(o);this.m_shape.reverseRingInternal(e),this.m_shape.setLastVertex(o,this.m_shape.getPrevVertex(e)),t=!0}if(this.m_shape.setPathUserIndex(o,this.m_pathOrientationIndex,n?3:2),!n){let e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex);2===e?(a=this.m_shape.getPathUserIndex(a,this.m_pathParentsIndex),e=this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex),(0,i.g)(3===e)):(0,i.g)(3===e);let t=this.m_shape.getPathUserIndex(a,this.m_pathParentageIndex);this.m_shape.setPathUserIndex(a,this.m_pathParentageIndex,o),this.m_shape.setPathUserIndex(o,this.m_pathParentageIndex,t),this.m_shape.setPathUserIndex(o,this.m_pathParentsIndex,a)}if(this.m_unknownRingOrientationCount--,!this.m_unknownRingOrientationCount)return t}a=o,s=e,e=this.m_AET.getNext(e),n=!n}while(s!==r)}}return t}processBunchForRingOrientationRemoveEdges_(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_shape.getUserIndex(r,this.m_node1UserIndex),i=this.m_shape.getUserIndex(r,this.m_node2UserIndex);if(-1!==s){let e=this.m_AET.getElement(s);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(r,this.m_node1UserIndex,-1)}if(-1!==i){let e=this.m_AET.getElement(i);this.m_edges.freeEdge(e),this.m_shape.setUserIndex(r,this.m_node2UserIndex,-1)}let n=-1;-1!==s&&-1!==i?(this.m_AET.deleteNode(s),this.m_AET.deleteNode(i),e[t]=-1):n=-1===s?i:s,-1!==n&&(this.insertEdge_(r,n)||this.m_AET.deleteNode(n),e[t]=-1)}}dbgVerifyRingOrientation_(){}insertEdge_(e,t){let r=l.P.getNAN(),s=l.P.getNAN();this.m_shape.queryXY(e,r);let i=this.m_shape.getNextVertex(e);this.m_shape.queryXY(i,s);let n=!1;if(r.y<s.y){n=!0;let r,s=this.m_edges.newEdge(e);-1===t?r=this.m_AET.addElement(s):(r=t,this.m_AET.setElement(r,s)),-1===this.m_shape.getUserIndex(i,this.m_node1UserIndex)?this.m_shape.setUserIndex(i,this.m_node1UserIndex,r):this.m_shape.setUserIndex(i,this.m_node2UserIndex,r);let a=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(a,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(r)}let a=this.m_shape.getPrevVertex(e);if(this.m_shape.queryXY(a,s),r.y<s.y){n=!0;let r,s=this.m_edges.newEdge(a);-1===t?r=this.m_AET.addElement(s):(r=t,this.m_AET.setElement(r,s)),-1===this.m_shape.getUserIndex(a,this.m_node1UserIndex)?this.m_shape.setUserIndex(a,this.m_node1UserIndex,r):this.m_shape.setUserIndex(a,this.m_node2UserIndex,r);let i=this.m_shape.getPathFromVertex(e);0===this.m_shape.getPathUserIndex(i,this.m_pathOrientationIndex)&&this.m_unknownNodes.push(r)}return n}fixRingSelfTangency_(){let e=[],t=[],r=-1,s=-1,n=new l.P,a=-1,o=-1,m=-1,h=new ke(this);for(let i=h.next();-1!==i;i=h.next()){let h=new l.P;this.m_shape.queryXY(i,h);let g=this.m_shape.getPathFromVertex(i);n.equals(h)&&o===g?(-1===s&&(r=this.m_shape.createPathUserIndex(),this.m_shape.fillPathUserIndexForGeometry(this.m_geometry,r,-1),s=this.m_shape.createUserIndex(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,s,-1)),-1===m&&(m=t.length,this.m_shape.setUserIndex(a,s,m),t.push(1),-1===this.m_shape.getPathUserIndex(g,r)&&(this.m_shape.setPathUserIndex(g,r,a),e.push(g))),this.m_shape.setUserIndex(i,s,m),t[t.length-1]++):(m=-1,n.assign(h)),a=i,o=g}if(0===e.length)return!1;(0,i.g)(-1!==r);for(let i=0,n=e.length;i<n;i++){let n=e[i],a=this.m_shape.getPathUserIndex(n,r),o=this.m_shape.getUserIndex(a,s),l=[],m=[];l.push(a),m.push(o);for(let e=this.m_shape.getNextVertex(a);e!==a;e=this.m_shape.getNextVertex(e)){let r=e,i=this.m_shape.getUserIndex(r,s);if(-1!==i){if(0===m.length){m.push(i),l.push(r);continue}if(m.at(-1)===i){let n=l.at(-1);this.m_shape.peelALoopIntoAPath(n,r),this.m_shape.setUserIndex(e,s,-1),t[i]--,1===t[i]&&(t[i]=0,m.pop(),l.pop()),a=n,e=n}else l.push(e),m.push(i)}}}return this.m_shape.removePathUserIndex(r),this.m_shape.removeUserIndex(s),this.m_shape.dbgVerifyVertexCounts(),!0}progress_(e=!1){}fixRingOrientationImplMain_(){let e={stack:[],error:void 0,hasError:!1};try{let t,r=!1,i=(0,s.mS)(e,(0,l.m)(()=>{this.m_sortedVerticesArray=null}),!1);if(null===this.m_sortedVertices){let e=this.m_shape.getPointCount(this.m_geometry);t=new o.a(0);for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e)){let r=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)t.add(r),r=this.m_shape.getNextVertex(r)}this.m_shape.sortVerticesSimpleByY(t,0,e),this.progress_(!0),this.m_sortedVerticesArray=t}else i.bForget=!0;if(this.m_bFixSelfTangency&&(r=this.fixRingSelfTangency_()),1===this.m_shape.getPathCount(this.m_geometry)){let e=this.m_shape.getFirstPath(this.m_geometry),t=this.m_shape.getRingArea(e);if(this.m_shape.setExterior(e,!0),t<0){let t=this.m_shape.getFirstVertex(e);return this.m_shape.reverseRingInternal(t),this.m_shape.setLastVertex(e,this.m_shape.getPrevVertex(t)),!0}return!1}this.m_shape.dbgVerifyCurves(),this.m_pathOrientationIndex=this.m_shape.createPathUserIndex(),this.m_pathParentageIndex=this.m_shape.createPathUserIndex(),this.m_pathParentsIndex=this.m_shape.createPathUserIndex();for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e))this.m_shape.setPathUserIndex(e,this.m_pathOrientationIndex,0),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,-1),this.m_shape.setPathUserIndex(e,this.m_pathParentsIndex,-1);let n=[];this.m_yScanline=NaN;let a=l.P.getNAN();this.m_unknownRingOrientationCount=this.m_shape.getPathCount(this.m_geometry),this.m_node1UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node1UserIndex,-1),this.m_node2UserIndex=this.m_shape.createUserIndexUninitialized(),this.m_shape.fillUserIndexForGeometry(this.m_geometry,this.m_node2UserIndex,-1);let m=new ke(this);for(let e=m.next();-1!==e&&(this.progress_(),this.m_shape.queryXY(e,a),a.y!==this.m_yScanline&&n.length&&(r=this.processBunchForRingOrientationTest_(n)||r,this.m_sweepComparator.reset(),n.length=0),n.push(e),this.m_yScanline=a.y,0!==this.m_unknownRingOrientationCount);e=m.next());return this.m_unknownRingOrientationCount>0&&(r=this.processBunchForRingOrientationTest_(n)||r,n.length=0),this.m_shape.removeUserIndex(this.m_node1UserIndex),this.m_shape.removeUserIndex(this.m_node2UserIndex),this.dbgVerifyRingOrientation_(),r}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}fixRingOrientationImplSimplify_(){let e=[];for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;)if(this.progress_(),3===this.m_shape.getPathUserIndex(t,this.m_pathOrientationIndex)){this.m_shape.setExterior(t,!0);for(let r=this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex);-1!==r;){let s=this.m_shape.getPathUserIndex(r,this.m_pathParentageIndex);e.push(r),this.m_shape.setExterior(r,!1),this.m_shape.setPathUserIndex(r,this.m_pathParentageIndex,t),r=s}let r=t,s=e.length;for(let e=this.m_shape.getNextPath(t);s>0&&-1!==e;e=this.m_shape.getNextPath(e),--s){if(this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex)!==t){r=-1;break}r=e}if(0!==s){r=t;for(let t=0,s=e.length;t<s;t++){let s=e[t];this.m_shape.setPathUserIndex(s,this.m_pathParentageIndex,o.G),this.m_shape.movePath(this.m_geometry,this.m_shape.getNextPath(r),s),r=s}}e.length=0,t=this.m_shape.getNextPath(r)}else t=this.m_shape.getNextPath(t);this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex)}fixRingOrientationImplMp2sp_(){let e=this.m_shape.createPathUserIndex(),t=0,r=[];for(let s=this.m_shape.getFirstPath(this.m_geometry);-1!==s;)if(this.progress_(),3===this.m_shape.getPathUserIndex(s,this.m_pathOrientationIndex)){this.m_shape.setExterior(s,!0),this.m_shape.setPathUserIndex(s,e,t),t++;for(let e=this.m_shape.getPathUserIndex(s,this.m_pathParentageIndex);-1!==e;){let t=this.m_shape.getPathUserIndex(e,this.m_pathParentageIndex);r.push(e),this.m_shape.setExterior(e,!1),this.m_shape.setPathUserIndex(e,this.m_pathParentageIndex,s),e=t}let i=s,n=r.length,a=t;for(let t=this.m_shape.getNextPath(s);n>0&&-1!==t;t=this.m_shape.getNextPath(t),--n){if(this.m_shape.getPathUserIndex(t,this.m_pathParentageIndex)!==s){i=-1;break}i=t,this.m_shape.setPathUserIndex(t,e,-a),a++}if(0!==n){i=s,a=t;for(let t=0,s=r.length;t<s;t++){let s=r[t];this.m_shape.setPathUserIndex(s,e,-a),a++,this.m_shape.setPathUserIndex(s,this.m_pathParentageIndex,o.G)}i=s}t=a,r.length=0,s=this.m_shape.getNextPath(i)}else s=this.m_shape.getNextPath(s);return this.m_shape.removePathUserIndex(this.m_pathOrientationIndex),this.m_shape.removePathUserIndex(this.m_pathParentageIndex),this.m_shape.removePathUserIndex(this.m_pathParentsIndex),e}}function He(e,t,r,s,i,n){let a=new Ae(n);return a.m_shape=e,a.m_geometry=t,a.m_knownSimpleResult=r,a.m_bFixSelfTangency=s,a.m_polylineDegeneracies=i,a.m_bHasSegmentParentage=e.hasSegmentParentage(),a.m_bHasSegments=e.hasCurves(),a.simplify_()}class Ae{m_shape=null;m_progressTracker;m_geometry=-1;m_sortedVertices=new o.I;m_bunchEdgeEndPoints=[];m_bunchEdgeCenterPoints=[];m_bunchEdgeIndices=[];m_sorterSegmentBuffer1=null;m_sorterSegmentBuffer2=null;m_knownSimpleResult=-1;m_sortedVerticesListIndex=-1;m_polylineDegeneracies=-1;m_userIndexSortedIndexToVertex=-1;m_userIndexSortedAngleIndexToVertex=-1;m_nextVertexToProcess=-1;m_firstCoincidentVertex=-1;m_progressCounter=0;m_bFixSelfTangency=!1;m_bHasSegmentParentage=!1;m_bHasSegments=!1;constructor(e){this.m_progressTracker=e}compareAngles_(e,t){return this.m_bHasSegments?this.compareAnglesCurves_(e,t):this.compareAnglesLines_(e,t)}compareAnglesLines_(e,t){let r=this.m_bunchEdgeEndPoints[e],s=new l.P;this.m_shape.queryXY(r,s);let n=new l.P,a=this.m_bunchEdgeEndPoints[t];if(this.m_shape.queryXY(a,n),s.equals(n))return 0;let o=this.m_bunchEdgeCenterPoints[e],m=new l.P;this.m_shape.queryXY(o,m);let h=this.m_bunchEdgeCenterPoints[t],g=new l.P;this.m_shape.queryXY(h,g);let u=new l.P;u.setSub(s,m);let _=new l.P;return _.setSub(n,g),(u.isZero()||_.isZero())&&(0,i.A)(""),l.P.compareVectors(u,_)}compareAnglesCurves_(e,t){let r=this.m_bunchEdgeEndPoints[e],s=this.m_bunchEdgeEndPoints[t],i=this.m_bunchEdgeCenterPoints[e],n=this.m_bunchEdgeCenterPoints[t],o=this.m_shape.getNextVertex(i)===r,l=this.m_shape.getNextVertex(n)===s,m=o?this.m_shape.isCurve(i):this.m_shape.isCurve(r),h=l?this.m_shape.isCurve(n):this.m_shape.isCurve(s);return m||h?(this.m_sorterSegmentBuffer1||=new a.S,this.m_sorterSegmentBuffer2||=new a.S,o?this.m_shape.querySegment(i,this.m_sorterSegmentBuffer1,!1,!0):(this.m_shape.querySegment(r,this.m_sorterSegmentBuffer1,!1,!0),this.m_sorterSegmentBuffer1.get().reverse()),l?this.m_shape.querySegment(n,this.m_sorterSegmentBuffer2,!1,!0):(this.m_shape.querySegment(s,this.m_sorterSegmentBuffer2,!1,!0),this.m_sorterSegmentBuffer2.get().reverse()),(0,a.O)(this.m_sorterSegmentBuffer1.get(),this.m_sorterSegmentBuffer2.get())):this.compareAnglesLines_(e,t)}beforeRemoveVertex_(e,t){let r=this.m_shape.getUserIndex(e,this.m_userIndexSortedIndexToVertex);if(this.m_nextVertexToProcess===r&&(this.m_nextVertexToProcess=this.m_sortedVertices.getNext(this.m_nextVertexToProcess)),this.m_firstCoincidentVertex===r&&(this.m_firstCoincidentVertex=this.m_sortedVertices.getNext(this.m_firstCoincidentVertex)),this.m_sortedVertices.deleteElement(this.m_sortedVerticesListIndex,r),this.removeAngleSortInfo_(e),t){let t=this.m_shape.getPathFromVertex(e);if(-1!==t&&this.m_shape.getFirstVertex(t)===e){let r=this.m_shape.getNextVertex(e);if(r!==e){if(this.m_shape.getPathFromVertex(r)===t)return void this.m_shape.setFirstVertex(t,r);{let r=this.m_shape.getPrevVertex(e);if(r!==e&&this.m_shape.getPathFromVertex(r)===t)return void this.m_shape.setFirstVertex(t,r)}}this.m_shape.setFirstVertex(t,-1),this.m_shape.setLastVertex(t,-1)}}}processBunch_(){let e=!1,t=new l.P(0,0);for(;;){this.m_bunchEdgeEndPoints.length=0,this.m_bunchEdgeCenterPoints.length=0,this.m_bunchEdgeIndices.length=0;let r=this.m_firstCoincidentVertex,s=0,i=!0;for(;r!==this.m_nextVertexToProcess;){let e=this.m_sortedVertices.getData(r);i&&=(this.m_shape.queryXY(e,t),!1);let n=this.m_shape.getPrevVertex(e),a=this.m_shape.getNextVertex(e);this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex)!==o.G&&(this.m_bunchEdgeEndPoints.push(n),this.m_shape.setUserIndex(n,this.m_userIndexSortedAngleIndexToVertex,o.G),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(s++)),this.m_shape.getUserIndex(a,this.m_userIndexSortedAngleIndexToVertex)!==o.G&&(this.m_bunchEdgeEndPoints.push(a),this.m_shape.setUserIndex(a,this.m_userIndexSortedAngleIndexToVertex,o.G),this.m_bunchEdgeCenterPoints.push(e),this.m_bunchEdgeIndices.push(s++)),r=this.m_sortedVertices.getNext(r)}if(this.m_bunchEdgeEndPoints.length<2){1===this.m_bunchEdgeEndPoints.length&&this.m_shape.setUserIndex(this.m_bunchEdgeEndPoints[0],this.m_userIndexSortedAngleIndexToVertex,-1);break}this.m_bunchEdgeIndices.sort((e,t)=>this.compareAngles_(e,t));for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e],r=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(r,this.m_userIndexSortedAngleIndexToVertex,e)}let n=this.processCrossOvers_(t);for(let e=0,t=this.m_bunchEdgeIndices.length;e<t;e++){let t=this.m_bunchEdgeIndices[e];if(-1===t)continue;let r=this.m_bunchEdgeEndPoints[t];this.m_shape.setUserIndex(r,this.m_userIndexSortedAngleIndexToVertex,-1)}if(!n)break;e=!0}return e}processCrossOvers_(e){let t=!1,r=!0;for(;r;){r=!1;let s=0;-1===this.m_bunchEdgeIndices[s]&&(s=this.getNextEdgeIndex_(s));let i=this.getNextEdgeIndex_(s);for(let n=0,a=this.m_bunchEdgeIndices.length;n<a&&-1!==s&&-1!==i&&s!==i;n++){let n=this.m_bunchEdgeIndices[s],a=this.m_bunchEdgeIndices[i],o=this.m_bunchEdgeEndPoints[n],l=this.m_bunchEdgeEndPoints[a],m=this.m_shape.getNextVertex(o),h=!1;this.m_shape.isEqualXYPoint2D(m,e)||(m=this.m_shape.getPrevVertex(o),h=!0);let g=this.m_shape.getNextVertex(l),u=!1;this.m_shape.isEqualXYPoint2D(g,e)||(g=this.m_shape.getPrevVertex(l),u=!0);let _=h?this.m_shape.getPrevVertex(m):this.m_shape.getNextVertex(m),p=u?this.m_shape.getPrevVertex(g):this.m_shape.getNextVertex(g),d=!1;(this.removeSpike_(m)||this.removeSpike_(g)||this.removeSpike_(o)||this.removeSpike_(l)||this.removeSpike_(_)||this.removeSpike_(p))&&(d=!0),m!==g&&(!d&&this.m_shape.isEqualXY(o,l)&&(d=this.resolveOverlap_(h,u,m,o,g,l)),!d&&this.m_shape.isEqualXY(_,p)&&(d=this.resolveOverlap_(!h,!u,m,_,g,p)),!d&&this.m_shape.isEqualXY(o,p)&&(d=this.resolveOverlap_(h,!u,m,o,g,p)),!d&&this.m_shape.isEqualXY(_,l)&&(d=this.resolveOverlap_(!h,u,m,_,g,l))),d&&(t=!0),r||=d,s=d?this.getNextEdgeIndex_(s):i,i=this.getNextEdgeIndex_(s)}}if(!t){let r=0;-1===this.m_bunchEdgeIndices[r]&&(r=this.getNextEdgeIndex_(r));let s=this.getNextEdgeIndex_(r);for(let i=0,n=this.m_bunchEdgeIndices.length;i<n&&-1!==r&&-1!==s&&r!==s;i++){let i=this.m_bunchEdgeIndices[r],n=this.m_bunchEdgeIndices[s],a=this.m_bunchEdgeEndPoints[i],o=this.m_bunchEdgeEndPoints[n],l=this.m_shape.getNextVertex(a);this.m_shape.isEqualXYPoint2D(l,e)||(l=this.m_shape.getPrevVertex(a));let m=this.m_shape.getNextVertex(o);this.m_shape.isEqualXYPoint2D(m,e)||(m=this.m_shape.getPrevVertex(o));let h=this.getDirection_(l,a),g=this.getDirection_(m,o),u=h?this.m_shape.getPrevVertex(l):this.m_shape.getNextVertex(l),_=g?this.m_shape.getPrevVertex(m):this.m_shape.getNextVertex(m),p=this.detectAndResolveCrossOver_(h,g,a,l,u,o,m,_);1!==p?0===p?(r=this.getNextEdgeIndex_(r),s=this.getNextEdgeIndex_(r)):(r=this.getPrevEdgeIndex_(r),s=this.getNextEdgeIndex_(r)):t=!0}}return t}simplify_(){this.m_shape.getGeometryType(this.m_geometry)===i.G.enumPolygon&&1===this.m_shape.getFillRule(this.m_geometry)&&new Ar(this.m_progressTracker).planarSimplifyNoCrackingAndCluster(this.m_bFixSelfTangency,this.m_shape,this.m_geometry,0);let e=!1;this.m_userIndexSortedIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=-1,this.m_userIndexSortedAngleIndexToVertex=this.m_shape.createUserIndexUninitialized();let t=this.m_shape.getPointCount(this.m_geometry),r=new o.a(0);this.m_shape.dbgVerifyMonotone();for(let e=this.m_shape.getFirstPath(this.m_geometry);-1!==e;e=this.m_shape.getNextPath(e)){let t=this.m_shape.getFirstVertex(e);for(let s=0,i=this.m_shape.getPathSize(e);s<i;s++)this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,-1),r.add(t),t=this.m_shape.getNextVertex(t)}this.m_shape.sortVerticesSimpleByY(r,0,t),this.progress_(!0),this.m_userIndexSortedIndexToVertex=this.m_shape.createUserIndexUninitialized(),this.m_sortedVertices.reserveNodes(t),this.m_sortedVerticesListIndex=this.m_sortedVertices.createList(0);for(let e=0;e<t;e++){let t=r.read(e),s=this.m_sortedVertices.addElement(this.m_sortedVerticesListIndex,t);this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,s)}this.m_nextVertexToProcess=-1,this.cleanupSpikes_()&&(e=!0);let s=0,n=!1;do{n=!1,this.m_nextVertexToProcess=-1,this.m_firstCoincidentVertex=this.m_sortedVertices.getFirst(this.m_sortedVerticesListIndex);let t=new l.P(0,0);this.m_firstCoincidentVertex!==o.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(this.m_firstCoincidentVertex),t);let r=0,a=this.m_firstCoincidentVertex;for(;a!==o.I.st_nullNode()&&(a=this.m_sortedVertices.getNext(a),a!==o.I.st_nullNode());){this.progress_();let e=this.m_sortedVertices.getData(a),s=l.P.getNAN();if(this.m_shape.queryXY(e,s),t.equals(s))r++;else{if(r>0){this.m_nextVertexToProcess=a;let e=this.processBunch_();a=this.m_nextVertexToProcess,a!==o.I.st_nullNode()&&this.m_shape.queryXY(this.m_sortedVertices.getData(a),s),e&&(n=!0)}t.setCoordsPoint2D(s),this.m_firstCoincidentVertex=a,r=0}}this.m_nextVertexToProcess=-1,r>0&&this.processBunch_()&&(n=!0),s++>10&&(0,i.d)(""),n&&this.fixOrphanVertices_(),this.cleanupSpikes_()&&(n=!0),e||=n}while(n);return this.m_shape.dbgVerifyMonotone(),this.m_shape.dbgVerifyCurves(),this.m_shape.removeUserIndex(this.m_userIndexSortedIndexToVertex),this.m_shape.removeUserIndex(this.m_userIndexSortedAngleIndexToVertex),e=function(e,t,r,s,i){let n=new Fe(i);return n.m_shape=e,n.m_geometry=t,n.m_sortedVertices=r,n.m_bFixSelfTangency=s,n.fixRingOrientation_()}(this.m_shape,this.m_geometry,this.m_sortedVertices,this.m_bFixSelfTangency,this.m_progressTracker)||e,this.m_shape.dbgVerifyCurves(),e}getDirection_(e,t){return this.m_shape.getNextVertex(t)!==e}detectAndResolveCrossOver_(e,t,r,s,i,n,a,o){if(s===a)return this.removeAngleSortInfo_(r),this.removeAngleSortInfo_(n),-1;let m=this.m_shape.getUserIndex(r,this.m_userIndexSortedAngleIndexToVertex),h=this.m_shape.getUserIndex(i,this.m_userIndexSortedAngleIndexToVertex),g=this.m_shape.getUserIndex(n,this.m_userIndexSortedAngleIndexToVertex),u=this.m_shape.getUserIndex(o,this.m_userIndexSortedAngleIndexToVertex),_=(0,l.c)(8,NaN),p=(0,l.c)(4,NaN);_[0]=0,p[0]=m,_[1]=0,p[1]=h,_[2]=1,p[2]=g,_[3]=1,p[3]=u;for(let e=1;e<4;e++){let t=p[e],r=_[e],s=e-1;for(;s>=0&&p[s]>t;)p[s+1]=p[s],_[s+1]=_[s],s--;p[s+1]=t,_[s+1]=r}let d=0;if(_[0]&&(d|=1),_[1]&&(d|=2),_[2]&&(d|=4),_[3]&&(d|=8),5!==d&&10!==d)return 0;if(e!==t&&(o=(0,l.s)(n,n=o)),e)this.m_shape.setNextVertex(o,s),this.m_shape.setPrevVertex(s,o),this.m_shape.setNextVertex(i,a),this.m_shape.setPrevVertex(a,i),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(a,!0));else{if(this.m_shape.setPrevVertex(o,s),this.m_shape.setNextVertex(s,o),this.m_shape.setPrevVertex(i,a),this.m_shape.setNextVertex(a,i),this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(s),t=this.m_shape.getSegmentParentage(a);this.m_shape.setSegmentParentageAndBreak(s,t,!0),this.m_shape.setSegmentParentageAndBreak(a,e,!0)}if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(s),t=this.m_shape.getVertexIndex(a),r=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let i=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,i),this.m_shape.setSegmentToIndex(t,r)}}return 1}resolveOverlap_(e,t,r,s,i,n){return this.resolveOverlapOddEven_(e,t,r,s,i,n)}resolveOverlapOddEven_(e,t,r,s,i,n){if(e!==t){e||(i=(0,l.s)(r,r=i),n=(0,l.s)(s,s=n));let t=this.m_shape.getNextVertex(i),a=this.m_shape.getNextVertex(r);if(this.m_shape.setNextVertex(r,t),this.m_shape.setPrevVertex(t,r),this.m_shape.setNextVertex(i,a),this.m_shape.setPrevVertex(a,i),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(r),t=this.m_shape.getVertexIndex(i),s=this.m_shape.getSegmentFromIndex(e);this.m_shape.setSegmentToIndex(e,null);let n=this.m_shape.getSegmentFromIndex(t);this.m_shape.setSegmentToIndex(t,null),this.m_shape.setSegmentToIndex(e,n),this.m_shape.setSegmentToIndex(t,s)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(r),t=this.m_shape.getSegmentParentage(i);this.m_shape.setSegmentParentageAndBreak(r,t,!0),this.m_shape.setSegmentParentageAndBreak(i,e,!0),this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(n,!0)}this.removeSpike_(i)}else{let a=e?r:s,o=t?i:n,l=e?s:r,m=t?n:i,h=null;if(this.m_bHasSegments){let e=this.m_shape.getVertexIndex(m);h=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null);let t=this.m_shape.getVertexIndex(o);this.m_shape.setSegmentToIndex(t,null);let r=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(r,null)}let g=-1;this.m_bHasSegmentParentage&&(g=this.m_shape.getSegmentParentage(m));let u=!1;this.m_shape.setNextVertex(a,o),this.m_shape.setNextVertex(o,a),this.m_shape.setPrevVertex(l,m),this.m_shape.setPrevVertex(m,l);let _=m;for(;_!==o;){let e=this.m_shape.getPrevVertex(_),t=this.m_shape.getNextVertex(_);if(this.m_shape.setPrevVertex(_,t),this.m_shape.setNextVertex(_,e),u||=_===a,this.m_bHasSegments&&_!==a){let e=this.m_shape.getVertexIndex(t),r=h;h=this.m_shape.getSegmentFromIndex(e),null!==r&&r.reverse(),this.m_shape.setSegmentToIndex(e,r)}if(this.m_bHasSegmentParentage){let e=this.m_shape.getSegmentParentage(t);this.m_shape.setSegmentParentagePreserveBreak(t,g),g=e}_=t}let p=null;if(!u){let e=this.m_shape.getPrevVertex(o),t=this.m_shape.getNextVertex(o);if(this.m_shape.setPrevVertex(o,t),this.m_shape.setNextVertex(o,e),this.m_bHasSegments){let e=this.m_shape.getVertexIndex(o);p=this.m_shape.getSegmentFromIndex(e),this.m_shape.setSegmentToIndex(e,null)}}let d=-1,c=-1;if(this.m_bHasSegmentParentage&&(d=u?this.m_shape.getSegmentParentage(a):this.m_shape.getSegmentParentage(o),c=this.m_shape.getSegmentParentage(l)),this.transferVertexData_(o,a),this.beforeRemoveVertex_(o,!0),this.m_shape.removeVertexInternal(o,!0),this.removeAngleSortInfo_(a),this.transferVertexData_(m,l),this.beforeRemoveVertex_(m,!0),this.m_shape.removeVertexInternal(m,!0),this.removeAngleSortInfo_(l),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageAndBreak(a,d,!0),this.m_shape.setSegmentParentageAndBreak(l,c,!0)),p){let e=this.m_shape.getVertexIndex(a);this.m_shape.setSegmentToIndex(e,p)}}return!0}cleanupSpikes_(){let e=!1;for(let t=this.m_shape.getFirstPath(this.m_geometry);-1!==t;){let r=this.m_shape.getNextPath(t),s=this.m_shape.getFirstVertex(t);for(let r=0,i=this.m_shape.getPathSize(t);r<i&&i>1;){this.progress_();let{v:n,bModified:a}=this.checkAndCleanupSpike_(t,s);if(-1===n)break;a?(e=!0,s=n,r=0,i=this.m_shape.getPathSize(t)):(s=n,r++)}t=r}return e}checkAndCleanupSpike_(e,t){let r={v:-1,bModified:!1},s=this.m_shape.getPrevVertex(t),i=this.m_shape.getNextVertex(t),n=-1,a=-1;for(;this.m_shape.isEqualXY(s,i)&&(n=s,a=i,i!==t);)s=this.m_shape.getPrevVertex(s),i=this.m_shape.getNextVertex(i);if(-1===n)return r.v=i,r;r.bModified=!0;for(let e=this.m_shape.getNextVertex(n);this.beforeRemoveVertex_(e,!1),e!==a;e=this.m_shape.getNextVertex(e));if(n===t)return-1===this.m_polylineDegeneracies?this.m_shape.removePath(e):this.m_shape.movePath(this.m_polylineDegeneracies,-1,e),r.v=-1,r;{let e=this.m_shape.peelALoopIntoAPath(n,a);-1===this.m_polylineDegeneracies?this.m_shape.removePath(e):this.m_shape.movePath(this.m_polylineDegeneracies,-1,e)}return r.v=n,r}removeSpike_(e){let t=this.m_shape.getPrevVertex(e),r=this.m_shape.getNextVertex(e),s=-1,i=-1;for(;this.m_shape.isEqualXY(t,r)&&(s=t,i=r,r!==e);)t=this.m_shape.getPrevVertex(t),r=this.m_shape.getNextVertex(r);if(-1===s)return!1;if(this.m_shape.peelALoop(s,i),this.m_bHasSegmentParentage&&(this.m_shape.setSegmentParentageBreakVertex(s,!0),this.m_shape.setSegmentParentageBreakVertex(i,!0)),this.removeAngleSortInfo_(s),-1===this.m_polylineDegeneracies)for(let e=this.m_shape.getNextVertex(i);;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!0),this.m_shape.setSegmentToIndex(this.m_shape.getVertexIndex(e),null),this.m_shape.removeVertexInternal(e,!1),e===i)break;e=t}else{for(let e=i;;){let t=this.m_shape.getNextVertex(e);if(this.removeAngleSortInfo_(e),this.beforeRemoveVertex_(e,!1),e=t,e===i)break}this.m_shape.insertClosedPath(this.m_polylineDegeneracies,-1,i,i,[!1])}return!0}fixOrphanVertices_(){let e=0;for(let e=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==e;e=this.m_sortedVertices.getNext(e)){let t=this.m_sortedVertices.getData(e);this.m_shape.setPathToVertex(t,-1)}let t=0;for(let r=this.m_shape.getFirstPath(this.m_geometry);-1!==r;){let s=this.m_shape.getFirstVertex(r);if(-1===s||-1!==this.m_shape.getPathFromVertex(s)){let e=r;r=this.m_shape.getNextPath(r),this.m_shape.removePathOnly(e);continue}this.m_shape.setPathToVertex(s,r);let i=1;for(let e=this.m_shape.getNextVertex(s);e!==s;e=this.m_shape.getNextVertex(e))this.m_shape.setPathToVertex(e,r),i++;this.m_shape.setRingAreaValid(r,!1),this.m_shape.setPathSize(r,i),this.m_shape.setLastVertex(r,this.m_shape.getPrevVertex(s)),t+=i,e++,r=this.m_shape.getNextPath(r)}for(let r=this.m_sortedVertices.getFirst(this.m_sortedVertices.getFirstList());-1!==r;r=this.m_sortedVertices.getNext(r)){let s=this.m_sortedVertices.getData(r);if(-1!==this.m_shape.getPathFromVertex(s))continue;let i=this.m_shape.insertClosedPath(this.m_geometry,-1,s,s,[!1]);t+=this.m_shape.getPathSize(i),e++}this.m_shape.setGeometryPathCount(this.m_geometry,e),this.m_shape.setGeometryVertexCount(this.m_geometry,t);let r=0;for(let e=this.m_shape.getFirstGeometry();-1!==e;e=this.m_shape.getNextGeometry(e))r+=this.m_shape.getPointCount(e);this.m_shape.setTotalPointCount(r)}getNextEdgeIndex_(e){if(-1===e)return-1;for(let t=0,r=this.m_bunchEdgeIndices.length-1;t<r;t++)if(e=(e+1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return-1}getPrevEdgeIndex_(e){if(-1===e)return-1;for(let t=0,r=this.m_bunchEdgeIndices.length-1;t<r;t++)if(e=(this.m_bunchEdgeIndices.length+e-1)%this.m_bunchEdgeIndices.length,-1!==this.m_bunchEdgeIndices[e])return e;return-1}transferVertexData_(e,t){let r=this.m_shape.getUserIndex(t,this.m_userIndexSortedIndexToVertex),s=this.m_shape.getUserIndex(t,this.m_userIndexSortedAngleIndexToVertex);this.m_shape.transferAllDataToTheVertex(e,t),this.m_shape.setUserIndex(t,this.m_userIndexSortedIndexToVertex,r),this.m_shape.setUserIndex(t,this.m_userIndexSortedAngleIndexToVertex,s)}removeAngleSortInfo_(e){let t=this.m_shape.getUserIndex(e,this.m_userIndexSortedAngleIndexToVertex);-1!==t&&(this.m_bunchEdgeIndices[t]=-1,this.m_shape.setUserIndex(e,this.m_userIndexSortedAngleIndexToVertex,-1))}progress_(e=!1){}}function Me(e,t,r,s,m,h=!0){switch(Ue(s)){case 0:break;case 1:(0,i.b)("relation string length has to be 9 characters");break;default:(0,i.b)("relation string")}if(h){let i=function(e,t,r){return function(e){return"T*F**FFF*"===e}(e)?3:function(e){return"FF*FF****"===e}(e)?4:function(e,t,r){return!(0===t&&0===r||(2===t&&2===r?"F***T****"!==e:2!==t&&1!==t||0!==r||"F**T*****"!==e))}(e,t,r)?8:function(e,t,r){return t>r?"T*****T**"===e:1===t&&1===r&&"0********"===e}(e,t,r)?16:function(e){return"T**FF*FF*"===e}(e)?64:function(e){return"T*****FF*"===e}(e)?1:function(e,t,r){return t===r&&(1===t?"1*T***T**"===e:"T*T***T**"===e)}(e,t,r)?32:0}(s,e.getDimension(),t.getDimension());if(0!==i)return et(e,t,r,i,m)}let g=0;if("number"==typeof r)g=r;else{let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s);let i=n.Envelope2D.constructEmpty();t.queryEnvelope(i);let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:s}),a.mergeEnvelope2D(i),g=(0,o.d)(r,a,!1)}let u=Ze(e,g),_=Ze(t,g);if(u.isEmpty()||_.isEmpty())return function(e,t,r){let s=(0,l.c)(9,-1);if(e.isEmpty()&&t.isEmpty())return Le(s,r);let o,m=!1;e.isEmpty()?(o=t,m=!0):o=e,s[0]=-1,s[1]=-1,s[3]=-1,s[4]=-1,s[6]=-1,s[7]=-1,s[8]=2;let h=o.getGeometryType();if((0,i.j)(h))if(h===i.G.enumPolygon)if(0!==o.calculateArea2D())s[2]=2,s[5]=1;else{s[5]=-1;let e=n.Envelope2D.constructEmpty();o.queryEnvelope(e),s[2]=e.height()||e.width()?1:0}else s[2]=+(0!==o.calculateLength2D()),s[5]=(0,a.A)(o)?0:-1;else s[2]=0,s[5]=-1;return m&&je(s),Le(s,r)}(u,_,s);let p=u.getGeometryType(),d=_.getGeometryType(),c=!1;switch(p){case i.G.enumPolygon:switch(d){case i.G.enumPolygon:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaAreaPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaAreaDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPolyline:c=qe(u,_,g,s,m);break;case i.G.enumPoint:c=Ye(u,_,g,s);break;case i.G.enumMultiPoint:c=Be(u,_,g,s,m)}break;case i.G.enumPolyline:switch(d){case i.G.enumPolygon:c=qe(_,u,g,Ke(s),m);break;case i.G.enumPolyline:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setLineLinePredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.lineLineDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexA=l.m_topoGraph.createUserIndexForClusters(),l.m_clusterIndexB=l.m_topoGraph.createUserIndexForClusters(),ze(n,l.m_topoGraph,l.m_clusterIndexA),ze(m,l.m_topoGraph,l.m_clusterIndexB),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexA),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexB),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPoint:c=Xe(u,_,g,s,m);break;case i.G.enumMultiPoint:c=Oe(u,_,g,s,m)}break;case i.G.enumPoint:switch(d){case i.G.enumPolygon:c=Ye(_,u,g,Ke(s));break;case i.G.enumPolyline:c=Xe(_,u,g,Ke(s),m);break;case i.G.enumPoint:c=function(e,t,r,s){let i=e.getXY(),n=t.getXY(),a=(0,l.c)(9,-1);return l.P.sqrDistance(i,n)<=r*r?a[0]=0:(a[2]=0,a[6]=0),a[8]=2,Le(a,s)}(u,_,g,s);break;case i.G.enumMultiPoint:c=Re(_,u,g,Ke(s))}break;case i.G.enumMultiPoint:switch(d){case i.G.enumPolygon:c=Be(_,u,g,Ke(s),m);break;case i.G.enumPolyline:c=Oe(_,u,g,Ke(s),m);break;case i.G.enumMultiPoint:c=function(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setPointPointPredicates_();let m=new n.Envelope2D,h=new n.Envelope2D;e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.pointPointDisjointPredicates_(),g=!0),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}(u,_,g,s,m);break;case i.G.enumPoint:c=Re(u,_,g,s)}break;default:c=!1}return c}function Ue(e){if(9!==e.length)return 1;for(let t=0;t<9;t++){let r=e[t];if("*"!==r&&"T"!==r&&"F"!==r&&"0"!==r&&"1"!==r&&"2"!==r)return 2}return 0}function qe(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaLinePredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaLineDisjointPredicates_(e,t),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexB=l.m_topoGraph.createUserIndexForClusters(),ze(m,l.m_topoGraph,l.m_clusterIndexB),l.computeMatrixTopoGraphHalfEdges_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexB),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Be(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setAreaPointPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.areaPointDisjointPredicates_(e),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Oe(e,t,r,s,i){let l=new We;l.resetMatrix_(),l.setPredicates_(s),l.setLinePointPredicates_();let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryEnvelope(m),t.queryEnvelope(h);let g=!1;if(rt(m,h,r)&&(l.linePointDisjointPredicates_(e),g=!0),g||st(e,t),!g){let s=new a.E,n=s.addGeometry(e),m=s.addGeometry(t);l.setEditShapeCrackAndCluster_(s,new o.C(r,0),i),l.m_clusterIndexA=l.m_topoGraph.createUserIndexForClusters(),ze(n,l.m_topoGraph,l.m_clusterIndexA),l.computeMatrixTopoGraphClusters_(n,m),l.m_topoGraph.deleteUserIndexForClusters(l.m_clusterIndexA),l.m_topoGraph.removeShape()}return Le(l.m_matrix,l.m_scl)}function Ye(e,t,r,s,i){let a=new We;a.resetMatrix_(),a.setPredicates_(s),a.setAreaPointPredicates_();let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o);let l=t.getXY(),m=!1;if(it(l,o,r)&&(a.areaPointDisjointPredicates_(e),m=!0),!m){let t=tr(e,l,r);if(1===t)a.m_matrix[0]=0,a.m_matrix[2]=2,a.m_matrix[3]=-1,a.m_matrix[5]=1,a.m_matrix[6]=-1;else if(2===t)if(a.m_matrix[6]=-1,0!==e.calculateArea2D())a.m_matrix[0]=-1,a.m_matrix[3]=0,a.m_matrix[2]=2,a.m_matrix[5]=1;else{a.m_matrix[0]=0,a.m_matrix[3]=-1,a.m_matrix[5]=-1;let t=n.Envelope2D.constructEmpty();e.queryEnvelope(t),a.m_matrix[2]=t.height()||t.width()?1:-1}else a.areaPointDisjointPredicates_(e)}return Le(a.m_matrix,s)}function Xe(e,t,r,s,i){let o=new We;o.resetMatrix_(),o.setPredicates_(s),o.setLinePointPredicates_();let l=n.Envelope2D.constructEmpty();e.queryEnvelope(l);let m=!1;if(it(t.getXY(),l,r)&&(o.linePointDisjointPredicates_(e),m=!0),!m){let s=null,n=!1,l=!1;if((o.m_performPredicates[0]||o.m_performPredicates[6])&&(et(e,t,r,4,i)?(o.m_matrix[0]=-1,o.m_matrix[6]=0):(o.m_performPredicates[0]&&(s=(0,a.c)(e),l=!et(s,t,r,4,i),n=!0,o.m_matrix[0]=l?-1:0),o.m_matrix[6]=-1)),o.m_performPredicates[3]&&(null!==s&&s.isEmpty()?o.m_matrix[3]=-1:(n||=(s??=(0,a.c)(e),l=!et(s,t,r,4,i),!0),o.m_matrix[3]=l?0:-1)),o.m_performPredicates[5])if(null!==s&&s.isEmpty())o.m_matrix[5]=-1;else if(n&&!l)o.m_matrix[5]=0;else{null===s&&(s=(0,a.c)(e));let n=et(s,t,r,3,i);o.m_matrix[5]=n?-1:0}if(o.m_performPredicates[2])if(0!==e.calculateLength2D())o.m_matrix[2]=1;else{let s=new a.M({vd:e.getDescription()});s.addPoints(e,0,e.getPointCount());let n=et(s,t,r,3,i);o.m_matrix[2]=n?-1:0}}return Le(o.m_matrix,o.m_scl)}function Re(e,t,r,s,i){let a=new We;a.resetMatrix_(),a.setPredicates_(s),a.setPointPointPredicates_();let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o);let m=t.getXY(),h=new l.P,g=!1;if(it(m,o,r)&&(a.pointPointDisjointPredicates_(),g=!0),!g){let t=!1,s=!0,i=r*r;for(let r=0;r<e.getPointCount()&&(e.queryXY(r,h),l.P.sqrDistance(h,m)<=i?t=!0:s=!1,!t||s);r++);t?(a.m_matrix[0]=0,a.m_matrix[2]=s?-1:0,a.m_matrix[6]=-1):(a.m_matrix[0]=-1,a.m_matrix[2]=0,a.m_matrix[6]=0)}return Le(a.m_matrix,s)}function Le(e,t){for(let r=0;r<9;r++)switch(t[r]){case"T":if(-1===e[r])return!1;break;case"F":if(-1!==e[r])return!1;break;case"0":if(0!==e[r])return!1;break;case"1":if(1!==e[r])return!1;break;case"2":if(2!==e[r])return!1}return!0}function ze(e,t,r){let s=t.getGeometryID(e);for(let e=t.getFirstCluster();-1!==e;e=t.getNextCluster(e)){if(0===(t.getClusterParentage(e)&s))continue;let i=t.getClusterHalfEdge(e);if(-1===i){t.setClusterUserIndex(e,r,0);continue}let n=i,a=0;do{let e=n;0!==(t.getHalfEdgeParentage(e)&s)&&a++,n=t.getHalfEdgeNext(t.getHalfEdgeTwin(e))}while(n!==i);t.setClusterUserIndex(e,r,a)}}class We{m_clusterIndexA=-1;m_clusterIndexB=-1;m_visitedIndex=-1;m_topoGraph=new K;m_matrix=(0,l.c)(9,0);m_maxDim=(0,l.c)(9,0);m_performPredicates=(0,l.c)(9,!1);m_scl="";m_predicateCount=0;nullFunc(){return(0,i.d)("should not be called"),!1}m_predicatesHalfEdge=this.nullFunc;m_predicatesCluster=this.nullFunc;constructor(){}resetMatrix_(){this.m_matrix.fill(-2),this.m_maxDim.fill(-2)}setPredicates_(e){this.m_scl=e;for(let e=0;e<9;e++)"*"===this.m_scl[e]?this.m_performPredicates[e]=!1:(this.m_performPredicates[e]=!0,this.m_predicateCount++)}setRemainingPredicatesToFalse_(){for(let e=0;e<9;e++)this.m_performPredicates[e]&&-2===this.m_matrix[e]&&(this.m_matrix[e]=-1,this.m_performPredicates[e]=!1)}isPredicateKnown_(e){return-2!==this.m_matrix[e]&&!(-1!==this.m_matrix[e]&&"T"!==this.m_scl[e]&&"F"!==this.m_scl[e]&&this.m_matrix[e]<this.m_maxDim[e]||(this.m_performPredicates[e]=!1,this.m_predicateCount--,0))}setAreaAreaPredicates_(){this.m_predicatesHalfEdge=this.areaAreaPredicates_,this.m_maxDim[0]=2,this.m_maxDim[1]=1,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=1,this.m_maxDim[5]=1,this.m_maxDim[6]=2,this.m_maxDim[7]=1,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaLinePredicates_(){this.m_predicatesHalfEdge=this.areaLinePredicates_,this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=2,this.m_maxDim[3]=1,this.m_maxDim[4]=0,this.m_maxDim[5]=1,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLineLinePredicates_(){this.m_predicatesHalfEdge=this.lineLinePredicates_,this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=1,this.m_maxDim[1]=0,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=0,this.m_maxDim[5]=0,this.m_maxDim[6]=1,this.m_maxDim[7]=0,this.m_maxDim[8]=2,this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setAreaPointPredicates_(){this.m_predicatesCluster=this.areaPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=2,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setLinePointPredicates_(){this.m_predicatesCluster=this.linePointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=1,this.m_maxDim[3]=0,this.m_maxDim[4]=-1,this.m_maxDim[5]=0,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}setPointPointPredicates_(){this.m_predicatesCluster=this.pointPointPredicates_,this.m_maxDim[0]=0,this.m_maxDim[1]=-1,this.m_maxDim[2]=0,this.m_maxDim[3]=-1,this.m_maxDim[4]=-1,this.m_maxDim[5]=-1,this.m_maxDim[6]=0,this.m_maxDim[7]=-1,this.m_maxDim[8]=2,this.m_performPredicates[1]&&(this.m_matrix[1]=-1,this.m_performPredicates[1]=!1,this.m_predicateCount--),this.m_performPredicates[3]&&(this.m_matrix[3]=-1,this.m_performPredicates[3]=!1,this.m_predicateCount--),this.m_performPredicates[4]&&(this.m_matrix[4]=-1,this.m_performPredicates[4]=!1,this.m_predicateCount--),this.m_performPredicates[5]&&(this.m_matrix[5]=-1,this.m_performPredicates[5]=!1,this.m_predicateCount--),this.m_performPredicates[7]&&(this.m_matrix[7]=-1,this.m_performPredicates[7]=!1,this.m_predicateCount--),this.m_performPredicates[8]&&(this.m_matrix[8]=2,this.m_performPredicates[8]=!1,this.m_predicateCount--)}areaAreaDisjointPredicates_(e,t){this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5]),this.areaGeomContainsOrDisjointPredicates_(t,this.m_performPredicates[6]?6:-1,this.m_scl[6],this.m_performPredicates[7]?7:-1,this.m_scl[7])}areaGeomContainsOrDisjointPredicates_(e,t,r,s,i){let a=-1!==t,o=-1!==s;if(a||o)if(("T"!==r&&"F"!==r&&a||"T"!==i&&"F"!==i&&o)&&0===e.calculateArea2D()){if(o&&(this.m_matrix[s]=-1),a){let r=n.Envelope2D.constructEmpty();e.queryEnvelope(r),this.m_matrix[t]=r.height()||r.width()?1:0}}else a&&(this.m_matrix[t]=2),o&&(this.m_matrix[s]=1)}areaAreaContainsPredicates_(e){this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[0]?0:-1,this.m_scl[0],this.m_performPredicates[1]?1:-1,this.m_scl[1])}areaAreaWithinPredicates_(e){this.areaAreaContainsPredicates_(e),je(this.m_matrix)}areaLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[6]){let e=this.m_scl[6],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!r}this.m_performPredicates[7]&&((0,a.A)(t)?this.m_matrix[7]=0:this.m_matrix[7]=-1),this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaLineContainsPredicates_(e,t){if(this.m_performPredicates[0]){let e=this.m_scl[0],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[0]=+!!r}this.m_performPredicates[1]&&((0,a.A)(t)?this.m_matrix[1]=0:this.m_matrix[1]=-1),this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1,this.m_matrix[7]=-1}areaPointDisjointPredicates_(e){this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_matrix[6]=0,this.areaGeomContainsOrDisjointPredicates_(e,this.m_performPredicates[2]?2:-1,this.m_scl[2],this.m_performPredicates[5]?5:-1,this.m_scl[5])}areaPointContainsPredicates_(e){this.m_matrix[0]=0,this.m_matrix[2]=2,this.m_matrix[3]=-1,this.m_matrix[5]=1,this.m_matrix[6]=-1}lineLineDisjointPredicates_(e,t){if(this.m_matrix[0]=-1,this.m_matrix[1]=-1,this.m_matrix[3]=-1,this.m_matrix[4]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],r="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!r}if(this.m_performPredicates[5]&&((0,a.A)(e)?this.m_matrix[5]=0:this.m_matrix[5]=-1),this.m_performPredicates[6]){let e=this.m_scl[6],r="T"===e||"F"===e||0!==t.calculateLength2D();this.m_matrix[6]=+!!r}this.m_performPredicates[7]&&((0,a.A)(t)?this.m_matrix[7]=0:this.m_matrix[7]=-1)}linePointDisjointPredicates_(e){if(this.m_matrix[0]=-1,this.m_matrix[3]=-1,this.m_performPredicates[2]){let t=this.m_scl[2],r="T"===t||"F"===t||0!==e.calculateLength2D();this.m_matrix[2]=+!!r}if(this.m_performPredicates[5]){let t=(0,a.A)(e);this.m_matrix[5]=t?0:-1}this.m_matrix[6]=0}pointPointDisjointPredicates_(){this.m_matrix[0]=-1,this.m_matrix[2]=0,this.m_matrix[6]=0}areaAreaPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorArea_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorAreaBoundaryArea_(e,t,1);let r=this.isPredicateKnown_(1);s&&=r}if(this.m_performPredicates[2]){this.interiorAreaExteriorArea_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.interiorAreaBoundaryArea_(e,r,3);let t=this.isPredicateKnown_(3);s&&=t}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryArea_(e,t,r);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorArea_(e,t,r,5);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.interiorAreaExteriorArea_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}if(this.m_performPredicates[7]){this.boundaryAreaExteriorArea_(e,r,t,7);let i=this.isPredicateKnown_(7);s&&=i}return s}areaLinePredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorLine_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(1);s&&=i}if(this.m_performPredicates[2]){this.interiorAreaExteriorLine_(e,t,r);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.boundaryAreaInteriorLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[4]){this.boundaryAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorLine_(e,t,r);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.exteriorAreaInteriorLine_(e,t);let r=this.isPredicateKnown_(6);s&&=r}if(this.m_performPredicates[7]){this.exteriorAreaBoundaryLine_(e,t,r,this.m_clusterIndexB);let i=this.isPredicateKnown_(7);s&&=i}return s}lineLinePredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[1]){this.interiorLineBoundaryLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB,1);let i=this.isPredicateKnown_(1);s&&=i}if(this.m_performPredicates[2]){this.interiorLineExteriorLine_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.interiorLineBoundaryLine_(e,r,t,this.m_clusterIndexB,this.m_clusterIndexA,3);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[4]){this.boundaryLineBoundaryLine_(e,t,r,this.m_clusterIndexA,this.m_clusterIndexB);let i=this.isPredicateKnown_(4);s&&=i}if(this.m_performPredicates[5]){this.boundaryLineExteriorLine_(e,t,r,this.m_clusterIndexA,5);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.interiorLineExteriorLine_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}if(this.m_performPredicates[7]){this.boundaryLineExteriorLine_(e,r,t,this.m_clusterIndexB,7);let i=this.isPredicateKnown_(7);s&&=i}return s}areaPointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorAreaInteriorPoint_(e,t);let r=this.isPredicateKnown_(0);s&&=r}if(this.m_performPredicates[2]){this.interiorAreaExteriorPoint_(e,t);let r=this.isPredicateKnown_(2);s&&=r}if(this.m_performPredicates[3]){this.boundaryAreaInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[5]){this.boundaryAreaExteriorPoint_(e,t);let r=this.isPredicateKnown_(5);s&&=r}if(this.m_performPredicates[6]){this.exteriorAreaInteriorPoint_(e,t);let r=this.isPredicateKnown_(6);s&&=r}return s}linePointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorLineInteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[2]){this.interiorLineExteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[3]){this.boundaryLineInteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(3);s&&=i}if(this.m_performPredicates[5]){this.boundaryLineExteriorPoint_(e,t,r,this.m_clusterIndexA);let i=this.isPredicateKnown_(5);s&&=i}if(this.m_performPredicates[6]){this.exteriorLineInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(6);s&&=i}return s}pointPointPredicates_(e,t,r){let s=!0;if(this.m_performPredicates[0]){this.interiorPointInteriorPoint_(e,t,r);let i=this.isPredicateKnown_(0);s&&=i}if(this.m_performPredicates[2]){this.interiorPointExteriorPoint_(e,t,r,2);let i=this.isPredicateKnown_(2);s&&=i}if(this.m_performPredicates[6]){this.interiorPointExteriorPoint_(e,r,t,6);let i=this.isPredicateKnown_(6);s&&=i}return s}interiorAreaInteriorArea_(e,t,r){if(2===this.m_matrix[0])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!==(s&t)&&0!==(s&r)&&(this.m_matrix[0]=2)}interiorAreaBoundaryArea_(e,t,r){if(1===this.m_matrix[r])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e),i=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!==(s&t)&&0!==(i&t)&&(this.m_matrix[r]=1)}interiorAreaExteriorArea_(e,t,r,s){if(2===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e);0!==(i&t)&&0===(i&r)&&(this.m_matrix[s]=2)}boundaryAreaBoundaryArea_(e,t,r){if(1===this.m_matrix[4])return;let s=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(s&t)||0===(s&r)){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let s=this.m_topoGraph.getHalfEdgeTo(e),i=this.m_topoGraph.getClusterParentage(s);if(0!==(i&t)&&0!==(i&r))return void(this.m_matrix[4]=0)}}else this.m_matrix[4]=1}boundaryAreaExteriorArea_(e,t,r,s){if(1===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeFaceParentage(e),n=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0===(i&r)&&0===(n&r)&&(this.m_matrix[s]=1)}interiorAreaInteriorLine_(e,t,r){if(1===this.m_matrix[0])return;let s=this.m_topoGraph.getHalfEdgeFaceParentage(e),i=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0!==(s&t)&&0!==(i&t)&&(this.m_matrix[0]=1)}interiorAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[1]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0===(n&t)&&0!==(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[1]=0)}}}interiorAreaExteriorLine_(e,t,r){2!==this.m_matrix[2]&&0!==(this.m_topoGraph.getHalfEdgeParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorLine_(e,t,r,s){if(1===this.m_matrix[3])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(i&t)||0===(i&r)){if(0!==this.m_matrix[3]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0!==(n&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2==0)return void(this.m_matrix[3]=0)}}}else this.m_matrix[3]=1}boundaryAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0!==(n&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[4]=0)}}}boundaryAreaExteriorLine_(e,t,r){if(1===this.m_matrix[5])return;let s=this.m_topoGraph.getHalfEdgeParentage(e);0!==(s&t)&&0===(s&r)&&(this.m_matrix[5]=1)}exteriorAreaInteriorLine_(e,t){if(1===this.m_matrix[6])return;let r=this.m_topoGraph.getHalfEdgeFaceParentage(e),s=this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e));0===(r&t)&&0===(s&t)&&(this.m_matrix[6]=1)}exteriorAreaBoundaryLine_(e,t,r,s){if(0!==this.m_matrix[7]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let i=this.m_topoGraph.getHalfEdgeTo(e),n=this.m_topoGraph.getClusterParentage(i);if(0===(n&t)&&0===(this.m_topoGraph.getHalfEdgeFaceParentage(e)&t)){let e=this.m_topoGraph.getClusterUserIndex(i,s);if(0!==(n&r)&&e%2!=0)return void(this.m_matrix[7]=0)}}}interiorLineInteriorLine_(e,t,r,s,i){if(1===this.m_matrix[0])return;let n=this.m_topoGraph.getHalfEdgeParentage(e);if(0===(n&t)||0===(n&r)){if(0!==this.m_matrix[0]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!==(a&t)&&0!==(a&r)){let e=this.m_topoGraph.getClusterUserIndex(n,s),t=this.m_topoGraph.getClusterUserIndex(n,i);if(e%2==0&&t%2==0)return void(this.m_matrix[0]=0)}}}else this.m_matrix[0]=1}interiorLineBoundaryLine_(e,t,r,s,i,n){if(0!==this.m_matrix[n]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let a=this.m_topoGraph.getHalfEdgeTo(e),o=this.m_topoGraph.getClusterParentage(a);if(0!==(o&t)&&0!==(o&r)){let e=this.m_topoGraph.getClusterUserIndex(a,s),t=this.m_topoGraph.getClusterUserIndex(a,i);if(e%2==0&&t%2!=0)return void(this.m_matrix[n]=0)}}}interiorLineExteriorLine_(e,t,r,s){if(1===this.m_matrix[s])return;let i=this.m_topoGraph.getHalfEdgeParentage(e);0!==(i&t)&&0===(i&r)&&(this.m_matrix[s]=1)}boundaryLineBoundaryLine_(e,t,r,s,i){if(0!==this.m_matrix[4]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let n=this.m_topoGraph.getHalfEdgeTo(e),a=this.m_topoGraph.getClusterParentage(n);if(0!==(a&t)&&0!==(a&r)){let e=this.m_topoGraph.getClusterUserIndex(n,s),t=this.m_topoGraph.getClusterUserIndex(n,i);if(e%2!=0&&t%2!=0)return void(this.m_matrix[4]=0)}}}boundaryLineExteriorLine_(e,t,r,s,i){if(0!==this.m_matrix[i]&&1!==this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgePrev(this.m_topoGraph.getHalfEdgeTwin(e)),this.m_visitedIndex)){let t=this.m_topoGraph.getHalfEdgeTo(e);if(0===(this.m_topoGraph.getClusterParentage(t)&r)&&this.m_topoGraph.getClusterUserIndex(t,s)%2!=0)return void(this.m_matrix[i]=0)}}interiorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[0]&&0===(this.m_topoGraph.getClusterParentage(e)&t)){let r=this.m_topoGraph.getClusterChain(e);if(0!==(this.m_topoGraph.getChainParentage(r)&t))return void(this.m_matrix[0]=0)}}interiorAreaExteriorPoint_(e,t){2!==this.m_matrix[2]&&0!==(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[2]=2)}boundaryAreaInteriorPoint_(e,t,r){if(0===this.m_matrix[3])return;let s=this.m_topoGraph.getClusterParentage(e);0===(s&t)||0===(s&r)||(this.m_matrix[3]=0)}boundaryAreaExteriorPoint_(e,t){1!==this.m_matrix[5]&&0!==(this.m_topoGraph.getClusterParentage(e)&t)&&(this.m_matrix[5]=1)}exteriorAreaInteriorPoint_(e,t){if(0!==this.m_matrix[6]&&0===(this.m_topoGraph.getClusterParentage(e)&t)){let r=this.m_topoGraph.getClusterChain(e);if(0===(this.m_topoGraph.getChainParentage(r)&t))return void(this.m_matrix[6]=0)}}interiorLineInteriorPoint_(e,t,r,s){if(0===this.m_matrix[0])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0===(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2!=0||(this.m_matrix[0]=0)}interiorLineExteriorPoint_(e,t,r,s){if(1!==this.m_matrix[2]){if(-1!==this.m_topoGraph.getClusterHalfEdge(e))return void(this.m_matrix[2]=1);if(0!==this.m_matrix[2]&&0===(this.m_topoGraph.getClusterParentage(e)&r))return void(this.m_matrix[2]=0)}}boundaryLineInteriorPoint_(e,t,r,s){if(0===this.m_matrix[3])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0===(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2==0||(this.m_matrix[3]=0)}boundaryLineExteriorPoint_(e,t,r,s){if(0===this.m_matrix[5])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0!==(i&r)||this.m_topoGraph.getClusterUserIndex(e,s)%2==0||(this.m_matrix[5]=0)}exteriorLineInteriorPoint_(e,t,r){if(0===this.m_matrix[6])return;let s=this.m_topoGraph.getClusterParentage(e);0!==(s&t)||0===(s&r)||(this.m_matrix[6]=0)}interiorPointInteriorPoint_(e,t,r){if(0===this.m_matrix[0])return;let s=this.m_topoGraph.getClusterParentage(e);0===(s&t)||0===(s&r)||(this.m_matrix[0]=0)}interiorPointExteriorPoint_(e,t,r,s){if(0===this.m_matrix[s])return;let i=this.m_topoGraph.getClusterParentage(e);0===(i&t)||0!==(i&r)||(this.m_matrix[s]=0)}computeMatrixTopoGraphHalfEdges_(e,t){let r=!1,s=this.m_topoGraph.getGeometryID(e),i=this.m_topoGraph.getGeometryID(t);this.m_visitedIndex=this.m_topoGraph.createUserIndexForHalfEdges();for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t){if(null!==this.m_predicatesCluster&&(r=this.m_predicatesCluster(e,s,i),r))break;continue}let n=t;do{let e=n;if(1!==this.m_topoGraph.getHalfEdgeUserIndex(e,this.m_visitedIndex))do{if(r=this.m_predicatesHalfEdge(e,s,i),r)break;this.m_topoGraph.setHalfEdgeUserIndex(e,this.m_visitedIndex,1),e=this.m_topoGraph.getHalfEdgeNext(e)}while(e!==n&&!r);if(r)break;n=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(e))}while(n!==t);if(r)break}r||this.setRemainingPredicatesToFalse_(),this.m_topoGraph.deleteUserIndexForHalfEdges(this.m_visitedIndex)}computeMatrixTopoGraphClusters_(e,t){let r=!1,s=this.m_topoGraph.getGeometryID(e),i=this.m_topoGraph.getGeometryID(t);for(let e=this.m_topoGraph.getFirstCluster();-1!==e&&(r=this.m_predicatesCluster(e,s,i),!r);e=this.m_topoGraph.getNextCluster(e));r||this.setRemainingPredicatesToFalse_()}setEditShape_(e,t){this.m_topoGraph.setEditShape(e,t)}setEditShapeCrackAndCluster_(e,t,r){let s=0;if(e.hasCurves()){let i=new dr,n=e.getEnvelope2D(r),a=ur(t.total(),n);s=pr(a,0),lr(e,a,t.total(),0,i,null,r),i.clearStitcher(e)}fr(e,t.add(s),r,!1,!1),e.filterClosePoints(0,!0,!0,!1,-1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,!1,-1,r);this.setEditShape_(e,r)}}function je(e){let t=e[1],r=e[2],s=e[5];e[1]=e[3],e[2]=e[6],e[5]=e[7],e[3]=t,e[6]=r,e[7]=s}function Ze(e,t,r){let s=e.getGeometryType();if((0,i.h)(s)){let t=new a.a({vd:e.getDescription()});return t.addSegment(e,!0),t}if(s===i.G.enumEnvelope){let r=e,s=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),s.height()<=t&&s.width()<=t){let t=new o.P({vd:e.getDescription()});return r.getCenter(t),t}if(s.height()<=t||s.width()<=t){let t=new a.a({vd:e.getDescription()}),s=new o.P;return r.queryCornerByVal(0,s),t.startPathPoint(s),r.queryCornerByVal(2,s),t.lineToPoint(s),t}let i=new a.P({vd:e.getDescription()});return i.addEnvelope(r,!1),i}return e}function Ke(e){return`${e[0]}${e[3]}${e[6]}${e[1]}${e[4]}${e[7]}${e[2]}${e[5]}${e[8]}`}class Qe{m_multiVertexImplA;m_multiVertexImplB;m_queryType;m_bPaths;m_bQuadTree;m_bDone=!1;m_bSwapElements;m_tolerance=0;m_pathIndex;m_pointIndex;m_elementHandle=-1;m_query=n.Envelope2D.constructEmpty();m_envInter=n.Envelope2D.constructEmpty();m_quadTree=null;m_qtIter;m_segIter;m_function;m_intersector=null;nullFunc(){return(0,i.d)("should not be called"),!1}constructor(e,t,r,s=!1){this.m_function=this.nullFunc;let a=e.getAccelerators(),l=null;null!=a&&(l=s?a.getQuadTreeForPaths():a.getQuadTree());let m=t.getAccelerators(),h=null;if(null!=m&&(h=s?m.getQuadTreeForPaths():m.getQuadTree()),null===l&&null===h&&!s){let s=e.getPointCount(),a=t.getPointCount();if(s>10&&a>10){let m=n.Envelope2D.constructEmpty(),g=n.Envelope2D.constructEmpty(),u=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(m),t.queryLooseEnvelope(g),m.inflateCoords(r,r),g.inflateCoords(r,r),u.setCoords({env2D:m}),u.intersect(g),s>=a?l=(0,i.j)(e.getGeometryType())?(0,o.u)(e,u):(0,o.v)(e,u):h=(0,i.j)(t.getGeometryType())?(0,o.u)(t,u):(0,o.v)(t,u)}}this.construct_(e,l,t,h,r,s)}next(){if(this.m_bQuadTree){if(this.m_bDone)return!1;for(;this.m_function(););return!this.m_bDone}return!!this.m_intersector&&this.m_intersector.next()}getRedElement(){return this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElement(this.m_elementHandle):(0,i.j)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_bSwapElements?this.m_intersector.getBlueElement(this.m_intersector.getHandleB()):this.m_intersector.getRedElement(this.m_intersector.getHandleA())}getBlueElement(){return this.m_bQuadTree?this.m_bSwapElements?(0,i.j)(this.m_queryType)?this.m_bPaths?this.m_pathIndex:this.m_segIter.getStartPointIndex():this.m_pointIndex:this.m_quadTree.getElement(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedElement(this.m_intersector.getHandleA()):this.m_intersector.getBlueElement(this.m_intersector.getHandleB())}getRedEnvelope(){return this.m_bPaths||(0,i.q)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_query:this.m_bSwapElements?this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB()):this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA())}getBlueEnvelope(){return this.m_bPaths||(0,i.q)(""),this.m_bQuadTree?this.m_bSwapElements?this.m_query:this.m_quadTree.getElementExtent(this.m_elementHandle):this.m_bSwapElements?this.m_intersector.getRedEnvelope(this.m_intersector.getHandleA()):this.m_intersector.getBlueEnvelope(this.m_intersector.getHandleB())}construct_(e,t,r,s,a,l){let m=n.Envelope2D.constructEmpty(),h=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(m),r.queryLooseEnvelope(h),m.inflateCoords(a,a),h.inflateCoords(a,a),this.m_envInter.setCoords({env2D:m}),this.m_envInter.intersect(h),this.m_multiVertexImplA=e,this.m_multiVertexImplB=r;let g=e.getGeometryType(),u=r.getGeometryType();this.m_bPaths=l,this.m_pathIndex=-1,this.m_pointIndex=-1,this.m_bSwapElements=!1,this.m_queryType=i.G.enumUnknown,this.m_bQuadTree=!1,null!==t&&(this.m_bDone=!1,this.m_tolerance=a,this.m_quadTree=t,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!0,(0,i.j)(u)?(this.m_queryType=u,this.m_function=this.nextPath_,l?this.m_pathIndex=r.getPathCount():this.m_segIter=r.querySegmentIterator()):(this.m_queryType=u,this.m_function=this.nextPoint_,this.m_pointIndex=r.getPointCount())),this.m_bQuadTree||null!==s&&(this.m_bDone=!1,this.m_tolerance=a,this.m_quadTree=s,this.m_qtIter=this.m_quadTree.getIteratorForQT(),this.m_bQuadTree=!0,this.m_bSwapElements=!1,(0,i.j)(g)?(this.m_queryType=g,this.m_function=this.nextPath_,l?this.m_pathIndex=e.getPathCount():this.m_segIter=e.querySegmentIterator()):(this.m_queryType=g,this.m_function=this.nextPoint_,this.m_pointIndex=e.getPointCount())),this.m_bQuadTree||(l&&(0,i.j)(g)&&(0,i.j)(u)?this.m_intersector=(0,o.z)(e,r,a):(0,i.j)(g)&&(0,i.j)(u)?(this.m_intersector=(0,o.w)(e,r,a),this.m_bSwapElements=!1):(0,i.j)(g)&&!(0,i.j)(u)?(this.m_intersector=(0,o.x)(e,r,a),this.m_bSwapElements=!1):!(0,i.j)(g)&&(0,i.j)(u)?(this.m_intersector=(0,o.x)(r,e,a),this.m_bSwapElements=!0):(this.m_intersector=(0,o.y)(e,r,a),this.m_bSwapElements=!1))}nextPath_(){return this.m_bPaths?-1===--this.m_pathIndex?(this.m_bDone=!0,!1):(this.m_bSwapElements?this.m_multiVertexImplB.queryPathEnvelope(this.m_pathIndex,this.m_query):this.m_multiVertexImplA.queryPathEnvelope(this.m_pathIndex,this.m_query),this.m_qtIter.resetIterator(this.m_query,this.m_tolerance),this.m_function=this.iterate_,!0):this.m_segIter.nextPath()?(this.m_function=this.nextSegment_,!0):(this.m_bDone=!0,!1)}nextSegment_(){if(!this.m_segIter.hasNextSegment())return this.m_function=this.nextPath_,!0;let e=this.m_segIter.nextSegment(),t=new n.Envelope2D;return e.queryLooseEnvelope(t),!t.isIntersecting(this.m_envInter)||(this.m_qtIter.resetIterator(e,this.m_tolerance),this.m_function=this.iterate_,!0)}nextPoint_(){if(-1===--this.m_pointIndex)return this.m_bDone=!0,!1;let e=new l.P;if(this.m_bSwapElements){let t=this.m_multiVertexImplB.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}else{let t=this.m_multiVertexImplA.getXY(this.m_pointIndex);e.setCoordsPoint2D(t)}return!this.m_envInter.contains(e)||(this.m_qtIter.resetIterator(n.Envelope2D.construct(e.x,e.y,e.x,e.y),this.m_tolerance),this.m_function=this.iterate_,!0)}iterate_(){return this.m_elementHandle=this.m_qtIter.next(),-1===this.m_elementHandle&&((0,i.j)(this.m_queryType)?(this.m_function=this.m_bPaths?this.nextPath_:this.nextSegment_,!0):(this.m_function=this.nextPoint_,!0))}}function Je(e){return 2===e?1:1===e?2:128===e?64:64===e?128:e}function $e(e,t,r){let s;if(e instanceof la||null===e){let i=n.Envelope2D.constructEmpty();i.setCoords({env2D:t}),i.mergeEnvelope2D(r),s=(0,o.d)(e,i,!1)}else s=e;return s}function et(e,t,r,s,m){if(e.isEmpty()||t.isEmpty())return 4===s;(0,i.t)(e),(0,i.t)(t);let g=e.getGeometryType(),u=t.getGeometryType();if(g===i.G.enumEnvelope){if(u===i.G.enumEnvelope)return function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return 4===s;let i=n.Envelope2D.constructEmpty();e.queryEnvelope(i);let a=n.Envelope2D.constructEmpty();t.queryEnvelope(a);let o=$e(r,i,a);switch(s){case 4:return rt(i,a,o);case 2:return Dt(a,i,o,!1);case 128:return Dt(a,i,o,!0);case 1:return Dt(i,a,o,!1);case 64:return Dt(i,a,o,!0);case 3:return Nt(i,a,o);case 8:return function(e,t,r){if(e.height()<=r||e.width()<=r||t.height()<=r||t.width()<=r)return!1;let s=new n.Envelope2D;return s.setCoords({env2D:e}),s.inflateCoords(-r,-r),s.intersect(t),!(!s.isEmpty()&&s.height()>r&&s.width()>r||(s.setCoords({env2D:e}),s.inflateCoords(r,r),s.intersect(t),s.isEmpty()))}(i,a,o);case 32:return function(e,t,r){if(e.height()<=r||e.width()<=r||t.height()<=r||t.width()<=r||Ft(e,t,r)||Ft(t,e,r))return!1;let s=new n.Envelope2D;return s.setCoords({env2D:e}),s.inflateCoords(-r,-r),s.intersect(t),!s.isEmpty()&&(s.height()>r||s.width()>r)}(i,a,o);case 16:return!1}return!1}(e,t,r,s);if(u===i.G.enumPoint)return tt(t,e,r,Je(s))}else if(g===i.G.enumPoint){if(u===i.G.enumEnvelope)return tt(e,t,r,s);if(u===i.G.enumPoint)return function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return 4===s;let i,a=e.getXY(),m=t.getXY();if(r instanceof la||null===r){let e=n.Envelope2D.constructEmpty();e.setCoords({pt:a}),e.merge(m),i=(0,o.d)(r,e,!1)}else i=r;switch(s){case 4:return function(e,t,r){return l.P.sqrDistance(e,t)>r*r}(a,m,i);case 2:case 128:return Tt(m,a,i);case 1:case 64:return Tt(a,m,i);case 3:return bt(a,m,i)}return!1}(e,t,r,s)}let _=n.Envelope2D.constructEmpty();e.queryEnvelope(_);let p=n.Envelope2D.constructEmpty();t.queryEnvelope(p);let d=$e(r,_,p);if(rt(_,p,d))return 4===s;let c=!1,f=null,x=null,P=null,y=null;switch((0,i.h)(g)?(f=new a.a({vd:e.getDescription()}),f.addSegment(e,!0),P=f,g=i.G.enumPolyline):P=e,(0,i.h)(u)?(x=new a.a({vd:t.getDescription()}),x.addSegment(t,!0),y=x,u=i.G.enumPolyline):y=t,g!==i.G.enumEnvelope&&u!==i.G.enumEnvelope?(P.getDimension()<y.getDimension()||g===i.G.enumPoint&&u===i.G.enumMultiPoint)&&(s=Je(s)):g!==i.G.enumPolygon&&u!==i.G.enumEnvelope&&(s=Je(s)),g){case i.G.enumPolygon:switch(u){case i.G.enumPolygon:c=function(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t,0,!0),1===Vt(e,t,r,!0)}(e,t,r);case 2:return dt(t,e,r,i);case 128:return ct(t,e,r);case 1:return dt(e,t,r,i);case 64:return ct(e,t,r);case 3:return pt(e,t,r,i);case 8:return function(e,t,r){return st(e,t),zt(e,t,r,null)}(e,t,r);case 32:return function(e,t,r,s){return st(e,t),Wt(e,t,r,s)}(e,t,r,i)}return!1}(P,y,d,s,m);break;case i.G.enumPolyline:c=nt(P,y,d,s,m);break;case i.G.enumPoint:c=at(P,y,d,s);break;case i.G.enumMultiPoint:c=ot(P,y,d,s);break;case i.G.enumEnvelope:c=lt(P,y,d,s,m)}break;case i.G.enumPolyline:switch(u){case i.G.enumPolygon:c=nt(y,P,d,s,m);break;case i.G.enumPolyline:c=function(e,t,r,s,i){switch(s){case 4:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl();return!new Qe(s,i,r,!0).next()||!Ot(e,t,r)}(e,t,r);case 2:return Et(t,e,r,i);case 128:return St(t,e,r,i);case 1:return Et(e,t,r,i);case 64:return St(e,t,r,i);case 3:return function(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Nt(i,a,r)&&(st(e,t),!!Mt(e,t,r)||(e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"**F**FFF*",s,!1):qt(e,t,r,!1)))}(e,t,r,i);case 8:return function(e,t,r,s){st(e,t);let i=[],o=Yt(e,t,r,i);if(-2===o){let i,a,o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),o.inflateCoords(1e3*r,1e3*r),l.inflateCoords(1e3*r,1e3*r),m.setCoords({env2D:o}),m.intersect(l),e.getPointCount()>10){if(i=(0,h.c)(e,m,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(a=(0,h.c)(t,m,r,0,s),a.isEmpty())return!1}else a=t;return Me(i,a,r,"F********",s,!1)}if(0!==o)return!1;let l=new a.M;for(let e=0;e<i.length;e+=2){let t=i[e],r=i[e+1];l.addXY(t,r)}let m=e.getBoundary(),g=t.getBoundary();return m.addPoints(g,0,g.getPointCount()),!m.isEmpty()&&It(m,l,r)}(e,t,r,i);case 32:return function(e,t,r,s){st(e,t);let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();e.queryEnvelope(i),t.queryEnvelope(a);let o=At(i,a,r),l=At(a,i,r),m=e.hasNonLinearSegments(),g=t.hasNonLinearSegments(),u=Yt(e,t,r,null);if(-1===u)return!1;if(1===u){if(o&&l)return!0;if(!m&&!g)return o&&!l?!Bt(t,e,r,!1):l&&!o?!Bt(e,t,r,!1):!Bt(e,t,r,!1)&&!Bt(t,e,r,!1)}let _=n.Envelope2D.constructEmpty(),p=n.Envelope2D.constructEmpty(),d=n.Envelope2D.constructEmpty();_.setCoords({env2D:i}),_.inflateCoords(1e3*r,1e3*r),p.setCoords({env2D:a}),p.inflateCoords(1e3*r,1e3*r),d.setCoords({env2D:_}),d.intersect(p);let c,f,x="";if(x+="1*",o){if(t.getPointCount()>10){if(f=(0,h.c)(t,d,r,0,s),f.isEmpty())return!1}else f=t;x+="****"}else f=t,x+="T***";if(l){if(e.getPointCount()>10){if(c=(0,h.c)(e,d,r,0,s),c.isEmpty())return!1}else c=e;x+="***"}else c=e,x+="T**";return Me(c,f,r,x,s,!1)}(e,t,r,i);case 16:return function(e,t,r,s){st(e,t);let i=[],o=Yt(e,t,r,i);if(-2===o){let i,a,o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),o.inflateCoords(1e3*r,1e3*r),l.inflateCoords(1e3*r,1e3*r),m.setCoords({env2D:o}),m.intersect(l),e.getPointCount()>10){if(i=(0,h.c)(e,m,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(a=(0,h.c)(t,m,r,0,s),a.isEmpty())return!1}else a=t;return Me(i,a,r,"0********",s,!1)}if(0!==o)return!1;let l=new a.M;for(let e=0;e<i.length;e+=2){let t=i[e],r=i[e+1];l.addXY(t,r)}let m=e.getBoundary(),g=t.getBoundary();return m.addPoints(g,0,g.getPointCount()),!!m.isEmpty()||!It(m,l,r)}(e,t,r,i)}return!1}(P,y,d,s,m);break;case i.G.enumPoint:c=mt(P,y,d,s);break;case i.G.enumMultiPoint:c=ht(P,y,d,s);break;case i.G.enumEnvelope:c=gt(P,y,d,s,m)}break;case i.G.enumPoint:switch(u){case i.G.enumPolygon:c=at(y,P,d,s);break;case i.G.enumPolyline:c=mt(y,P,d,s);break;case i.G.enumMultiPoint:c=ut(y,P,d,s)}break;case i.G.enumMultiPoint:switch(u){case i.G.enumPolygon:c=ot(y,P,d,s);break;case i.G.enumPolyline:c=ht(y,P,d,s);break;case i.G.enumMultiPoint:c=function(e,t,r,s){switch(s){case 4:return function(e,t,r){let s=e,i=t,n=new Qe(s,i,r,!1),a=r*r,o=new l.P,m=new l.P;for(;n.next();){let e=n.getRedElement(),t=n.getBlueElement();if(s.queryXY(e,o),i.queryXY(t,m),l.P.sqrDistance(o,m)<=a)return!1}return!0}(e,t,r);case 2:case 128:return It(t,e,r);case 1:case 64:return It(e,t,r);case 3:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!!Nt(s,i,r)&&(!!function(e,t,r){if(e.getPointCount()!==t.getPointCount())return!1;let s=new l.P,i=new l.P,n=!0,a=r*r;for(let r=0;r<e.getPointCount();r++)if(e.queryXY(r,s),t.queryXY(r,i),l.P.sqrDistance(s,i)>a){n=!1;break}return!!n}(e,t,r)||Ut(e,t,r,!1,!0,!1))}(e,t,r);case 32:return function(e,t,r){return Ut(e,t,r,!1,!1,!0)}(e,t,r)}return!1}(P,y,d,s);break;case i.G.enumPoint:c=ut(P,y,d,s);break;case i.G.enumEnvelope:c=_t(P,y,d,s)}break;case i.G.enumEnvelope:switch(u){case i.G.enumPolygon:c=lt(y,P,d,s,m);break;case i.G.enumPolyline:c=gt(y,P,d,s,m);break;case i.G.enumMultiPoint:c=_t(y,P,d,s)}}return c}function tt(e,t,r,s,i){if(e.isEmpty()||t.isEmpty())return 4===s;let a=e.getXY(),l=n.Envelope2D.constructEmpty();t.queryEnvelope(l);let m=function(e,t,r){let s;if(e instanceof la||null===e){let i=n.Envelope2D.constructEmpty();i.setCoords({pt:t}),i.mergeEnvelope2D(r),s=(0,o.d)(e,i,!1)}else s=e;return s}(r,a,l);switch(s){case 4:return it(a,l,m);case 2:case 128:return function(e,t,r){if(t.height()<=r||t.width()<=r)return!1;let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(-r,-r),s.containsExclusive(e)}(a,l,m);case 1:case 64:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D;return s.setCoords({pt:e}),Nt(s,t,r)}(a,l,m);case 8:return function(e,t,r){if(t.height()<=r||t.width()<=r)return!1;let s=new n.Envelope2D,i=new n.Envelope2D;return s.setCoords({env2D:t}),s.inflateCoords(r,r),!(!s.contains(e)||(i.setCoords({env2D:t}),i.inflateCoords(-r,-r),i.containsExclusive(e)))}(a,l,m)}return!1}function rt(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),!e.isIntersecting(s)}function st(e,t,r,s=!1){let n=e.getGeometryType(),a=t.getGeometryType();if((0,i.i)(n)){let t=e.getImpl().getAccelerators();if(null!==t){let e=t.getRasterizedGeometry();(0,i.g)(null===e)}}if((0,i.i)(a)){let e=t.getImpl().getAccelerators();if(null!==e){let t=e.getRasterizedGeometry();(0,i.g)(null===t)}}return 0}function it(e,t,r,s){let i=n.Envelope2D.constructEmpty();return i.setCoords({env2D:t}),i.inflateCoords(r,r),!i.contains(e)}function nt(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t,0,!0),1===Vt(e,t,r,!0)}(e,t,r);case 1:return function(e,t,r,s){let i=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(l),!!Ft(i,l,r)&&(st(e,t),function(e,t,r,s){let i=[!1],l=kt(e,t,r,i);if(i[0])return l;let m,g=n.Envelope2D.constructEmpty();if(t.queryEnvelope(g),g.inflateCoords(1e3*r,1e3*r),e.getPointCount()>10){if(m=(0,h.c)(e,g,r,0,s),m.isEmpty())return!1}else m=e;return function(e,t,r,s){let i=new We;i.resetMatrix_(),i.setPredicates_("T*****F**"),i.setAreaLinePredicates_();let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();e.queryEnvelope(l),t.queryEnvelope(m);let h=!1;if(rt(l,m,r)&&(i.areaLineDisjointPredicates_(e,t),h=!0),h||st(e,t),h)return Le(i.m_matrix,i.m_scl);let g=new a.E,u=g.addGeometry(e),_=g.addGeometry(t);return i.setEditShapeCrackAndCluster_(g,new o.C(r,0),s),0!==g.getPointCount(u)&&(i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape(),Le(i.m_matrix,i.m_scl))}(m,t,r,s)}(e,t,r,s))}(e,t,r,i);case 64:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!!Ft(s,i,r)&&(st(e,t),2===Vt(e,t,r,!1))}(e,t,r);case 8:return ft(e,t,r,i);case 16:return function(e,t,r){return st(e,t),function(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),o=i.querySegmentIterator(),m=a.querySegmentIterator(),g=(0,l.c)(2,NaN),u=(0,l.c)(2,NaN),_=new Qe(i,a,r),p=!1;for(;_.next();){let e=_.getRedElement(),t=_.getBlueElement();o.resetToVertex(e,-1),m.resetToVertex(t,-1);let s=o.nextSegment(),i=m.nextSegment(),n=0;if(Qt(s,i)?!p&&i.isIntersecting(s,r)&&(p=!0):n=i.intersect(s,null,u,g,r),2===n)p=!0;else if(n){let e=g[0],t=u[0];if(e>0&&e<1&&t>0&&t<1)return!0;p=!0}}if(!p)return!1;let d=n.Envelope2D.constructEmpty(),c=n.Envelope2D.constructEmpty(),f=n.Envelope2D.constructEmpty(),x=n.Envelope2D.constructEmpty(),P=n.Envelope2D.constructEmpty();if(e.queryEnvelope(d),t.queryEnvelope(c),At(c,d,r)){let i,n;if(f.setCoords({env2D:d}),f.inflateCoords(1e3*r,1e3*r),x.setCoords({env2D:c}),x.inflateCoords(1e3*r,1e3*r),P.setCoords({env2D:f}),P.intersect(x),e.getPointCount()>10){if(i=(0,h.c)(e,P,r,0,s),i.isEmpty())return!1}else i=e;if(t.getPointCount()>10){if(n=(0,h.c)(t,P,r,0,s),n.isEmpty())return!1}else n=t;return Me(i,n,r,"T********",s,!1)}return Me(e,t,r,"T*****T**",s,!1)}(e,t,r,null)}(e,t,r)}return!1}function at(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return 0===er(e,t,r)}(e,t,r);case 1:case 64:return function(e,t,r){return function(e,t,r){return 1===tr(e,t,r)}(e,t.getXY(),r)}(e,t,r);case 8:return function(e,t,r){return function(e,t,r){return 2===tr(e,t,r)}(e,t.getXY(),r)}(e,t,r)}return!1}function ot(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),1===function(e,t,r){let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s),s.inflateCoords(r,r);let i=new l.P,o=e.getImpl(),m=new a.P,h=e,g=!1,u=!1,_=!1;for(let n=0;n<t.getPointCount();n++){if(t.queryXY(n,i),s.contains(i)){let e=tr(h,i,r);if(1===e)return u=!0,4;if(2===e)return 4;_=!0}else _=!0;g||=(!Te(e,t.getPointCount()-1)||null!==o.getAccelerators()&&null!=o.getAccelerators().getQuadTree()?h=e:(e.copyTo(m),m.getImpl().buildQuadTreeAccelerator(1),h=m),!0)}return u?_?4:2:1}(e,t,r)}(e,t,r);case 1:return xt(e,t,r,!1);case 64:return xt(e,t,r,!0);case 8:return function(e,t,r){st(e,t);let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s),s.inflateCoords(r,r);let i=new l.P,o=!1,m=e.getImpl(),h=new a.P,g=e,u=!1;for(let n=0;n<t.getPointCount();n++){if(t.queryXY(n,i),s.contains(i)){let e=tr(g,i,r);if(2===e)o=!0;else if(1===e)return!1}u||=(!Te(e,t.getPointCount()-1)||null!==m.getAccelerators()&&null!==m.getAccelerators().getQuadTree()?g=e:(e.copyTo(h),h.getImpl().buildQuadTreeAccelerator(1),g=h),!0)}return!!o}(e,t,r);case 16:return function(e,t,r){st(e,t);let s=new n.Envelope2D,i=new n.Envelope2D,o=new n.Envelope2D;e.queryEnvelope(s),t.queryEnvelope(o),i.setCoords({env2D:s}),i.inflateCoords(r,r);let m=!1,h=!1,g=new l.P,u=e.getImpl(),_=new a.P,p=e,d=!1;for(let s=0;s<t.getPointCount();s++){if(t.queryXY(s,g),i.contains(g)){let e=tr(p,g,r);0===e?h=!0:1===e&&(m=!0)}else h=!0;if(m&&h)return!0;d||=(!Te(e,t.getPointCount()-1)||null!==u.getAccelerators()&&null!==u.getAccelerators().getQuadTree()?p=e:(e.copyTo(_),_.getImpl().buildQuadTreeAccelerator(1),p=_),!0)}return!1}(e,t,r)}return!1}function lt(e,t,r,s,i){if(function(e,t,r){st(e,t);let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();return e.queryEnvelope(s),t.queryEnvelope(i),!Ft(i,s,r)&&0===tr(e,i.getLowerLeft(),0)&&!i.contains(e.getXY(0))&&!Lt(e,i,r)}(e,t,r))return 4===s;if(4===s)return!1;switch(s){case 2:return Pt(e,t,r,!1);case 128:return Pt(e,t,r,!0);case 1:return yt(e,t,r,!1,i);case 64:return yt(e,t,r,!0,i);case 3:return function(e,t,r,s){let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),!Nt(i,o,r))return!1;let l=new a.P;return l.addEnvelope(t,!1),pt(e,l,r,s)}(e,t,r,i);case 8:return function(e,t,r,s){st(e,t);let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),Ft(o,i,r)||o.height()<=r||o.width()<=r)return!1;let l=new a.P;return l.addEnvelope(t,!1),zt(e,l,r,s)}(e,t,r,i);case 32:return function(e,t,r,s){st(e,t);let i=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(i),t.queryEnvelope(o),Ft(o,i,r)||o.height()<=r||o.width()<=r)return!1;let l=new a.P;return l.addEnvelope(t,!1),Wt(e,l,r,s)}(e,t,r,i);case 16:return!1}return!1}function mt(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),!Rt(e,t.getXY(),r)}(e,t,r);case 1:case 64:return function(e,t,r){return st(e,t),function(e,t,r){return Rt(e,t,r)&&!Kt(e,t,r)}(e,t.getXY(),r)}(e,t,r);case 8:return function(e,t,r){return st(e,t),Kt(e,t.getXY(),r)}(e,t,r)}return!1}function ht(e,t,r,s,i){switch(s){case 4:return function(e,t,r){return st(e,t),!Xt(e,t,r,!1)}(e,t,r);case 1:case 64:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),t.queryEnvelope(i),!Ft(s,i,r))return!1;st(e,t);let a=Xt(e,t,r,!0);if(!a)return a;let o=e.getBoundary();return o.isEmpty()?a:!It(o,t,r)}(e,t,r);case 8:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl(),n=new a.M,o=new Qe(s,i,r,!1),l=s.querySegmentIterator(),m=!1;for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();l.resetToVertex(e,-1);let s=l.nextSegment(),a=i.getXY(t);s.isIntersectingPoint(a,r)&&(m=!0,n.addPoint2D(a))}if(!m)return!1;let h=e.getBoundary();return!h.isEmpty()&&It(h,n,r)}(e,t,r);case 16:return function(e,t,r){st(e,t);let s=e.getImpl(),i=t.getImpl(),n=i.getPointCount(),o=(0,l.c)(n,!1),m=new Qe(s,i,r,!1),h=s.querySegmentIterator(),g=!1;for(;m.next();){let e=m.getRedElement(),t=m.getBlueElement();h.resetToVertex(e,-1);let s=h.nextSegment(),n=i.getXY(t);s.isIntersectingPoint(n,r)&&(g=!0,o[t]=!0)}if(!g)return!1;let u=!1;for(let e=0;e<n;e++)if(!o[e]){u=!0;break}if(!u)return!1;let _=e.getBoundary();if(_.isEmpty())return!0;let p=new a.M;for(let e=0;e<n;e++)o[e]&&p.addPoint2D(i.getXY(e));return!It(_,p,r)}(e,t,r)}return!1}function gt(e,t,r,s,o){if(function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();e.queryEnvelope(s),t.queryEnvelope(i);let a=function(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:e}),s.inflateCoords(r,r),s.containsEnvelope(t)?1073741824:s.isIntersecting(t)?e.isIntersecting(t)?e.xmin<t.xmin&&t.xmax<e.xmax?t.ymin<e.ymin&&t.ymax>e.ymax?0:1073741824:e.ymin<t.ymin&&t.ymax<e.ymax?t.xmin<e.xmin&&t.xmax>e.xmax?0:1073741824:0:0:4}(i,s,r);return 0===a?!Lt(e,i,r):4===a}(e,t,r))return 4===s;if(4===s)return!1;switch(s){case 2:return Ct(e,t,r,!1);case 128:return Ct(e,t,r,!0);case 1:case 64:case 32:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;return e.queryEnvelope(s),t.queryEnvelope(i),!(i.height()>r&&i.width()>r)&&Nt(s,i,r)}(e,t,r);case 8:return function(e,t,r,s){let o=new n.Envelope2D,m=new n.Envelope2D;if(e.queryEnvelope(o),t.queryEnvelope(m),m.height()<=r||m.width()<=r)return!1;let h=new n.Envelope2D,g=new n.Envelope2D;if(h.setCoords({env2D:m}),g.setCoords({env2D:m}),h.inflateCoords(r,r),g.inflateCoords(-r,-r),g.containsEnvelope(o)||!o.isIntersecting(h))return!1;let u=e.getImpl().querySegmentIterator();u.stripAttributes();let _=e.getImpl().getAccelerators(),p=null,d=null;null!==_&&(p=_.getQuadTree(),null!==p&&(d=p.getIterator(m,r))),d||u.nextPath()||(0,i.d)("relational_operations");let c=!1,f=null,x=new l.P,P=new l.P,y=e.hasNonLinearSegments(),E=!1;for(;;){if(null!==d){let e=d.next();if(-1===e)break;u.resetToVertex(p.getElement(e),-1),f=u.nextSegment()}else{for(;!u.hasNextSegment()&&u.nextPath(););if(!u.hasNextSegment())break;f=u.nextSegment()}if(y&&f.getGeometryType()!==i.G.enumLine){let e=new n.Envelope2D;if(f.queryEnvelope(e),g.containsEnvelope(e))return!1;if(h.isIntersecting(e)){E=!0;break}}else{x.assign(f.getStartXY()),P.assign(f.getEndXY());let e=g.clipLine(x,P);if(0!==e)return!1;c||(e=h.clipLine(x,P),0!==e&&(c=!0))}}if(!E)return c;let S=new a.P;return S.addEnvelope(m,!1),ft(S,e,r,s)}(e,t,r,o);case 16:return function(e,t,r){let s=new n.Envelope2D,o=new n.Envelope2D;if(e.queryEnvelope(s),t.queryEnvelope(o),o.height()<=r||o.width()<=r)return!1;let m=new n.Envelope2D;if(m.setCoords({env2D:o}),m.inflateCoords(r,r),m.containsEnvelope(s))return!1;let h=new n.Envelope2D;if(h.setCoords({env2D:o}),h.inflateCoords(-r,-r),!h.isIntersecting(s))return!1;let g=e.getImpl().querySegmentIterator();g.stripAttributes();let u=e.getImpl().getAccelerators(),_=null,p=null;if(null!==u&&(_=u.getQuadTree(),null!==_&&(p=_.getIterator(o,r))),!p){let e=g.nextPath();(0,i.g)(e)}let d=!1,c=null,f=new l.P,x=new l.P,P=null,y=null,E=null,S=null;for(e.hasNonLinearSegments()&&(P=new a.L,y=new a.L,E=new a.L,S=new a.L,h.querySide(0,P),h.querySide(1,y),h.querySide(2,E),h.querySide(3,S));;){if(null!==p){let e=p.next();if(-1===e)break;g.resetToVertex(_.getElement(e),-1),c=g.nextSegment()}else{for(;!g.hasNextSegment()&&g.nextPath(););if(!g.hasNextSegment())break;c=g.nextSegment()}if(c.getGeometryType()===i.G.enumLine){if(f.assign(c.getStartXY()),x.assign(c.getEndXY()),0!==h.clipLine(f,x)){d=!0;break}}else{if(P.isIntersecting(c,r)){d=!0;break}if(y.isIntersecting(c,r)){d=!0;break}if(E.isIntersecting(c,r)){d=!0;break}if(S.isIntersecting(c,r)){d=!0;break}}}return d&&!0}(e,t,r)}return!1}function ut(e,t,r,s,i){switch(s){case 4:return Gt(e,t,r);case 2:case 128:return function(e,t,r){return vt(e,t,r)}(e,t,r);case 1:case 64:return function(e,t,r){return!Gt(e,t,r)}(e,t,r);case 3:return vt(e,t,r)}return!1}function _t(e,t,r,s,i){switch(s){case 4:return function(e,t,r){let s=n.Envelope2D.constructEmpty(),i=n.Envelope2D.constructEmpty();if(e.queryEnvelope(s),t.queryEnvelope(i),Ft(i,s,r))return!1;let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:i}),a.inflateCoords(r,r);let o=new l.P;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,o),a.contains(o))return!1;return!0}(e,t,r);case 2:return wt(e,t,r,!1);case 128:return wt(e,t,r,!0);case 1:case 64:return!1;case 3:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;return e.queryEnvelope(s),t.queryEnvelope(i),!(i.height()>r||i.width()>r)&&Nt(s,i,r)}(e,t,r);case 8:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D,a=new n.Envelope2D;if(t.queryEnvelope(s),s.height()<=r||s.width()<=r)return!1;i.setCoords({env2D:s}),a.setCoords({env2D:s}),i.inflateCoords(r,r),a.inflateCoords(-r,-r);let o=new l.P,m=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,o),i.contains(o)){if(a.containsExclusive(o))return!1;m=!0}return m}(e,t,r);case 16:return function(e,t,r){let s=new n.Envelope2D,i=new n.Envelope2D;if(e.queryEnvelope(s),t.queryEnvelope(i),Ft(i,s,r)||i.height()<=r||i.width()<=r)return!1;let a=new n.Envelope2D,o=new n.Envelope2D;a.setCoords({env2D:i}),a.inflateCoords(-r,-r),o.setCoords({env2D:i}),o.inflateCoords(r,r);let m=new l.P,h=!1,g=!1;for(let t=0;t<e.getPointCount();t++)if(e.queryXY(t,m),!h&&a.containsExclusive(m)&&(h=!0),!g&&!o.contains(m)&&(g=!0),h&&g)return!0;return!1}(e,t,r)}return!1}function pt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();if(e.queryEnvelope(i),t.queryEnvelope(a),!Nt(i,a,r))return!1;if(st(e,t),Mt(e,t,r))return!0;let o=e.calculateLength2D(),l=t.calculateLength2D(),m=Math.max(e.getPointCount(),t.getPointCount());return!(Math.abs(o-l)>4*m*r)&&(e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"**F**FFF*",s,!1):qt(e,t,r,!0))}function dt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),jt(e,t,r,s))}function ct(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),2===Vt(e,t,r,!1))}function ft(e,t,r,s){return st(e,t),function(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),o=i.querySegmentIterator(),m=a.querySegmentIterator(),g=(0,l.c)(2,NaN),u=(0,l.c)(2,NaN),_=new Qe(i,a,r),p=!1;for(;_.next();){let e=_.getRedElement(),t=_.getBlueElement();o.resetToVertex(e,-1),m.resetToVertex(t,-1);let s=o.nextSegment(),i=m.nextSegment(),n=0;if(Qt(s,i)?!p&&i.isIntersecting(s,r)&&(p=!0):n=i.intersect(s,null,u,g,r),2===n)p=!0;else if(n){let e=g[0],t=u[0];if(e>0&&e<1&&t>0&&t<1)return!1;p=!0}}if(!p)return!1;let d,c,f=n.Envelope2D.constructEmpty(),x=n.Envelope2D.constructEmpty(),P=n.Envelope2D.constructEmpty();if(e.queryEnvelope(f),t.queryEnvelope(x),f.inflateCoords(1e3*r,1e3*r),x.inflateCoords(1e3*r,1e3*r),P.setCoords({env2D:f}),P.intersect(x),e.getPointCount()>10){if(d=(0,h.c)(e,P,r,0,s),d.isEmpty())return!1}else d=e;if(t.getPointCount()>10){if(c=(0,h.c)(t,P,r,0,s),c.isEmpty())return!1}else c=t;return Me(d,c,r,"F********",s,!1)}(e,t,r,s)}function xt(e,t,r,s,i){let o=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(m),!Ft(o,m,r))return!1;st(e,t);let h=!1,g=new l.P,u=e.getImpl(),_=new a.P,p=e,d=!1;for(let i=0;i<t.getPointCount();i++){if(t.queryXY(i,g),!o.contains(g))return!1;let n=tr(p,g,r);if(1===n)h=!0;else if(0===n)return!1;if(s&&2===n)return!1;d||=(!Te(e,t.getPointCount()-1)||null!==u.getAccelerators()&&null!==u.getAccelerators().getQuadTree()?p=e:(e.copyTo(_),_.getImpl().buildQuadTreeAccelerator(1),p=_),!0)}return h}function Pt(e,t,r,s,i){let a=n.Envelope2D.constructEmpty(),o=n.Envelope2D.constructEmpty();return e.queryEnvelope(a),t.queryEnvelope(o),s?Ht(o,a,r):Ft(o,a,r)}function yt(e,t,r,s,i){let o=n.Envelope2D.constructEmpty(),l=n.Envelope2D.constructEmpty();if(e.queryEnvelope(o),t.queryEnvelope(l),!Ft(o,l,r))return!1;st(e,t);let m=new a.P;return m.addEnvelope(t,!1),s?2===Vt(e,m,r,!1):jt(e,m,r,i)}function Et(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),e.hasNonLinearSegments()||t.hasNonLinearSegments()?Me(e,t,r,"******FF*",s,!1):Bt(t,e,r,!1))}function St(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&(st(e,t),Me(e,t,r,"T**FF*FF*",s,!1))}function Ct(e,t,r,s,o){let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();if(e.queryEnvelope(l),t.queryEnvelope(m),m.height()<=r||m.width()<=r)return!1;if(s)return Ht(m,l,r);if(!Ft(m,l,r))return!1;let h=n.Envelope2D.constructEmpty();h.setCoords({env2D:m}),h.inflateCoords(-r,-r);let g=n.Envelope2D.constructEmpty();if(g.setCoords({env2D:m}),g.inflateCoords(r,r),h.containsEnvelope(l))return!0;let u=e.getImpl().querySegmentIterator();u.stripAttributes(),u.nextPath()||(0,i.d)("relational_operations");let _,p,d,c,f,x,P=!1,y=e.hasNonLinearSegments();for(y&&(d=new a.L,c=new a.L,f=new a.L,x=new a.L,h.querySide(0,d),h.querySide(1,c),h.querySide(2,f),h.querySide(3,x));;){for(;!u.hasNextSegment()&&u.nextPath(););if(!u.hasNextSegment())break;let e=u.nextSegment();if(y&&e.getGeometryType()!==i.G.enumLine){if(e.isIntersecting(d,r)){P=!0;break}if(e.isIntersecting(c,r)){P=!0;break}if(e.isIntersecting(f,r)){P=!0;break}if(e.isIntersecting(x,r)){P=!0;break}}else if(_=e.getStartXY(),p=e.getEndXY(),0!==h.clipLine(_,p)){P=!0;break}}return P}function It(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),!!Ft(i,a,r)&&Ut(t,e,r,!0,!1,!1)}function vt(e,t,r,s){let i=n.Envelope2D.constructEmpty(),a=n.Envelope2D.constructEmpty();return e.queryEnvelope(i),t.queryEnvelope(a),Nt(i,a,r)}function Gt(e,t,r,s){return Zt(e,t.getXY(),r)}function wt(e,t,r,s,i){let a=n.Envelope2D.constructEmpty(),o=n.Envelope2D.constructEmpty();if(e.queryEnvelope(a),t.queryEnvelope(o),o.height()<=r||o.width()<=r)return!1;if(s)return Ht(o,a,r);if(!Ft(o,a,r))return!1;let m=!1,h=n.Envelope2D.constructEmpty(),g=n.Envelope2D.constructEmpty();h.setCoords({env2D:o}),g.setCoords({env2D:o}),h.inflateCoords(-r,-r),g.inflateCoords(r,r);let u=new l.P;for(let t=0;t<e.getPointCount();t++){if(e.queryXY(t,u),!g.contains(u))return!1;h.containsExclusive(u)&&(m=!0)}return m}function bt(e,t,r,s){return l.P.sqrDistance(e,t)<=r*r}function Tt(e,t,r,s){return bt(e,t,r)}function Nt(e,t,r,s){return Ft(e,t,r)&&Ft(t,e,r)}function Dt(e,t,r,s,i){if(e.height()<=r||e.width()<=r)return!1;if(s)return Ht(e,t,r);if(!Ft(e,t,r))return!1;let a=n.Envelope2D.constructEmpty();return a.setCoords({env2D:e}),a.inflateCoords(-r,-r),a.intersect(t),!a.isEmpty()}function Vt(e,t,r,s,o){let m=new l.P,h=new l.P,g=n.Envelope2D.constructEmpty(),u=n.Envelope2D.constructEmpty(),_=e.getImpl(),p=t.getImpl(),d=p.getGeometryType(),c=new Qe(_,p,r,!0);if(!c.next())return 1;if(Ot(e,t,r))return s?4:0;let f=new a.P,x=e,P=new a.P,y=null;d===i.G.enumPolygon&&(y=t);let E=d===i.G.enumPolygon?(0,l.c)(_.getPathCount(),!1):[],S=(0,l.c)(p.getPathCount(),!1),C=!1,I=!1,v=!1,G=!1,w=!1,b=!1;do{if(v&&w||G&&b||v&&G)break;let n=c.getRedElement(),a=c.getBlueElement();if(!S[a]&&(h.assign(t.getXY(t.getPathStart(a))),g.setCoords({env2D:c.getRedEnvelope()}),g.inflateCoords(r,r),g.contains(h))){if(0!==tr(x,h,0)){if(G=!0,s)return 4}else b=!0;S[a]=!0}if(d===i.G.enumPolygon&&!E[n]&&(m.assign(e.getXY(e.getPathStart(n))),u.setCoords({env2D:c.getBlueEnvelope()}),u.inflateCoords(r,r),u.contains(m))){if(0!==tr(y,m,0)){if(v=!0,s)return 4}else w=!0;E[n]=!0}if(C||=(!Te(e,t.getPathCount()-1)||null!==_.getAccelerators()&&null!==_.getAccelerators().getQuadTree()?x=e:(e.copyTo(f),f.getImpl().buildQuadTreeAccelerator(1),x=f),!0),d===i.G.enumPolygon&&!I){let r=t;!Te(r,e.getPathCount()-1)||null!==p.getAccelerators()&&null!==p.getAccelerators().getQuadTree()?y=t:(r.copyTo(P),P.getImpl().buildQuadTreeAccelerator(1),y=P),I=!0}}while(c.next());if(!v&&!G)return 1;if(!w||!b){if(d===i.G.enumPolygon)for(let e=0,t=_.getPathCount();e<t;e++)if(!E[e]){w=!0;break}for(let e=0,t=p.getPathCount();e<t;e++)if(!S[e]){b=!0;break}}return v&&w||G&&b||v&&G?4:G?2:3}function kt(e,t,r,s,o){s[0]=!1;let l=e.getImpl(),m=t.getImpl(),h=l.querySegmentIterator(),g=m.querySegmentIterator(),u=[0,0],_=[0,0],p=new Qe(l,m,r),d=!1;for(;p.next();){let e=p.getRedElement(),t=p.getBlueElement();h.resetToVertex(e,-1),g.resetToVertex(t,-1);let i=h.nextSegment(),n=g.nextSegment(),a=0;if(Qt(i,n)?!d&&n.isIntersecting(i,r)&&(d=!0):a=n.intersect(i,null,_,u,r),0!==a&&(d=!0,1===a)){let e=u[0],t=_[0];if(e>0&&e<1&&t>0&&t<1)return s[0]=!0,!1}}if(!d){s[0]=!0;let o=n.Envelope2D.constructEmpty();e.queryEnvelope(o),o.inflateCoords(r,r);let h=new a.P,g=e,u=!1;for(let r=0,s=t.getPathCount();r<s;r++)if(t.getPathSize(r)>0){let s=n.Envelope2D.constructEmpty();if(t.queryPathEnvelope(r,s),!o.isIntersecting(s))return!1;{let e=be(g,t.getXY(t.getPathStart(r)),0);if((0,i.g)(-1!==e),0===e)return!1}u||=(!Te(e,t.getPathCount()-1)||null!==l.getAccelerators()&&null!==l.getAccelerators().getQuadTree()?g=e:(e.copyTo(h),h.getImpl().buildQuadTreeAccelerator(1),g=h),!0)}if(1===e.getPathCount()||t.getGeometryType()===i.G.enumPolyline)return!0;let _=t,p=n.Envelope2D.constructEmpty();_.queryEnvelope(p),p.inflateCoords(r,r);let d=new a.P,c=_,f=!1;for(let t=0,r=e.getPathCount();t<r;t++)if(e.getPathSize(t)>0){let r=n.Envelope2D.constructEmpty();if(e.queryPathEnvelope(t,r),p.isIntersecting(r)){let r=be(c,e.getXY(e.getPathStart(t)),0);if((0,i.g)(-1!==r),1===r)return!1}f||=(!Te(_,e.getPathCount()-1)||null!==m.getAccelerators()&&null!==m.getAccelerators().getQuadTree()?c=_:(_.copyTo(d),d.getImpl().buildQuadTreeAccelerator(1),c=d),!0)}return!0}return!1}function Ft(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:e}),s.inflateCoords(r,r),s.containsEnvelope(t)}function Ht(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),e.containsExclusiveEnvelope(s)}function At(e,t,r){let s=n.Envelope2D.constructEmpty();return s.setCoords({env2D:t}),s.inflateCoords(r,r),!(s.contains(e.getLowerLeft())&&s.contains(e.getLowerRight())&&s.contains(e.getUpperLeft())&&s.contains(e.getUpperRight()))}function Mt(e,t,r,s){if(e.getPathCount()!==t.getPathCount()||e.getPointCount()!==t.getPointCount())return!1;if(e.hasNonLinearSegments()||t.hasNonLinearSegments())return e.equals(t);let i=new l.P,n=new l.P,a=!0,o=r*r;for(let r=0;r<e.getPathCount();r++){if(e.getPathEnd(r)!==t.getPathEnd(r)){a=!1;break}for(let s=e.getPathStart(r);s<t.getPathEnd(r);s++)if(e.queryXY(s,i),t.queryXY(s,n),l.P.sqrDistance(i,n)>o){a=!1;break}if(!a)break}return!!a}function Ut(e,t,r,s,i,n,a){let o=e.getImpl(),m=t.getImpl(),h=o.getPointCount(),g=m.getPointCount(),u=(0,l.c)(h,!1),_=i||n?(0,l.c)(g,!1):[],p=r*r,d=new Qe(o,m,r);for(;d.next();){let e=d.getRedElement(),t=d.getBlueElement(),r=o.getXY(e),s=m.getXY(t);l.P.sqrDistance(r,s)<=p&&(u[e]=!0,(i||n)&&(_[t]=!0))}let c=!1,f=!1;for(let e=0;e<h;e++){let t=u[e];if(c||=!t,f||=t,(i||s)&&c)return!1}if(s)return!0;let x=!1,P=!1;for(let e=0;e<g;e++){let t=_[e];if(x||=!t,P||=t,i&&x)return!1}return!!i||c&&f&&x&&P}function qt(e,t,r,s){return Bt(e,t,r,s)&&Bt(t,e,r,s)}function Bt(e,t,r,s){if((0,i.p)(e),(0,i.p)(t),t.isEmpty())return!1;let a,m=!0,h=(0,l.c)(2,NaN),g=(0,l.c)(2,NaN),u=[],_=new $t,p=n.Envelope2D.constructEmpty(),d=n.Envelope2D.constructEmpty(),c=n.Envelope2D.constructEmpty();e.queryEnvelope(p),t.queryEnvelope(d),p.inflateCoords(r,r),d.inflateCoords(r,r),c.setCoords({env2D:p}),c.intersect(d);let f=e.getImpl().querySegmentIterator(),x=t.getImpl().querySegmentIterator(),P=t.getImpl().getAccelerators(),y=null,E=null,S=null,C=null;if(null!==P&&(y=P.getQuadTree(),E=P.getQuadTreeForPaths(),null!==E&&(C=E.getIteratorForQT())),null===y){let r=e.getPointCount(),s=t.getPointCount();r>10&&s>10&&(y=(0,o.u)(t.getImpl(),c))}for(null!==y&&(S=y.getIteratorForQT());f.nextPath();)for(;f.hasNextSegment();){let e=f.nextSegment();if(e.queryEnvelope(p),!p.isIntersecting(c))return m=!1,!1;if(null!==C&&(C.resetIterator(p,r),-1===C.next()))continue;let t=0,n=null;if(null!=S)S.resetIterator(e,r);else if(x.resetToFirstPath(),!x.nextPath())return m=!1,!1;do{if(t=0,null!==S){let s=S.next();if(-1===s)return m=!1,!1;x.resetToVertex(y.getElement(s),-1),n=x.nextSegment(),t=e.intersect(n,null,h,g,r)}else{for(;!x.hasNextSegment();)if(!x.nextPath())return m=!1,!1;n=x.nextSegment(),n.queryEnvelope(d),d.inflateCoords(r,r),p.isIntersecting(d)&&(t=e.intersect(n,null,h,g,r))}}while(2!==t||0!==h[0]||s&&!(g[0]<=g[1]));let l=NaN,P=!1;do{let s=!1;if(1===h[1]){if(!f.hasNextSegment()){P=!0;break}e=f.nextSegment(),s=!0}if(1===g[1]&&g[0]<=g[1]){if(-1===l||(l=1,!x.hasNextSegment()))break;n=x.nextSegment(),s=!0}if(0===g[1]&&g[0]>g[1]){if(1===l)break;if(Number.isNaN(l)){if(!x.hasPreviousSegment())break;x.previousSegment(),l=-1}if(!x.hasPreviousSegment())break;n=x.previousSegment(),s=!0}if(!s)break;t=e.intersect(n,null,h,g,r)}while(2===t&&(!s||g[0]<=g[1]));if(P)continue;let E=e.calculateLength2D();e.queryEnvelope(p),u.length=0,_.m_overlapEvents.length=0;let I=!1,v=!1,G=0,w=(0,o.d)(null,p,!0);for(null===S?(x.resetToFirstPath(),x.nextPath()||(0,i.d)("relational_operations")):S.resetIterator(e,r);;){if(t=0,null!==S){let s=S.next();if(-1===s)break;x.resetToVertex(y.getElement(s),-1),n=x.nextSegment(),t=e.intersect(n,null,h,g,r)}else{for(;!x.hasNextSegment()&&x.nextPath(););if(!x.hasNextSegment())break;n=x.nextSegment(),n.queryEnvelope(d),d.inflateCoords(r,r),p.isIntersecting(d)&&(t=e.intersect(n,null,h,g,r))}if(2===t&&(!s||g[0]<=g[1])){let e=f.getStartPointIndex(),t=f.getPathIndex(),s=x.getStartPointIndex(),i=x.getPathIndex();if(a=Jt(e,t,h[0],h[1],s,i,g[0],g[1]),_.m_overlapEvents.push(a),u.push(u.length),!(I||a.m_scalarA0<G&&a.m_scalarA1<G))if(0===G&&E*(a.m_scalarA0-G)>r)I=!0;else if(0!==G&&E*(a.m_scalarA0-G)>w)I=!0;else if(G=a.m_scalarA1,E*(1-G)<=r||1===G){v=!0;break}}}if(!v){if(!I)return m=!1,!1;u.length>1&&u.sort((e,t)=>_.compareOverlapEvents(e,t)),G=0;for(let e=0;e<_.m_overlapEvents.length;e++)if(a=_.m_overlapEvents[u[e]],!(a.m_scalarA0<G&&a.m_scalarA1<G)){if(0===G&&E*(a.m_scalarA0-G)>r||0!==G&&E*(a.m_scalarA0-G)>w)return m=!1,!1;if(G=a.m_scalarA1,E*(1-G)<=r||1===G)break}if(E*(1-G)>r)return m=!1,!1;u.length=0,_.m_overlapEvents.length=0}}return m}function Ot(e,t,r){let s=e.getImpl(),i=t.getImpl(),n=s.querySegmentIterator(),a=i.querySegmentIterator(),o=new Qe(s,i,r);for(;o.next();){let e=o.getRedElement(),t=o.getBlueElement();n.resetToVertex(e,-1),a.resetToVertex(t,-1);let s=n.nextSegment();if(a.nextSegment().isIntersecting(s,r))return!0}return!1}function Yt(e,t,r,s){let i=e.getImpl(),n=t.getImpl(),a=i.querySegmentIterator(),o=n.querySegmentIterator(),m=(0,l.c)(2,NaN),h=new Qe(i,n,r),g=!1,u=-1;for(;h.next();){let e=h.getRedElement(),t=h.getBlueElement();a.resetToVertex(e,-1),o.resetToVertex(t,-1);let i=a.nextSegment(),n=o.nextSegment(),_=0;if(Qt(i,n)){if(n.isIntersecting(i,r))return-2}else _=i.intersect(n,null,m,null,r);if(_)if(2===_){let e=i.calculateLength2D(),t=m[0];if(e*(m[1]-t)>r)return u=1,u;g=!0}else if(u=0,s){let e=m[0],t=new l.P;i.queryCoord2D(e,t),s.push(t.x),s.push(t.y)}}return g?-2:u}function Xt(e,t,r,s){let i=e.getImpl(),n=t,a=n.getPointCount(),o=s?(0,l.c)(a,!1):[],m=new Qe(i,n,r,!1),h=i.querySegmentIterator();for(;m.next();){let e=m.getRedElement(),t=m.getBlueElement();h.resetToVertex(e,-1);let i=h.nextSegment(),a=n.getXY(t);if(i.isIntersectingPoint(a,r)){if(!s)return!0;o[t]=!0}}if(!s)return!1;for(let e=0;e<a;e++)if(!o[e])return!1;return!0}function Rt(e,t,r){let s=new l.P,i=r*r,a=e.querySegmentIterator(),o=e.getImpl().getAccelerators();if(null!==o){let e=o.getQuadTree();if(null!==e){let o=n.Envelope2D.constructEmpty();o.setCoords({pt:t});let m=e.getIterator(o,r);for(let r=m.next();-1!==r;r=m.next())if(a.resetToVertex(e.getElement(r),-1),a.hasNextSegment()){let e=a.nextSegment(),r=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(r,s),l.P.sqrDistance(t,s)<=i)return!0}return!1}}let m=n.Envelope2D.constructEmpty();for(;a.nextPath();)for(;a.hasNextSegment();){let e=a.nextSegment();if(e.queryEnvelope(m),m.inflateCoords(r,r),!m.contains(t))continue;let n=e.getClosestCoordinate(t,!1);if(e.queryCoord2D(n,s),l.P.sqrDistance(t,s)<=i)return!0}return!1}function Lt(e,t,r,s){let o=e.querySegmentIterator(),m=e.getImpl().getAccelerators(),h=e.hasNonLinearSegments(),g=null,u=null,_=null,p=null;if(null!==m){let e=m.getQuadTree();if(null!==e){let s=e.getIterator(t,r);h&&(g=new a.L,u=new a.L,_=new a.L,p=new a.L,t.querySide(0,g),t.querySide(1,u),t.querySide(2,_),t.querySide(3,p));let l=n.Envelope2D.constructEmpty();l.setCoords({env2D:t}),l.inflateCoords(r,r);for(let n=s.next();-1!==n;n=s.next())if(o.resetToVertex(e.getElement(n),-1),o.hasNextSegment()){let e=o.nextSegment();if(e.getGeometryType()===i.G.enumLine){let t=e.getStartXY(),r=e.getEndXY();if(l.clipLine(t,r))return!0;continue}if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(g,r)||e.isIntersecting(u,r)||e.isIntersecting(_,r)||e.isIntersecting(p,r))return!0}return!1}}if(h){g=new a.L,u=new a.L,_=new a.L,p=new a.L,t.querySide(0,g),t.querySide(1,u),t.querySide(2,_),t.querySide(3,p);let s=e.querySegmentIterator();for(;s.nextPath();)for(;s.hasNextSegment();){let e=s.nextSegment();if(t.contains(e.getStartXY())||t.contains(e.getEndXY())||e.isIntersecting(g,r)||e.isIntersecting(u,r)||e.isIntersecting(_,r)||e.isIntersecting(p,r))return!0}}else{let s=n.Envelope2D.constructEmpty();s.setCoords({env2D:t}),s.inflateCoords(r,r);let i=e.getImpl(),a=i.getAttributeStreamRef(0),o=new l.P;for(let e=0,t=i.getPathCount();e<t;e++){let t=!0,r=new l.P,n=new l.P,m=new l.P,h=i.getPathStart(e),g=new l.P;for(let l=h,u=i.getPathEnd(e);l<u;l++)if(t)a.queryPoint2D(2*l,r),g.assign(r),t=!1;else{if(a.queryPoint2D(2*l,o),n.setCoordsPoint2D(r),m.setCoordsPoint2D(o),s.clipLine(n,m))return!0;r.assign(o)}if(i.isClosedPath(e)&&!t&&(n.setCoordsPoint2D(r),m.setCoordsPoint2D(g),s.clipLine(n,m)))return!0}}return!1}function zt(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),m=[0],g=(0,o.q)(i.getIsSimple(0,m))&&(0,o.q)(a.getIsSimple(0,m)),u=i.querySegmentIterator(),_=a.querySegmentIterator(),p=(0,l.c)(2,0),d=(0,l.c)(2,0),c=new Qe(i,a,r),f=!1;for(;c.next();){let e=c.getRedElement(),t=c.getBlueElement();u.resetToVertex(e,-1),_.resetToVertex(t,-1);let s=u.nextSegment(),i=_.nextSegment(),n=0;if(Qt(s,i)){if(i.isIntersecting(s,r)){f=!0;break}}else n=i.intersect(s,null,d,p,r);if(2===n){let e=p[0],t=p[1],i=s.calculateLength2D();if(g&&(t-e)*i>r)return!1;f=!0}else if(n){let e=p[0],t=d[0];if(e>0&&e<1&&t>0&&t<1)return!1;f=!0}}if(!f)return!1;let x,P,y=n.Envelope2D.constructEmpty(),E=n.Envelope2D.constructEmpty(),S=n.Envelope2D.constructEmpty();if(e.queryEnvelope(y),t.queryEnvelope(E),y.inflateCoords(1e3*r,1e3*r),E.inflateCoords(1e3*r,1e3*r),S.setCoords({env2D:y}),S.intersect(E),e.getPointCount()>10){if(x=(0,h.c)(e,S,r,0,s),x.isEmpty())return!1}else x=e;if(t.getPointCount()>10){if(P=(0,h.c)(t,S,r,0,s),P.isEmpty())return!1}else P=t;return Me(x,P,r,"F********",s,!1)}function Wt(e,t,r,s){let i=e.getImpl(),a=t.getImpl(),m=[0],g=(0,o.q)(i.getIsSimple(0,m))&&(0,o.q)(a.getIsSimple(0,m)),u=n.Envelope2D.constructEmpty(),_=n.Envelope2D.constructEmpty(),p=n.Envelope2D.constructEmpty();e.queryEnvelope(u),t.queryEnvelope(_);let d=!1,c=At(u,_,r),f=At(_,u,r),x=i.querySegmentIterator(),P=a.querySegmentIterator(),y=(0,l.c)(2,NaN),E=(0,l.c)(2,NaN),S=new Qe(i,a,r);for(;S.next();){let e=S.getRedElement(),t=S.getBlueElement();x.resetToVertex(e,-1),P.resetToVertex(t,-1);let s=x.nextSegment(),i=P.nextSegment(),n=0;if(Qt(s,i)){if(i.isIntersecting(s,r))break}else n=i.intersect(s,null,E,y,r);if(2===n){let e=y[0],t=y[1],i=s.calculateLength2D();if(g&&(t-e)*i>r&&(d=!0,c&&f))return!0}else if(n){let e=y[0],t=E[0];if(e>0&&e<1&&t>0&&t<1)return!0}}let C=n.Envelope2D.constructEmpty(),I=n.Envelope2D.constructEmpty();C.setCoords({env2D:u}),C.inflateCoords(1e3*r,1e3*r),I.setCoords({env2D:_}),I.inflateCoords(1e3*r,1e3*r),p.setCoords({env2D:C}),p.intersect(I);let v,G,w="";if(w+=d?"**":"T*",c){if(t.getPointCount()>10){if(G=(0,h.c)(t,p,r,0,s),G.isEmpty())return!1}else G=t;w+="****"}else G=t,w+="T***";if(f){if(e.getPointCount()>10){if(v=(0,h.c)(e,p,r,0,s),v.isEmpty())return!1}else v=e;w+="***"}else v=e,w+="T**";return Me(v,G,r,w,s,!1)}function jt(e,t,r,s){let i=[!1],l=kt(e,t,r,i);if(i[0])return l;let m,g=n.Envelope2D.constructEmpty();if(t.queryEnvelope(g),g.inflateCoords(1e3*r,1e3*r),e.getPointCount()>10){if(m=(0,h.c)(e,g,r,0,s),m.isEmpty())return!1}else m=e;return function(e,t,r,s){let i=new We;i.resetMatrix_(),i.setPredicates_("T*****F**"),i.setAreaAreaPredicates_();let l=n.Envelope2D.constructEmpty(),m=n.Envelope2D.constructEmpty();e.queryEnvelope(l),t.queryEnvelope(m);let h=!1;if(rt(l,m,r)&&(i.areaAreaDisjointPredicates_(e,t),h=!0),h||st(e,t),h)return Le(i.m_matrix,i.m_scl);let g=new a.E,u=g.addGeometry(e),_=g.addGeometry(t),p=null,d=0;if(e.hasNonLinearSegments()||t.hasNonLinearSegments()){p=new dr;let e=ur(r,g.getEnvelope2D(s));d=pr(e,0),lr(g,e,r,0,p,null,s)}fr(g,new o.C(r,0).add(d),s,!1,!1);let c=g.getGeometry(_).getBoundary();if(g.filterClosePoints(0,!0,!0,!1,-1),He(g,u,-1,!1,-1,s),0===g.getPointCount(u))return!1;He(g,_,-1,!1,-1,s),i.setEditShape_(g,s);let f=0===g.getPointCount(_);if(!f){i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape();let e=Le(i.m_matrix,i.m_scl);if(!e)return e}let x=g.getGeometry(u);return g=new a.E,u=g.addGeometry(x),_=g.addGeometry(c),i.setEditShape_(g,s),i.m_predicateCount=0,i.resetMatrix_(),i.setPredicates_(f?"T*****F**":"******F**"),i.setAreaLinePredicates_(),i.computeMatrixTopoGraphHalfEdges_(u,_),i.m_topoGraph.removeShape(),Le(i.m_matrix,i.m_scl)}(m,t,r,s)}function Zt(e,t,r,s){let i=new l.P,n=r*r;for(let r=0;r<e.getPointCount();r++)if(e.queryXY(r,i),l.P.sqrDistance(i,t)<=n)return!1;return!0}function Kt(e,t,r){let s=e.getBoundary();return!s.isEmpty()&&!Zt(s,t,r)}function Qt(e,t){return e.getGeometryType()!==i.G.enumLine||t.getGeometryType()!==i.G.enumLine}function Jt(e,t,r,s,i,n,a,o){return{m_ivertexA:e,m_ipathA:t,m_scalarA0:r,m_scalarA1:s,m_ivertexB:i,m_ipathB:n,m_scalarB0:a,m_scalarB1:o}}class $t{m_overlapEvents=[];compareOverlapEvents(e,t){let r=this.m_overlapEvents[e],s=this.m_overlapEvents[t];return r.m_ipathA<s.m_ipathA||r.m_ipathA===s.m_ipathA&&(r.m_ivertexA<s.m_ivertexA||r.m_ivertexA===s.m_ivertexA&&(r.m_scalarA0<s.m_scalarA0||r.m_scalarA0===s.m_scalarA0&&(r.m_scalarA1<s.m_scalarA1||r.m_scalarA1===s.m_scalarA1&&r.m_ivertexB<s.m_ivertexB)))?-1:1}}function er(e,t,r){let s=function(e,t,r){return t.isEmpty()?0:be(e,t.getXY(),r)}(e,t,r);return s?1===s?1:2:0}function tr(e,t,r){let s=be(e,t,r);return s?1===s?1:2:0}function rr(e,t,r,s,a){if(e.getGeometryType()===i.G.enumPolygon)!function(e,t,r,s,i){for(let n=0;n<r;n++)i[n]=tr(e,t[n],s)}(e,t,r,s,a);else if(e.getGeometryType()===i.G.enumEnvelope){let i=n.Envelope2D.constructEmpty();e.queryEnvelope(i),function(e,t,r,s,i){if(e.isEmpty()){for(let e=0;e<r;e++)i[e]=0;return}let n=e.clone();n.inflateCoords(.5*-s,.5*-s);let a=e.clone();a.inflateCoords(.5*s,.5*s);for(let e=0;e<r;e++)n.contains(t[e])?i[e]=1:a.contains(t[e])?i[e]=2:i[e]=0}(i,t,r,s,a)}else(0,i.q)("")}function sr(e,t,r,s,a){let l=e.getGeometryType();l===i.G.enumPolyline?function(e,t,r,s,a){let l=e.getImpl(),m=l.getAccelerators(),h=null;m&&(h=m.getRasterizedGeometry());let g=r;for(let e=0;e<r;e++)a[e]=1,h&&(0,i.g)(0);if(g){if(m){let e=null;null!==m&&null!==m.getQuadTree()&&(e=m.getQuadTree());let i=l.getPointCount();if(null===e&&i>20&&i*r>4*i+Math.log(i)*r&&(e=(0,o.u)(l)),e){let i=null,o=l.querySegmentIterator(),m=new n.Envelope2D;for(let n=0;n<r&&g;n++)if(1===a[n]){m.setCoords(t[n]),null===i?i=e.getIterator(m,s):i.resetIterator(m,s);let r=-1;for(let l=i.next();-1!==l;l=i.next()){if(o.resetToVertex(e.getElement(l),r),r=o.getPathIndex(),o.nextSegment().isIntersectingPoint(t[n],s)){a[n]=2,g--;break}a[n]=0}}return}}let e=l.querySegmentIterator();for(;e.nextPath()&&g;)for(;e.hasNextSegment()&&g;){let i=e.nextSegment();for(let e=0;e<r&&g;e++)1===a[e]&&i.isIntersectingPoint(t[e],s)&&(a[e]=2,g--)}}for(let e=0;e<r;e++)1===a[e]&&(a[e]=0)}(e,t,r,s,a):(0,i.h)(l)?(0,i.g)(0):(0,i.q)("")}function ir(e){if(e.isEmpty())return 0;switch(e.getGeometryType()){case i.G.enumMultiPoint:return e.getImpl().getPointCount();case i.G.enumPolyline:return e.getImpl().getPathCount();case i.G.enumPolygon:return e.getImpl().getOGCPolygonCount();case i.G.enumGeometryCollection:return e.getGeometryCount()}return 1}function nr(){return Number.isNaN(this.radius.value())}function ar(e,t,r,s){return{pt:e.clone(),t,err:r,checkCount:s}}class or{m_left;m_eps;m_tolerance;m_circleCheckCounter;m_bReversedLeft;m_leftArc;m_tracker;m_trackerCounter;constructor(e,t,r,s,i){this.m_left=e,this.m_tracker=i,this.m_eps=r,this.m_trackerCounter=0,this.m_tolerance=s,this.m_circleCheckCounter=0,this.m_bReversedLeft=!1,this.m_leftArc={ptStart:new l.P,ptEnd:new l.P,center:new a.Z,radius:new l.Z,fcenter:new a.Y,fradius2:new l.M,maxError:NaN,isLine:nr}}closeToCircularArc(e,t,r,s,i,n){if(this.m_circleCheckCounter++,n.maxError=0,!or.checkSweepAngle(e,t))return!1;if(n.ptStart.setCoordsPoint2D(r),n.ptEnd.setCoordsPoint2D(i),e.isCircular()){let t=e;return n.fradius2=l.M.constructDouble(t.getSemiMajorAxis()).mulDouble(t.getSemiMajorAxis()),n.radius.set(t.getSemiMajorAxis()),n.fcenter.assignPoint2D(t.getCenter()),n.center.set(t.getCenter()),!0}let o=n.ptEnd.sub(n.ptStart).clone();if(o.leftPerpendicularThis(),o.normalize(),Math.abs(o.dotProduct(s.sub(n.ptStart)))<=this.m_eps)return!!this.confirmIsLine(n,o)&&(n.radius.set(NaN),n.center.setCoords(0,0),!0);{let r=n.ptEnd.sub(n.ptStart),i=s.sub(n.ptStart),a=r.crossProduct(i);if(0===a)return!1;let o=.5*r.sqrLength(),l=.5*i.sqrLength(),m=o*i.y-l*r.y;m/=a;let h=r.x*l-i.x*o;h/=a;let g=Math.sqrt(m*m+h*h);if(2**-52*4*g>this.m_eps)return!1;let u=m+n.ptStart.x,_=h+n.ptStart.y;n.radius.set(g),n.center.setCoords(u,_);let p=this.maxCircleApproximationError(e,t,n);if(p>this.m_eps)return n.maxError=p,!1}let m=(new a.Y).assignPoint2D(n.ptStart),h=(new a.Y).assignPoint2D(n.ptEnd).sub(m),g=(new a.Y).assignPoint2D(s).sub(m),u=h.crossProduct(g);if(u.isZero())return!1;let _=h.sqrLength().mulDouble(.5),p=g.sqrLength().mulDouble(.5),d=_.mul(g.y).sub(p.mul(h.y)),c=h.x.mul(p).sub(g.x.mul(_)),f=d.mul(d).add(c.mul(c)),x=u.clone();x.invertThis(),n.fradius2=f.mul(x).mul(x),n.fcenter.setCoords(d.mul(x).add(m.x),c.mul(x).add(m.y)),n.center.setWithEps(n.fcenter.asPoint2D()),n.radius.setWithEps(Math.sqrt(n.fradius2.toDouble()));let P=a.Z.constructPoint2D(n.ptStart).subE(n.center),y=a.Z.constructPoint2D(n.ptEnd).subE(n.center);if(!P.dotProduct(y).gt(l.T))return!1;let E=this.maxCircleApproximationError(e,t,n);return n.maxError=E,E<=this.m_eps}static checkSweepAngle(e,t){if(e.getGeometryType()===i.G.enumEllipticArc){let r=e,s=(0,a._)(r,t.vmin),i=(0,a._)(r,t.vmax);return!(Math.abs(i-s)>.5*l.l)}return!0}confirmIsLine(e,t){let r=e.ptEnd.sub(e.ptStart);return!(Math.abs(t.dotProduct(r.mul(.25)))>this.m_eps||Math.abs(t.dotProduct(r.mul(.75)))>this.m_eps)}maxCircleApproximationError(e,t,r){let s,n,a=[.25,.75],o=[.1,.25,.75,.9];e.getGeometryType()===i.G.enumEllipticArc?(s=a,n=a.length):(s=o,n=o.length);let m=0;for(let i=0;i<n;++i){let n=new l.P;e.queryCoord2D((0,l.r)(t.vmin,t.vmax,s[i]),n);let a=n.sub(r.center.value()).length(),o=Math.abs(a-r.radius.value());o>m&&(m=o)}return m}approximateWithCirclesImpl(e,t){let r=1;t&&t.push(0);let s,i=(0,l.c)(9,NaN);e?s=this.m_left.getMonotonicPartParams(i.length,i):(i[0]=0,i[1]=1,s=2);let n=[],a=[],o=new l.P(0,0);for(let e=1;e<s;e++){let s=new l.E(i[e-1],i[e]);for(this.m_bReversedLeft=!or.goodOrientation(this.m_left,s),this.m_bReversedLeft?(n.push(ar(o,s.vmin,0,0)),n.push(ar(o,s.vmax,0,0))):(n.push(ar(o,s.vmax,0,0)),n.push(ar(o,s.vmin,0,0))),n[0].pt=this.m_left.getCoord2D(n[0].t),n[1].pt=this.m_left.getCoord2D(n[1].t);n.length>1;){this.progress_();let e=n.at(-1),s=e.checkCount,i=e.err,o=e.pt.clone(),m=e.t,h=n[n.length-2].t,g=.5*(m+h),u=this.m_left.getCoord2D(g);if(i<=this.m_eps||s>=5){let e=new l.E;if(e.setCoords(m,h),this.closeToCircularArc(this.m_left,e,o,u,n[n.length-2].pt,this.m_leftArc)){t&&(this.m_bReversedLeft?a.push(m):t.push(h)),r++,n.pop();continue}s=0,i=this.m_leftArc.maxError}e.t=g,e.pt.setCoordsPoint2D(u),i*=.125,s++,e.err=i,e.checkCount=s,n.push(ar(o,m,i,s))}this.m_bReversedLeft&&t&&(t.length+=a.length,(0,l.f)(t,a.reverse(),t.length-a.length,0,a.length),a.length=0),n.length=0}return r}approximateWithCirclesImplPolyline(e){let t=new a.a,r=[];if(!this.approximateWithCirclesImpl(!0,r))return t;let s=0,i=this.m_left.getStartXY();t.startPath(i);for(let n=1;n<r.length;++n)if(e)t.lineTo(this.m_left.getCoord2D(r[n]));else{let e=new l.P;this.m_left.queryCoord2D(r[n],e);let o=new l.P;this.m_left.queryCoord2D(.5*(r[n]+s),o);let m=new a.l;m.constructCircularArcThreePoint(i,e,o),t.addSegment(m,!1),i.assign(e),s=r[n]}return t}static goodOrientation(e,t){let r=e.getCoord2D(t.vmin),s=e.getCoord2D(t.vmax);return r.compare(s)<0}progress_(e=!1){}}function lr(e,t,r,s,i,n,a){(function(e,t,r,s,i,n){e.hasCurves()?(e.setCurveStitcherPointer(s),s.m_impl=new cr(n,!1,null),s.m_impl.buildMonotonicCurveParentage(e,t,r,i)):s.m_impl=null})(e,t,r,i,n,a),Pr(e,r,a)}function mr(e,t,r,s){if(!(0,i.j)(e.getGeometryType()))return e;let n=e.getImpl();if(!n.hasNonLinearSegments())return e;let l=e.createInstance();l.getGeometryType()===i.G.enumPolygon&&l.setFillRule(e.getFillRule()),new a.E;let m=new o.P,h=new a.S,g=[],u=[],_=[],p=e.getDescription().getAttributeCount()>1,d=n.querySegmentIterator();for(;d.nextPath();){let e=!0;for(;d.hasNextSegment();){let s=d.isClosingSegment(),n=d.nextSegment();if(!n.isCurve()){l.addSegment(n,e,s),e=!1;continue}let o,c=!1;switch(n.getGeometryType()){case i.G.enumEllipticArc:case i.G.enumRationalBezier2:o=(0,a.H)(n,t,r,!0,!0,u,_,g),c=!0;break;default:o=(0,a.F)(n,t,r,!0,!0,u,g)}let f=c?2:3;u[1].isNAN()?(h.createLine(),h.get().construct(u[0],u[f])):c?(h.createQuadraticRationalBezier(),h.get().constructArrayWeights(u,_)):(h.createCubicBezier(),h.get().constructPoints(u)),p&&e&&(n.queryCoord(g[0],m),h.get().setStart(m)),p&&(n.queryCoord(g[1],m),h.get().setEnd(m)),l.addSegment(h.get(),e,s&&1===o),e=!1;for(let e=1,t=o,r=f;e<t;++e,r+=f)u[r+1].isNAN()?(h.createLine(),h.get().construct(u[r],u[r+f])):c?(h.createQuadraticRationalBezier(),h.get().constructArrayWeights(u.slice(r),_.slice(r))):(h.createCubicBezier(),h.get().constructPoints(u.slice(r))),p&&(n.queryCoord(g[e+1],m),h.get().setEnd(m)),l.addSegment(h.get(),!1,s&&e+1===t)}}return l}function hr(e,t,r,s,i,n,a,o){e.hasCurves()?(e.setCurveStitcherPointer(n),n.m_impl=new cr(o,!0,i),n.m_impl.buildMonotonicCurveParentage(e,t,r,a),Pr(e,r,o)):n.m_impl=null}function gr(e){if(!e.hasSegmentParentage())return;let t=e.queryVertexIteratorOnSelection();for(let r=t.next();-1!==r;r=t.next())if(!e.getSegmentParentageBreakVertex(r)){e.getPathFromVertex(r);let t=e.getPrevVertex(r),s=-1===t?-1:e.getSegmentParentage(t),i=e.getSegmentParentage(r);-1!==i&&-1!==s&&i!==s&&e.setSegmentParentageBreakVertex(r,!0)}}function ur(e,t){return t||=n.Envelope2D.constructEmpty(),function(e,t){let r=t.isEmpty()?e:(0,o.c)(null,t,!0).total();return r>e&&(r=e),.125*r}(e,t)}function _r(e,t){return.125*e}function pr(e,t){return 3*e+3*t}class dr{m_impl=null;stitchCurves(e,t,r,s){this.m_impl&&(this.m_impl.stitchCurves(e,t,r),s&&this.clearStitcher(e))}clearStitcher(e){this.m_impl&&=(this.m_impl.clearStitcher(e),null)}getOriginalVertexIndex(e,t){return this.m_impl.getOriginalVertexIndex(e,t)}getOriginalSegmentTypeInfo(e){return this.m_impl.getOriginalSegmentTypeInfo(e)}}class cr{constructor(e,t,r){this.m_progressTracker=e,this.m_nsr=r,this.m_tolerance=0,this.m_originalVertexIndex=-1,this.m_type=1,this.m_progressCounter=0,this.m_bIsSimple=t,this.m_densificationDeviation=NaN,this.m_maxSegmentsPerCurve=-1}buildMonotonicCurveParentage(e,t,r,s){if(!e.hasCurves())return;(0,i.g)(!e.hasSegmentParentage()),this.m_originalPlanarSegments.length=0,this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex()),this.m_tolerance=r;let n=new o.P,l=new a.S,m=[],h=[],g=[];for(let s=e.getFirstGeometry();-1!==s;s=e.getNextGeometry(s))for(let o=e.getFirstPath(s);-1!==o;o=e.getNextPath(o)){let s=e.getPathSize(o),u=e.getFirstVertex(o),_=0,p=-1;for(let d=0;d<s;d++){let f=e.getNextVertex(u);if(!e.querySegment(u,l,!0,!1)){u=f;continue}if(0===_){p=e.getVertexIndex(u);let t=cr.regularizeCurve(e,l.get(),u,r);if(t>=0){this.m_nsr&&0===this.m_nsr.m_reason&&this.m_nsr.assign(new c(13,p,-1)),_=t,s=e.getPathSize(o),f=e.getNextVertex(u);let r=e.querySegment(u,l,!0,!1);(0,i.g)(r)}}else _--;let x=e.getVertexIndex(u);-1!==this.m_originalVertexIndex&&e.setUserIndex(u,this.m_originalVertexIndex,p),e.setSegmentToIndex(x,null);let P,y=!1;switch(l.get().getGeometryType()){case i.G.enumEllipticArc:case i.G.enumRationalBezier2:P=(0,a.H)(l.get(),t,r,!1,!0,h,g,m),y=!0;break;default:{let e=!this.m_bIsSimple||!l.get().isMonotoneQuickAndDirty();P=(0,a.F)(l.get(),t,r,e,!1,h,m)}}let E=this.m_originalPlanarSegments.length;if(e.setSegmentParentageAndBreak(u,E,!0),!h[1].isNAN()){let t=null;t=y?new a.Q({points:h,weights:g}):new a.I({cp:h}),t.snapControlPoints(r*r),e.setSegmentToIndex(x,t)}let S=y?2:3;for(let t=1,s=P,i=S;t<s;++t,i+=S){l.get().queryCoord(m[t],n);let s=e.insertVertex(o,f,n);if(-1!==this.m_originalVertexIndex&&e.setUserIndex(s,this.m_originalVertexIndex,p),!h[i+1].isNAN())if(y){let t=new a.Q({points:h.slice(i),weights:g.slice(i)});t.snapControlPoints(r*r),e.setSegmentToIndex(e.getVertexIndex(s),t)}else{let t=new a.I({cp:h.slice(i)});t.snapControlPoints(r*r),e.setSegmentToIndex(e.getVertexIndex(s),t)}e.setSegmentParentageAndBreak(s,E,!1)}P>1&&(d+=P-1,s=e.getPathSize(o)),this.m_originalPlanarSegments.push(l.releaseSegment()),u=f}}}buildLinearSegmentParentage(e,t,r,s,n){if(this.m_type=0,this.m_densificationDeviation=t,this.m_maxSegmentsPerCurve=s,!e.hasCurves())return;(0,i.g)(!e.hasSegmentParentage()),this.m_tolerance=r,this.m_originalPlanarSegments=[],this.m_bIsSimple&&(this.m_originalVertexIndex=e.createUserIndex());let l=new o.P,m=new a.S,h=new a.D(0,t,0,this.m_progressTracker,!1,s),g=[];for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))for(let s=e.getFirstPath(t);-1!==s;s=e.getNextPath(s)){let t=e.getPathSize(s),n=e.getFirstVertex(s);for(let a=0;a<t;a++){let a=e.getNextVertex(n);if(!e.querySegment(n,m,!0,!1)){n=a;continue}if(cr.regularizeCurve(e,m.get(),n,r)>=0){t=e.getPathSize(s),a=e.getNextVertex(n);let r=e.querySegment(n,m,!0,!1);(0,i.g)(r)}let o=e.getVertexIndex(n);-1!==this.m_originalVertexIndex&&e.setUserIndex(n,this.m_originalVertexIndex,o),e.setSegmentToIndex(o,null),g.length=0,h.densifySegment(m.get(),g),this.progress_();let u=this.m_originalPlanarSegments.length;e.setSegmentParentageAndBreak(n,u,!0);for(let t=1,r=g.length-1;t<r;++t){m.get().queryCoord(g[t],l);let r=e.insertVertex(s,a,l);e.setSegmentParentageAndBreak(r,u,!1),-1!==this.m_originalVertexIndex&&e.setUserIndex(r,this.m_originalVertexIndex,o)}this.m_originalPlanarSegments.push(m.releaseSegment()),n=a}}e.clearSegments()}stitchCurves(e,t,r){cr.st_stitchCurvesImpl(this,e,t,r,!1)}clearStitcher(e){this.m_originalPlanarSegments.length=0,-1!==this.m_originalVertexIndex&&(e.removeUserIndex(this.m_originalVertexIndex),this.m_originalVertexIndex=-1),e.deleteSegmentParentage()}static st_verifyParentage(e){cr.st_stitchCurvesImpl(null,e,-1,0,!0)}getOriginalVertexIndex(e,t){return-1===this.m_originalVertexIndex||-1===t?-1:e.getUserIndex(t,this.m_originalVertexIndex)}getOriginalSegmentTypeInfo(e){if(-1!==e){let t=this.m_originalPlanarSegments[e];switch(t.getGeometryType()){case i.G.enumEllipticArc:return 0===t.projectionBehavior()?0:1;case i.G.enumBezier:return 2;case i.G.enumBezier2:return 3;case i.G.enumLine:return-1;case i.G.enumRationalBezier2:return 4;default:(0,i.a)("")}}return-1}m_originalPlanarSegments=[];m_progressTracker=null;m_nsr=null;m_tolerance;m_densificationDeviation;m_maxSegmentsPerCurve;m_originalVertexIndex;m_type;m_progressCounter;m_bIsSimple;progress_(e=!1){this.m_progressCounter++}processSpanSmartTe_(e,t,r,s,n,a,o){if(t===r&&0===s)return(0,i.g)(-1===e.getNextVertex(t)),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let m=e.getNextVertex(t),h=e.getXY(t),g=e.getXY(r),u=0;{let t=2,n=h;for(let s=m;s!==r;s=e.getNextVertex(s)){let r=e.getXY(s);u+=l.P.distance(r,n),n=r,t++}u+=l.P.distance(g,n),(0,i.g)(t===s)}if(null===n)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(m,r);let _,p=o,d=n.getClosestCoordinate(h,!1),c=n.getClosestCoordinate(g,!1),f=n.calculateLength2D(),x=n.tToLength(d),P=n.tToLength(c),y=Math.abs(x)>10*p&&Math.abs(x-f)>10*p,E=Math.abs(P)>10*p&&Math.abs(P-f)>10*p,S=e=>{let t=e.calculateLength2D();return Math.abs(t-u)>Math.max(.2*u,4*p)?null:e},C=n.isClosed();if(!C){let e=l.P.distance(n.getStartXY(),n.getEndXY());e<=p&&f>5*e&&(C=!0)}if(C){let a,o,m=new l.P;if(2===s)m=l.P.lerp(h,g,.5),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a);else{let r=e.getNextNthVertex(t,(s-1)/2);m=e.getXY(r),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a);let i=Math.abs(o)>10*p&&Math.abs(o-f)>10*p;if(!i&&(s-1>=4&&(r=e.getNextNthVertex(t,(s-1)/4),a=n.getClosestCoordinate(m,!1),o=n.tToLength(a),i=Math.abs(o)>10*p&&Math.abs(o-f)>10*p),!i))return}let u=!1,C=x===P;if(C){let r=2,i=4;s-1<=4&&(r=1,i=2);let a=h,o=e.getXY(e.getNextNthVertex(t,r)),m=e.getXY(e.getNextNthVertex(t,i));u=-l.P.orientationNonRobust(a,o,m)*(0,l.h)(n.calculateArea2DHelper())>0}else E?y?u=o>x:o<P?(x=0,d=0):(x=f,d=1):o>x?(P=f,c=1):(P=0,c=0);if(C)_=n.clone(),_.dropAllAttributes(),u||_.reverse(),(0,i.g)(h.equals(g));else{let e=!1;d>c&&(e=!0,[d,c]=[c,d]),_=n.cut(d,c,!0),_.getDescription().getAttributeCount(),e&&_.reverse()}_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}else if(y||E){if((!y||!E)&&l.P.distance(n.getStartXY(),n.getEndXY())<10*p){let s=[(0,l.o)(d,c),(0,l.o)(d,c),(0,l.o)(d,c)];y?(s[1].second=0,s[2].second=1):(s[1].first=1,s[2].first=0);let i=[null,null,null],a=[0,0,0],o=Number.MAX_VALUE,m=0;for(let e=0;e<3;e++){let t=!1;if(s[e].first>s[e].second){t=!0;let r=s[e].first;s[e].first=s[e].second,s[e].second=r}i[e]=n.cut(s[e].first,s[e].second,!0),i[e].dropAllAttributes(),t&&i[e].reverse(),i[e].setCoordsForIntersector(h,g,!1),a[e]=i[e].calculateLength2D();let r=Math.abs(u-a[e]);r<o&&(o=r,m=e)}return _=i[m],_=S(_),void(_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_)))}let s=!1;d>c&&(s=!0,[d,c]=[c,d]),_=n.cut(d,c,!0),_.dropAllAttributes(),s&&_.reverse(),_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}else{if(_=n.clone(),_.dropAllAttributes(),x>P&&_.reverse(),u<Math.max(.75*f,f-this.m_densificationDeviation*(s-1))){let e=d>c?c:d,t=_.tToLength(e)+u,r=_.lengthToT(t);r=(0,l.a)(r,e,1),_=_.cut(e,r,!0)}_.setCoordsForIntersector(h,g,!1),_=S(_),_&&(this.removeSpanBetween(e,t,r),e.setSegmentToIndex(e.getVertexIndex(t),_))}}processSpanCurves_(e,t,r,s,n,a,o){if(t===r&&0===s)return(0,i.g)(-1===e.getNextVertex(t)),e.setSegmentToIndex(e.getVertexIndex(t),null),void e.setSegmentParentageAndBreak(t,-1);let l=e.getNextVertex(t);{let t=2;for(let s=l;s!==r;s=e.getNextVertex(s))t++;(0,i.g)(t===s)}if(null===n)return e.setSegmentToIndex(e.getVertexIndex(t),null),void e.removeVertices(l,r);let m=e.getXY(t),h=e.getXY(r);if(n.isClosed()){if(m.isEqualPoint2D(h)&&m.isEqualPoint2D(n.getStartXY())){let i;if(i=this.verifySegmentFitnessCurves(e,t,r,s,n,a,o)){let s=n.clone();return s.dropAllAttributes(),i<0&&s.reverse(),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),s)}}}else if(m.isEqualPoint2D(n.getStartXY())){if(h.isEqualPoint2D(n.getEndXY())){let l=n.clone();l.dropAllAttributes();let m=this.verifySegmentFitnessCurves(e,t,r,s,l,a,o);if(m)return(0,i.g)(m>0),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),l)}}else if(h.isEqualPoint2D(n.getStartXY())&&m.isEqualPoint2D(n.getEndXY())){let l=n.getReversed();l.dropAllAttributes();let m=this.verifySegmentFitnessCurves(e,t,r,s,l,a,o);if(m)return(0,i.g)(m>0),this.removeSpanBetween(e,t,r),void e.setSegmentToIndex(e.getVertexIndex(t),l)}this.processSpanSplitSegmentCurves(e,t,r,s,n,a,o)}processSpan_(e,t,r,s,i,n,a){0!==this.m_type?this.processSpanCurves_(e,t,r,s,i,n,a):this.processSpanSmartTe_(e,t,r,s,i,n,a)}processSpanSplitSegmentCurves(e,t,r,s,i,n,a){if(i.isLine()||this.fitSegmentToSpanCurves(e,t,r,s,i,n,a))return;let o=a*a,m=s,h=t,g=e.getXY(t),u=i.getClosestCoordinate(g,!1),_=i.getCoord2D(u),p=!1,d=l.P.sqrDistance(g,_);if(d>o){let s=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,i,n,a),s===r)return;h=s,p=!0,--m}let c=r,f=e.getXY(r);u=i.getClosestCoordinate(f,!1);let x=i.getCoord2D(u),P=!1,y=l.P.sqrDistance(f,x);if(y>o){let t=e.getPrevVertex(r);if(this.approximateSpanSectionCurves(e,t,i,n,a),t===h)return;c=t,P=!0,--m}if((p||P)&&this.fitSegmentToSpanCurves(e,h,c,m,i,n,a))return;let E=!1;if(!p&&d>0){let r=e.getNextVertex(t);if(this.approximateSpanSectionCurves(e,t,i,n,a),r===c)return;h=r,p=!0,E=!0,--m}if(!P&&y>0){let t=e.getPrevVertex(r);if(this.approximateSpanSectionCurves(e,t,i,n,a),t===h)return;c=t,P=!0,E=!0,--m}if(E&&this.fitSegmentToSpanCurves(e,h,c,m,i,n,a))return;let S=h;for(;;){let t=e.getNextVertex(S);if(this.approximateSpanSectionCurves(e,S,i,n,a),S=t,S===c)return}}fitSegmentToSpanCurves(e,t,r,s,i,n,o){let m=[];m.push(e.getXY(t));let h=t,g=new a.S;for(;;){e.querySegment(h,g,!1,!0);let t=[.1,.25,.4,.5,.6,.75,.9,1],i=0;for(let e of t)(2===s||1&i)&&m.push(g.get().getCoord2D(e)),i++;if(h=e.getNextVertex(h),h===r)break}let u=(()=>{let e=m[0].compare(m.at(-1));if(0===e){let t=new l.K(0);(function(e,t,r){if(r.reset(),t<3)return;let s=e[0].clone(),i=s.x,n=s.y,a=e[1].clone(),o=new l.P;for(let i=2;i<t;i++)o.assign(e[i]),r.pe((o.x-s.x)*(a.y-n)),s.assign(a),a.assign(o);r.pe((i-s.x)*(a.y-n))})(m,m.length,t),e=t.getResult()>=0?-1:1}return e>0})();u&&m.reverse();let _=i.clone();if(_.dropAllAttributes(),u&&_.reverse(),_.setSegmentFromCoordsForStitcher(m,m.length),u&&_.reverse(),_.snapControlPoints(this.m_tolerance*this.m_tolerance),this.verifySegmentFitnessCurves(e,t,r,s,_,n,o)){this.removeSpanBetween(e,t,r);let s=e.getVertexIndex(t);return e.setSegmentToIndex(s,_),!0}return!1}approximateSpanSectionCurves(e,t,r,s,n){let m=new a.S;if(!e.querySegment(t,m,!0,!1))return;let h=r.getGeometryType();if(h!==m.get().getGeometryType()){if(h===i.G.enumEllipticArc){if(m.get().getGeometryType()!==i.G.enumRationalBezier2)return;if(0===r.projectionBehavior()){let r=[];!function(e,t,r,s,i){let n=(0,a.U)(t),o=Math.max(4*n,r);new or(t,null,o,NaN,i).approximateWithCirclesImpl(!1,s)}(0,m.get(),n,r,this.m_progressTracker);let s=e.getNextVertex(t),i=e.getPathFromVertex(t),h=new o.P,g=t;for(let t=1,n=r.length;t<n;t++){let n=r[t],o=m.get().getCoord2D(r[t-1]),u=m.get().getCoord2D((0,l.r)(r[t-1],n,.5));m.get().queryCoord(n,h);let _=h.getXY(),p=new a.l;p.constructCircularArcThreePoint(o,_,u);let d=-1;n<1&&(d=e.insertVertex(i,s,h)),e.setSegmentToIndex(e.getVertexIndex(g),p),g=d}return}{let r=(0,l.d)(l.P,3);m.get().queryControlPoints(r);let s=[0,0,0];m.get().queryWeights(s);let i=(0,a.J)(s),n=new a.l;return(0,a.K)(r,i*i,null,!1,n),void e.setSegmentToIndex(e.getVertexIndex(t),n)}}(0,i.d)("approximate_span_section_")}}verifySegmentFitnessCurves(e,t,r,s,i,n,o){let m=e.getXY(t),h=e.getXY(r);if(!m.isEqualPoint2D(i.getStartXY())||!h.isEqualPoint2D(i.getEndXY()))return 0;let g=0;if(i.isClosed()){let e=i.getCoord2D(.1).sub(m);g=i.getCoord2D(.7).sub(m).crossProduct(e)>=0?1:-1}let u=(0,l.c)(a.N.s_maxMonotonicPartParams,NaN),_=i.getMonotonicPartParams(u.length,u);_--;let p=new a.L,d=[1,.5,.75,.25],c=0,f=t,x=m.clone();for(;;){let t=e.getNextVertex(f),s=e.getSegment(f);null===s&&(e.queryLineConnector(f,p,!0),s=p);for(let e=+(t===r);e<d.length;e++){let t=s.getCoord2D(d[e]);if(!i.isCloserThanDistance(t,l.E.unit(),o))return 0}if(_>1)for(let e=1;e<_;){let t=i.getCoord2D(u[e]);s.isCloserThanDistance(t,l.E.unit(),o)?(u[_-1]=(0,l.s)(u[e],u[e]=u[_-1]),_--):e++}if(g){let e=s.getCoord2D(.25);c+=e.sub(m).crossProduct(x.sub(m)),x.assign(e),e.assign(s.getCoord2D(.75)),c+=e.sub(m).crossProduct(x.sub(m)),x.assign(e)}if(f=t,f===r)return _>1?0:g?c<0?-g:g:1}}removeSpanBetween(e,t,r){e.setSegmentToIndex(e.getVertexIndex(t),null);let s=e.getNextVertex(t);s!==r&&e.removeVertices(s,r)}static st_stitchCurvesImpl(e,t,r,s,n){if(!t.hasSegmentParentage())return;gr(t);let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;)if((0,i.m)(t.getGeometryType(a))){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r),o=t.isClosedPath(r);o&&(a+=1);let l=t.getFirstVertex(r),m=t.getSegmentParentage(l);if(o){if(-1!==m&&!t.getSegmentParentageBreakVertex(l)){let e=t.getPrevVertex(l),r=l;for(let s=0;;s++){let n=t.getSegmentParentage(e);if(m!==n){(0,i.g)(-1===n);break}if(l=e,t.getSegmentParentageBreakVertex(e))break;if(e===r){l=r,t.setSegmentParentageBreakVertex(l,!0);break}e=t.getPrevVertex(e),(0,i.g)(s<a)}}}else(0,i.g)(-1===m||t.getSegmentParentageBreakVertex(l));let h=l;for(let r=0;r<a&&-1!==h;){let o=t.getSegmentParentage(h);if(-1===o){if(r++,h=t.getNextVertex(h),h===l)break;continue}let m=0,g=-1,u=h;m=1;let _=t.getNextVertex(u);for(;r<a&&-1!==_;){r++,g=_,m++;let e=t.getSegmentParentage(_);if(-1===e||t.getSegmentParentageBreakVertex(_))break;(0,i.g)(e===o),_=t.getNextVertex(_)}if(-1===g){(0,i.g)(0);break}if(!n){let r=e.m_originalPlanarSegments[o];e.processSpan_(t,u,g,m,r,o,s)}if(h=g,h===l)break}}if(-1!==r)break;a=t.getNextGeometry(a)}else a=-1===r?t.getNextGeometry(a):-1}static st_stitchCurvesFromLinesImpl(e,t,r,s,n){let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r);t.isClosedPath(r)&&(a+=1);let o=!0,l=!1,m=t.getFirstVertex(r),h=m;for(let r=0;r<a&&-1!==h;){let g=t.getSegmentParentage(h);if(-1===g||o){o=!1,r++,h=t.getNextVertex(h),l=!0;continue}let u,_,p=0;if(l?(u=t.getPrevVertex(h),_=h,(0,i.g)(-1!==u),(0,i.g)(_!==u),(0,i.g)(-1===t.getSegmentParentage(u)||m===u)):(u=h,_=t.getNextVertex(u),r++,(0,i.g)(-1!==_),(0,i.g)(_!==u),g=t.getSegmentParentage(_)),p=2,l=!1,-1===g||t.getSegmentParentageBreakVertex(_)){h=_;continue}let d=t.getNextVertex(_);for(r++;r<a&&-1!==d;){_=d,p++;let e=t.getSegmentParentage(d);if(-1===e||t.getSegmentParentageBreakVertex(d))break;(0,i.g)(e===g),r++,d=t.getNextVertex(d)}if(!n){let r=e.m_originalPlanarSegments[g];e.processSpan_(t,u,_,p,r,g,s)}h=_}}if(-1!==r)break;a=t.getNextGeometry(a)}}static st_stitchCurvesFromCurvesImpl(e,t,r,s,n){let a=-1===r?t.getFirstGeometry():r;for(;-1!==a;)if((0,i.m)(t.getGeometryType(a))){for(let r=t.getFirstPath(a);-1!==r;r=t.getNextPath(r)){let a=t.getPathSize(r),o=t.isClosedPath(r);o&&(a+=1);let l=t.getFirstVertex(r);if(o){if(-1!==t.getSegmentParentage(l)){let e=l;for(let s=0;!t.getSegmentParentageBreakVertex(e);s++){if(s===a){l=t.getFirstVertex(r),t.setSegmentParentageBreakVertex(e,!0);break}e=t.getPrevVertex(e)}}}else(0,i.g)(-1===t.getSegmentParentage(l)||t.getSegmentParentageBreakVertex(l));let m=l;for(let r=0;r<a&&-1!==m;){let o=t.getSegmentParentage(m);if(-1===o){r++,m=t.getNextVertex(m);continue}let l=0,h=-1,g=m;l=1;let u=t.getNextVertex(g);for(;r<a&&-1!==u;){r++,h=u,l++;let e=t.getSegmentParentage(u);if(-1===e||t.getSegmentParentageBreakVertex(u))break;(0,i.g)(e===o),u=t.getNextVertex(u)}if(-1===h)break;if(!n){let r=e.m_originalPlanarSegments[o];e.processSpan_(t,g,h,l,r,o,s)}m=h}}if(-1!==r)break;a=t.getNextGeometry(a)}else a=-1===r?t.getNextGeometry(a):-1}static regularizeCurve(e,t,r,s){let i=t.snapControlPoints(s*s);if(i){let s=e.getVertexIndex(r),i=t.clone();e.setSegmentToIndex(s,i)}if(t.getGeometryType()===a.I.type){let n=[],a=t.calculateSpecialPointsForCracking(s,n);if(a>0){let o=[];if(a>1)for(let e=0;e<a;e++)if(o.push(t.getCoord2D(n[e])),e>0){let t=(Math.abs(o[e].x)+Math.abs(o[e].y))*(0,l.g)(),r=l.P.distance(o[e-1],o[e]);if(r<t&&r>0){let t=new l.P;(0,l.J)(o[e-1],o[e],.5,t),o[e-1]=t,o[e]=t}}e.splitSegment(r,n,a),i=e.snapControlPoints(r,a+1,s*s)||i;for(let t=0;t<a;t++)r=e.getNextVertex(r),e.setSegmentParentageBreakVertex(r,!0);return a}}return i?0:-1}}function fr(e,t,r,s,i){return new Er(e,r,t,s,i).do_()}function xr(e,t,r=1,s=1,i=1,n=1){if(s>n)return e;if(n>s)return t;let a=new o.P;return function(e,t,r,s,i,n,a,o,l){let m=e.equals(t);if(s>n)return a.assignCopy(e),l[0]=s,o[0]=r,m;if(n>s)return a=t,l[0]=n,o[0]=i,m;a.assignCopy(e);let h=ie(e.getXY(),t.getXY(),r,s,i,n);a.setXY(h.pt),o[0]=h.weight,l[0]=h.rank}(e,t,r,s,i,n,a,[0],[0]),a}function Pr(e,t,r){return Er.fixCurveTwoPointLoops(e,t,r)}function yr(e){return(0,o.f)(e)}class Er{m_shape;m_progressTracker;m_tolerance;m_bFilterDegenerateSegments;m_bTrackChanges;m_progressCounter;constructor(e,t,r,s,i){this.m_shape=e,this.m_progressTracker=t,this.m_tolerance=r,this.m_bFilterDegenerateSegments=s,this.m_bTrackChanges=i,this.m_progressCounter=0}do_(){let e=new o.C(this.m_tolerance.tolerance,this.m_tolerance.resolution),t=yr(e),r=(0,o.n)(e),s=1.00001*r;r*=1.000001;let n=!1,a=this.m_shape.getTotalPointCount()+10>30?1e3:(this.m_shape.getTotalPointCount()+10)*(this.m_shape.getTotalPointCount()+10),m=this.m_shape.hasPointFeatures();for(let e=0;;e++){this.m_shape.dbgCheckSelection(),e>a&&(0,i.d)("crack_and_cluster_iteration_exceeded"),this.m_shape.dbgVerifyMonotone();let o=-1;0===e&&(o=this.firstCrack_(),n||=o>0);let l=this.cluster_(t);if(this.m_shape.dbgVerifyMonotone(),n||=l,this.m_bFilterDegenerateSegments){let e=0!==this.m_shape.filterClosePoints(t,!0,!1,this.m_bTrackChanges,-1);n||=e,this.m_shape.dbgVerifyMonotone()}let h=this.m_shape.snapControlPointsOnSelection(s*s);n||=h,this.m_shape.dbgCheckSelection();let g=!1;if((0===e&&-1===o||m||Ie(!0,this.m_shape,r,null,this.m_progressTracker))&&(g=this.crack_(s),n||=g,this.m_shape.dbgVerifyMonotone()),!g&&!Er.fixCurveTwoPointLoops(this.m_shape,t,this.m_progressTracker)){this.m_shape.dbgVerifyMonotone();break}}return n&&function(e){if(!e.hasSegmentParentage())return;gr(e);let t=new o.a(0),r=e.queryVertexIteratorOnSelection();for(let e=r.next();-1!==e;e=r.next())t.add(e);if(0===t.size())return;e.sortVerticesSimpleByY(t,0,t.size()),t.add(-1);let s=l.P.getNAN();e.queryXY(t.read(0),s);let i=0,n=l.P.getNAN();for(let r=1,a=t.size();r<a;r++){{let s=t.read(r);-1===s?n.setNAN():e.queryXY(s,n)}if(!n.isEqualPoint2D(s)){if(r-i>1){let s=!1;for(let n=i;n<r;++n){let r=t.read(n);if(e.getSegmentParentageBreakVertex(r)){s=!0;break}}if(!s){let n=(t,r,s)=>{let i=e.getPrevVertex(t),n=e.getNextVertex(t);-1===i?r.setNAN():r.assign(e.getXY(i)),-1===n?s.setNAN():s.assign(e.getXY(n))},a=new l.P,o=new l.P;n(t.read(i),a,o);for(let e=i+1;e<r;++e){let r=t.read(e);if(-1===r)continue;let i=new l.P,m=new l.P;n(r,i,m);let h=(e,t)=>!!(e.equals(t)||e.isNAN()&&t.isNAN());if(!(h(i,a)&&h(m,o)||h(m,a)&&h(i,o))){s=!0;break}}}if(s)for(let s=i;s<r;++s)e.setSegmentParentageBreakVertex(t.read(s),!0)}s.setCoordsPoint2D(n),i=r}}}(this.m_shape),n}cluster_(e){return re(this.m_shape,e,-1,this.m_bTrackChanges,this.m_progressTracker)}crack_(e){return function(e,t,r,s){if(!Ce(e))return!1;let i=new Ge(s);i.m_shape=e,i.m_tolerance=t,i.m_bTrackChanges=r;let n=!1,a=e.hasCurves()?5:15;return n=e.getTotalPointCount()<a?i.crackBruteForce_():i.crackerPlaneSweep_(),n}(this.m_shape,e,this.m_bTrackChanges,this.m_progressTracker)}static fixCurveTwoPointLoops(e,t,r){if(!e.hasCurves())return!1;e.dbgVerifyCurves();let s=e.createUserIndexUninitialized(),n=new o.a(0),a=e.queryVertexIteratorOnSelection();for(let t=a.next();-1!==t;t=a.next())n.add(t),e.setUserIndex(t,s,-1);if(0===n.size())return!1;n.add(-1),e.sortVerticesSimpleByY(n,0,n.size()-1);let m=0,h=e.getXY(n.read(m)),g=new l.P(NaN,NaN),u=[];for(let t=1,r=n.size();t<r;++t){let r=n.read(t),i=-1===r?g:e.getXY(r);if(i.equals(h))continue;let a=[];for(let r=m;r<t;r++){let t=n.read(r),i=e.getPrevVertex(t);if(-1!==i&&-1===e.getUserIndex(i,s)){let t=Sr(e.getXY(i),e.getSegment(i));0!==l.P.sqrDistance(h,t.otherPt)&&(t.vert=i,t.dir=-1,a.push(t)),e.setUserIndex(i,s,1)}let o=e.getNextVertex(t);if(-1!==o&&-1===e.getUserIndex(t,s)){let r=Sr(e.getXY(o),e.getSegment(t));0!==l.P.sqrDistance(h,r.otherPt)&&(r.vert=t,r.dir=1,a.push(r)),e.setUserIndex(t,s,1)}}if(a.length>1){a.sort((e,t)=>Ir(e,t));let e=Sr(g.clone(),null);a.push(e);let t=0;for(let e=1,r=a.length;e<r;e++)if(!a[e].otherPt.equals(a[e-1].otherPt)){if(e-t>1&&null!==a[t].seg){let r=!1,s=t;for(let i=t+1;i<e;i++)if(!Cr(a[s],a[i])){r=!0;break}if(r)for(let r=t;r<e&&null!==a[r].seg;r++)u.push(a[r].vert)}t=e}}m=t,h.setCoordsPoint2D(i)}for(let r of u){let s=e.getSegment(r);(0,i.g)(null!==s);let n=e.getXY(r),a=e.getXY(e.getNextVertex(r));if(l.P.distance(n,a)<3*t)e.setSegmentToIndex(e.getVertexIndex(r),null);else{let t=s.lengthToT(.5*s.calculateLength2D());e.splitSegment(r,[t],1)}}return e.removeUserIndex(s),u.length>0}firstCrack_(){let e=this.m_shape.getEnvelope2D(this.m_progressTracker),t=(0,o.c)(null,e,!0).total();if(4*t<this.m_tolerance.total()){let e=!1,r=1.1*t,s=t,i=this.cluster_(r);e||=i;let n=0;this.m_bFilterDegenerateSegments&&(n=this.m_shape.filterClosePoints(0,!0,!1,this.m_bTrackChanges,-1));let a=this.crack_(s);return e||=a,e?1:n?2:0}return-1}progress_(e=!1){this.m_progressCounter++,(e||!(4095&this.m_progressCounter))&&(this.m_progressCounter=0)}}function Sr(e,t){return{otherPt:e,seg:t,vert:-1,dir:0}}function Cr(e,t){if((0,i.g)(e.otherPt.equals(t.otherPt)),null===e.seg)return null===t.seg;if(null===t.seg)return!1;let r=e.seg.getGeometryType();if(r!==t.seg.getGeometryType())return!1;if(r===i.G.enumBezier){let r=e.seg,s=t.seg,i=r.getControlPoint1(),n=r.getControlPoint2();-1===e.dir&&(n=(0,l.s)(i,i=n));let a=s.getControlPoint1(),o=s.getControlPoint2();return-1===t.dir&&(o=(0,l.s)(a,a=o)),i.equals(a)&&n.equals(o)}if(r===i.G.enumRationalBezier2){let r=e.seg,s=t.seg,i=r.getControlPoint1(),n=s.getControlPoint1();if(!i.equals(n))return!1;let a=[0,0,0];r.queryWeights(a),-1===e.dir&&(a[2]=(0,l.s)(a[0],a[0]=a[2]));let o=[0,0,0];return s.queryWeights(o),-1===t.dir&&(o[2]=(0,l.s)(o[0],o[0]=o[2])),a[0]===o[0]&&a[1]===o[1]&&a[2]===o[2]}(0,i.d)("")}function Ir(e,t){let r=e.otherPt.compare(t.otherPt);return 0===r?function(e,t){if(null===e.seg||null===t.seg)return null===e.seg?null===t.seg?0:1:-1;let r=e.seg.getGeometryType(),s=t.seg.getGeometryType();return r<s?-1:+(r>s)}(e,t):r}var vr=i.j,Gr=i.h,wr=i.u;function br(e){switch(e){case 1:return 1;case 2:return 2;case 3:return 3;case 4:return 4;case 0:return 0;default:(0,i.g)(0,"unrecognized cut side")}return 3}function Tr(e,t,r,s,n,a,l){let m=new Ar(n);m.m_bOGCOutput=!0;let h=e.getGeometryType()===i.G.enumPolygon&&1===e.getFillRule()&&!(0,o.q)(s);return m.planarSimplifyImpl_(e,t,h,r,s,n,a,l)}function Nr(e,t,r,s,i,n,a,o){return new Ar(n).planarSimplifyImpl_(e,t,r,s,i,n,a,o)}function Dr(e,t,r){return function(e,t,r){let s=e.createInstance(),n=(0,l.d)(l.P,100),a=Array(100),o=e.getPointCount(),m=!0,h=2===t.getDimension();1!==t.getDimension()&&2!==t.getDimension()&&(0,i.d)("");for(let i=0;i<o;){let o=e.queryCoordinates(n,n.length,i,-1)-i;h?rr(t,n,o,r.total(),a):sr(t,n,o,r.total(),a);let l=0;for(let t=0;t<o;t++)0===a[t]&&(m&&(m=!1,s.addPoints(e,0,i)),l!==t&&s.addPoints(e,i+l,i+t),l=t+1);!m&&l!==o&&s.addPoints(e,i+l,i+o),i+=o}return m?e:s}(e,t,r)}function Vr(e,t,r,s){if(e.getDimension()>t.getDimension())return Mr(Ur(e),e,0,"^");if(e.getDimension()<t.getDimension()||e.isEmpty())return Mr(Ur(t),e,0,"^");if(t.isEmpty())return Mr(Ur(e),e,0,"^");let l=new n.Envelope2D;e.queryEnvelope(l);let m=new n.Envelope2D;t.queryEnvelope(m);let h=new n.Envelope2D;h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=new Ar(s),_=new a.E,p=_.addGeometry(Ur(e)),d=_.addGeometry(Ur(t)),c=0,f=null;if(_.hasCurves()){f=new dr;let e=_.getEnvelope2D(s);c=_r(g.total()),lr(_,ur(g.total(),e),g.total(),0,f,null,s)}u.setEditShapeCrackAndCluster(_,g);let x=u.symmetricDifference(p,d);null!==f&&f.stitchCurves(_,x,c,!0);let P=Mr(_.getGeometry(x),e,0,"^");return vr(P.getGeometryType())&&(P.getImpl().setIsSimple(4,g.total()),P.getGeometryType()===i.G.enumPolygon&&P.getImpl().updateOGCFlagsProtected()),P}function kr(e,t,r){return function(e,t,r){if(e.isEmpty())return e.createInstance();if(t.isEmpty())return e.createInstance();let s=[new l.P],n=[0],a=2===t.getDimension();return 1!==t.getDimension()&&2!==t.getDimension()&&(0,i.d)(""),s[0]=e.getXY(),a?rr(t,s,1,r.total(),n):sr(t,s,1,r.total(),n),0===n[0]?e.createInstance():e}(e,t,r)}function Fr(e,t,r,s,n,l=!1){0===t&&(0,i.b)("not enough geometries to dissolve");let m=0;for(let r=0,s=t;r<s;r++)m=Math.max(e[r].getDimension(),m);if(2===m||1===m)return new Ar(s).dissolveMultiPaths_(m,!1,e,t,r,n,l);let h=0,g=-1;for(let r=0,s=t;r<s;r++)e[r].getDimension()===m&&(-1===g&&(g=r),e[r].isEmpty()||(g=r,h++));if(h<2)return Ur(e[g]);let u=o.r.constructEmpty(),_=new a.E,p=-1;for(let r=0,s=t;r<s;r++)if(e[r].getDimension()===m&&!e[r].isEmpty()){-1===p?p=_.addGeometry(Ur(e[r])):_.appendGeometry(p,Ur(e[r]));let t=o.r.constructEmpty();e[r].queryLooseEnvelope(t),u.mergeEnv3D(t)}let d=(0,o.c)(r,u.getEnvelope2D(),!0),c=new Ar(s);if(l){let e=(0,o.t)(r,u.getEnvelopeZs(),!0);return c.planarSimplify3DImpl_(_,d,e,0,!0)}return c.m_bOGCOutput=!0,c.planarSimplifyMultiPoints(_,d,!1,-1)}function Hr(e,t,r,s,n,l=!1){t<2&&(0,i.b)("not enough geometries to dissolve");let m=0;for(let r=0,s=t;r<s;r++)m=Math.max(e[r].getDimension(),m);if(2===m||1===m)return new Ar(s).dissolveMultiPaths_(m,!0,e,t,r,n,l);let h=o.r.constructEmpty(),g=new a.E,u=-1,_=0,p=-1;for(let r=0,s=t;r<s;r++)if(e[r].getDimension()===m&&(-1===p&&(p=r),!e[r].isEmpty())){p=r,-1===u?u=g.addGeometry(Ur(e[r])):g.appendGeometry(u,Ur(e[r]));let t=o.r.constructEmpty();e[r].queryLooseEnvelope(t),h.mergeEnv3D(t),_++}if(_<2)return Ur(e[p]);let d=0===m?r:null,c=(0,o.c)(d,h.getEnvelope2D(),!0),f=new Ar(s);if(l){let e=(0,o.t)(d,h.getEnvelopeZs(),!0);return f.m_bOGCOutput=!0,f.planarSimplify3DImpl_(g,c,e,0,!0)}return f.planarSimplifyMultiPoints(g,c,!0,-1)}class Ar{m_progressTracker;m_topoGraph=null;m_maskLookup=[];m_dummyPt1=l.P.getNAN();m_dummyPt2=l.P.getNAN();m_fromEdgeForPolylines=-1;m_progressCounter=0;m_bOGCOutput=!1;constructor(e){this.m_progressTracker=e}linesToPolygonsImpl(e,t){let r=0,s=0,i=null;if(e.hasCurves()){i=new dr;let n=e.getEnvelope2D(this.m_progressTracker);s=_r(t.total());let a=ur(t.total(),n);r=pr(a,s),lr(e,a,t.total(),0,i,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,t.add(r));let n=this.m_topoGraph.createUserIndexForChains(),a=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(a,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(a);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);let o=[];for(let t=this.m_topoGraph.getFirstChain();-1!==t;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,n))continue;this.m_topoGraph.setChainUserIndex(t,n,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,n,1);if(0===this.m_topoGraph.getChainArea(t))continue;let r=this.m_topoGraph.extractPolygonFromChainAndIslands(e,-1,t,-1);i?.stitchCurves(e,r,s,!1);let a=e.getGeometry(r);o.push(a)}return new _.S(o)}autoCompleteImpl(e,t,r){let s=0,i=0,n=null;if(e.hasCurves()){n=new dr;let t=e.getEnvelope2D(this.m_progressTracker);i=_r(r.total());let a=ur(r.total(),t);s=pr(a,i),lr(e,a,r.total(),0,n,null,this.m_progressTracker)}this.setEditShapeCrackAndCluster(e,r.add(s));let a=this.m_topoGraph.getGeometryID(t),o=this.m_topoGraph.createUserIndexForChains(),l=this.m_topoGraph.getFirstChain();this.m_topoGraph.setChainUserIndex(l,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(l);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);let m=[];for(let t=this.m_topoGraph.getFirstChain();-1!==t;t=this.m_topoGraph.getChainNext(t)){if(1===this.m_topoGraph.getChainUserIndex(t,o))continue;this.m_topoGraph.setChainUserIndex(t,o,1);for(let e=this.m_topoGraph.getChainFirstIsland(t);-1!==e;e=this.m_topoGraph.getChainNextInParent(e))this.m_topoGraph.setChainUserIndex(e,o,1);if(0!==this.m_topoGraph.getChainParentage(t))continue;let r=this.m_topoGraph.getChainHalfEdge(t),s=r,l=!1;do{let e=this.m_topoGraph.getHalfEdgeTwin(s);if(this.m_topoGraph.getHalfEdgeChain(e)!==t&&0!==(this.m_topoGraph.getHalfEdgeParentage(s)&a)){l=!0;break}s=this.m_topoGraph.getHalfEdgeNext(s)}while(s!==r);if(!l||0===this.m_topoGraph.getChainArea(t))continue;let h=this.m_topoGraph.extractPolygonFromChainAndIslands(e,-1,t,-1);null!==n&&n.stitchCurves(e,h,i,!1);let g=e.getGeometry(h);m.push(g)}return new _.S(m)}setEditShape(e,t=!1){null===this.m_topoGraph&&(this.m_topoGraph=new K),this.m_topoGraph.setEditShape(e,this.m_progressTracker,!0,t)}setEditShapeCrackAndCluster(e,t){fr(e,t,this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,this.m_bOGCOutput,-1,this.m_progressTracker);this.setEditShape(e)}setHalfEdgeOrientations_(e,t){let r=this.m_topoGraph.getShape();for(let s=r.getFirstGeometry();-1!==s;s=r.getNextGeometry(s))if(s===t)for(let t=r.getFirstPath(s);-1!==t;t=r.getNextPath(t)){let s=r.getFirstVertex(t);if(-1===s)continue;let i=r.getNextVertex(s);for(;-1!==i;){let t=this.m_topoGraph.getClusterFromVertex(s),n=this.m_topoGraph.getClusterFromVertex(i),a=this.m_topoGraph.getHalfEdgeConnector(t,n);if(-1!==a){let t=this.m_topoGraph.getHalfEdgeTwin(a);this.m_topoGraph.setHalfEdgeUserIndex(a,e,1),this.m_topoGraph.setHalfEdgeUserIndex(t,e,2)}s=i,i=r.getNextVertex(s)}}}flushVertices_(e,t){let r=this.m_topoGraph.getShape(),s=r.hasSegmentParentage(),i=new a.S,n=r.insertPath(e,-1);t.push(t[0]);let o=t.length,l=-1;for(let e=0;e<o;e++){let a=t[e];if(l=r.addVertex(n,a),!s)continue;let m=this.m_topoGraph.getClusterFromVertex(a);if(e>0&&this.m_topoGraph.isBreakNode(m)&&r.setSegmentParentageBreakVertex(l,!0),e<o-1){let s=this.m_topoGraph.getHalfEdgeConnector(m,this.m_topoGraph.getClusterFromVertex(t[e+1])),n=this.m_topoGraph.getSegmentParentage(s);r.setSegmentParentageAndBreak(l,n,e>0||this.m_topoGraph.isBreakNode(m)),this.m_topoGraph.isHalfEdgeCurve(s)&&(this.m_topoGraph.querySegmentXY(s,i),r.setSegmentToIndex(r.getVertexIndex(l),i.get().clone()))}}if(s){let e=this.m_topoGraph.getClusterFromVertex(t[o-1]);this.m_topoGraph.isBreakNode(e)&&r.setSegmentParentageBreakVertex(l,!0)}r.setClosedPath(n,!0)}processPolygonCuts_(e,t,r,s){let n=this.m_topoGraph.getGeometryID(r),a=this.m_topoGraph.getGeometryID(s),o=[],l=this.m_topoGraph.getShape(),m=this.m_topoGraph.createUserIndexForHalfEdges();for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r)){let s=this.m_topoGraph.getClusterHalfEdge(r);if(-1===s)continue;let h=s;do{if(1!==this.m_topoGraph.getHalfEdgeUserIndex(h,m)){let r=h,s=h,g=!1,u=0;do{if(this.m_topoGraph.setHalfEdgeUserIndex(r,m,1),g||0!==(this.m_topoGraph.getHalfEdgeParentage(r)&a)&&0!==(this.m_topoGraph.getHalfEdgeFaceParentage(r)&n)&&(s=r,g=!0),g){let t=this.m_topoGraph.getHalfEdgeOrigin(r),s=this.m_topoGraph.getClusterVertexIterator(t),i=this.m_topoGraph.getVertexFromVertexIterator(s);o.push(i),-1!==e&&0!==(this.m_topoGraph.getHalfEdgeParentage(r)&a)&&(u|=this.m_topoGraph.getHalfEdgeUserIndex(r,e))}r=this.m_topoGraph.getHalfEdgeNext(r)}while(r!==s);if(g&&this.m_topoGraph.getChainArea(this.m_topoGraph.getHalfEdgeChain(s))>0){let e=l.createGeometry(i.G.enumPolygon);this.flushVertices_(e,o),-1!==t&&l.setGeometryUserIndex(e,t,u)}o.length=0}h=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(h))}while(h!==s)}this.m_topoGraph.deleteUserIndexForHalfEdges(m)}cutPolygonPolyline_(e,t,r,s){this.m_topoGraph.removeSpikes_();let i=-1;-1!==e&&(i=this.m_topoGraph.createUserIndexForHalfEdges(),this.setHalfEdgeOrientations_(i,r)),this.processPolygonCuts_(i,e,t,r),-1!==i&&(this.m_topoGraph.deleteUserIndexForHalfEdges(i),i=-1);let n=this.m_topoGraph.getShape();for(let e=n.getFirstGeometry();-1!==e;e=n.getNextGeometry(e))e!==t&&e!==r&&s.push(e);s.sort((e,t)=>{let r=n.getFirstPath(e),s=n.getRingArea(r),i=n.getFirstPath(t),a=n.getRingArea(i);return s<a?-1:+(s>a)})}cut(e,t,r,s,n){let a=this.m_topoGraph.getShape().getGeometryType(r),o=this.m_topoGraph.getShape().getGeometryType(s),l=(0,i.u)(a),m=(0,i.u)(o);2!==l||1!==m?1!==l||1!==m?(0,i.d)(""):new Br(this,e,t,r,s,n).Do():this.cutPolygonPolyline_(t,r,s,n)}progress_(e=!1){}isGoodParentage(e){return e>=0&&e<this.m_maskLookup.length&&this.m_maskLookup[e]}normalizeInputGeometry(e){let t=e.getGeometryType();if(t===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===i.G.enumPoint){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if((0,i.h)(t)){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==i.G.enumMultiPoint&&t!==i.G.enumPolyline&&t!==i.G.enumPolygon&&(0,i.b)("Unexpected geometry type"),e}dissolveNonSimplePolygons(e,t,r,s){(0,i.g)(t>0);let n=new a.E,o=0,l=-1;for(let r=0,s=t;r<s;r++)2===e[r].getDimension()&&(-1===l&&(l=r),e[r].isEmpty()||(o++,n.addGeometry(e[r])));return 0===o?((0,i.g)(l>=0),this.normalizeInputGeometry(e[l])):this.planarSimplifyPolygons(n,r,!0,!1,-1,!0)}dissolveMultiPaths_(e,t,r,s,m,h,g){(0,i.g)(e>=1&&e<=2),(0,i.g)(s>0);let u=8&h?1:2,_=o.r.constructEmpty(),p=0,d=-1,c=!0;for(let t=0,n=s;t<n;t++)if(r[t].getDimension()===e&&(-1===d&&(d=t),!r[t].isEmpty())){d=t,p++;let s=o.r.constructEmpty();if(r[t].queryLooseEnvelope(s),_.mergeEnv3D(s),2===e&&c&&r[t].getGeometryType()===i.G.enumPolygon)if(16&h){let e=r[t].getImpl().getIsSimple(0,[0]),s=this.m_bOGCOutput?5===e:(0,o.i)(e);c&&=s}else{let e=(0,o.j)(r[t],0);c&&=e}}if(p<2&&((0,i.g)(d>=0),0===p||!(16&h)))return this.normalizeInputGeometry(r[d]);if(!c){let e=(0,o.c)(t?null:m,_.getEnvelope2D(),!0);return this.dissolveNonSimplePolygons(r,s,e,h)}let f=r.slice(0,s),x=(0,o.c)(m,_.getEnvelope2D(),!0),P=10*(0,o.f)(x),y=new o.C(0,0);if(g&&(y=(0,o.t)(m,_.getEnvelopeZs(),!0)),1===p&&1===e&&2===u&&!t)return g?((0,i.g)(0),{}):this.m_bOGCOutput?Tr(f[d],x,!1,-1,this.m_progressTracker,u,!1):Nr(f[d],x,!1,!1,-1,this.m_progressTracker,u,!1);let E=new o.D;E.startConstruction();let S=2===e?3:4,C=0;for(let r=0,a=s;r<a;r++){if(f[r].getDimension()!==e||f[r].isEmpty())continue;let s=f[r].getGeometryType();if(s!==i.G.enumEnvelope){if((0,i.h)(s)?(f[r]=this.normalizeInputGeometry(f[r]),s=i.G.enumPolyline):(0,i.g)((0,i.j)(s)),1===e){(0,i.g)(s===i.G.enumPolyline);let e=-1;g?(0,i.g)(0,"3d not implemented yet"):e=f[r].getImpl().getIsSimple(x.total(),[0]),(this.m_bOGCOutput?5!==e:!(0,o.i)(e))&&(t?S=-1:(g?(0,i.g)(0,"3d not implemented yet"):this.m_bOGCOutput?f[r]=Tr(f[r],x,!1,-1,this.m_progressTracker,u,!1):f[r]=Nr(f[r],x,!1,!1,-1,this.m_progressTracker,u,!1),(0,i.g)((0,o.i)(f[r].getImpl().getIsSimple(x.total(),[0])))))}else{(0,i.g)(s===i.G.enumPolygon);let e=f[r].getImpl().getIsSimple(0,[0]);(0,i.g)((0,o.q)(e))}let a=f[r].getImpl();for(let e=0,t=a.getPathCount();e<t;e++){let t=n.Envelope2D.constructEmpty();a.queryLoosePathEnvelope(e,t),t.inflateCoords(P,P),E.addEnvelope(C,t),C++}}else{(0,i.g)(s===i.G.enumEnvelope);let e=n.Envelope2D.constructEmpty();f[r].queryLooseEnvelope(e),e.inflateCoords(P,P),E.addEnvelope(C,e),C++,S=-1}}E.endConstruction();let I=C,v=(0,l.c)(I,-2147483647),G=(0,l.c)(I,-1),w=0;d=-1,C=0;for(let t=0,r=s;t<r;t++){if(f[t].getDimension()!==e||(-1===d&&(d=t),f[t].isEmpty()))continue;d=t,w++;let r=f[t].getGeometryType();if((0,i.j)(r))for(let e=0,r=f[t].getPathCount();e<r;e++)G[C]=t,v[C]=-e-1,C++;else(0,i.g)(r===i.G.enumEnvelope),G[C]=t,v[C]=-1,C++}if(w<2&&2===e)return(0,i.g)(d>=0),this.normalizeInputGeometry(f[d]);let b=I;for(;E.next()&&b>0;){this.progress_();let e=E.getHandleA(),t=E.getHandleB(),r=E.getElement(e),s=E.getElement(t);G[r]!==G[s]&&(v[r]<0&&(b--,v[r]=-(v[r]+1)),v[s]<0&&(b--,v[s]=-(v[s]+1)))}let T,N=new a.E,D=!1,V=0;for(let t=0,r=s;t<r;t++){if(f[t].getDimension()!==e||f[t].isEmpty())continue;let r=f[t].getGeometryType(),s=V,n=0,o=0,l=(0,i.j)(r)?f[t]:null;for(let e=s,r=v.length;e<r&&G[e]===t;e++)v[e]>=0&&(n++,o+=l?l.getPathSize(v[e]):(0,i.v)(f[t])),V++;if(o>.95*(0,i.v)(f[t])){N.addGeometry(this.normalizeInputGeometry(f[t]));for(let e=s;e<V;e++)v[e]<0&&(v[e]=-(v[e]+1))}else{if(0===n){D=!0;continue}{D=!0,(0,i.g)((0,i.j)(r)),(0,i.g)(null!=l);let e=new a.P({vd:f[t].getDescription()}),n=new a.a({vd:f[t].getDescription()}),o=r===i.G.enumPolygon?e:n;for(let e=s;e<V;e++)v[e]>=0&&o.addPath(l,v[e],!0);N.addGeometry(o)}}}if(-1!==N.getFirstGeometry()){let r=2===e,s=t?(0,o.c)(null,_.getEnvelope2D(),!0):x,i=new o.C(0,0);if(g&&(i=t?(0,o.t)(null,_.getEnvelopeZs(),!0):y),2===e&&!(2&h)){N.collapseAllGeometriesToFirst();let e=0,t=null;if(N.hasCurves()&&!N.hasSegmentParentage()){t=new dr;let r=N.getEnvelope2D(this.m_progressTracker);e=_r(s.total()),lr(N,ur(s.total(),r),s.total(),0,t,null,this.m_progressTracker)}(function(e,t,r,s){r>0&&re(e,r,t,!1,s),new Se(s).executeImpl_(e,t)})(N,N.getFirstGeometry(),s.total(),this.m_progressTracker),null!==t&&t.stitchCurves(N,-1,e,!0)}if(g)T=this.planarSimplify3DImpl_(N,s,i,u,!0);else if(2===e)T=this.planarSimplifyPolygons(N,s,r,t,-1,!1);else{let e={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=u,T=this.planarSimplifyPolylines(N,s,t,e,-1)}D||(S=T.getImpl().getIsSimple(s.total(),[0]))}else(0,i.g)(D),(0,i.g)(d>=0),T=2===e?new a.P({vd:f[d].getDescription()}):new a.a({vd:f[d].getDescription()});if(D){let e=0;for(let t=0,r=v.length;t<r;t++){let r=G[t];if(!(r<0)&&v[t]<0){let s=f[r].getGeometryType(),n=(0,i.j)(s)?f[r]:null;if(n){let r=-(v[t]+1);e+=n.getPathSize(r)}else e+=4}}T.reserve(T.getPointCount()+e);for(let e=0,t=v.length;e<t;e++){let t=G[e];if(!(t<0)&&v[e]<0){let r=f[t].getGeometryType(),s=(0,i.j)(r)?f[t]:null;if(s){let t=-(v[e]+1);T.addPath(s,t,!0)}else r===i.G.enumEnvelope?T.addEnvelope(f[t],!1):((0,i.g)((0,i.h)(r)),T.addSegment(f[t],!0))}}}let k=0;if(2===e?-1!==S&&(S=3,k=t?0:x.total()):((0,i.g)(1===e),!t&&-1!==S&&(k=x.total())),g||T.getImpl().setIsSimple(S,k),!t&&D)if(2===e){if(!g)return(new ts).execute(T,m,!1,this.m_progressTracker);(0,i.g)(0,"3d not yet implemented")}else 1===e&&1!==u&&(T=g?((0,i.g)(0),{}):function(e,t,r,s){let n=new Ar(s),o=new a.E,l=o.addGeometry(t),m=n.planarSimplifyNoCrackingAndCluster(e,o,l,r);return(0,i.g)(m,"planar_simplify_no_cracking_and_cluster"),o.getGeometry(l)}(this.m_bOGCOutput,T,u,this.m_progressTracker),T.getImpl().setIsSimple(S,k));return T}dissolveTopoGraphCommonEdges_(){let e=this.m_topoGraph.createUserIndexForHalfEdges(),t=[];for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r)){let s=this.m_topoGraph.getClusterHalfEdge(r),i=s;if(-1!==s)do{if(this.progress_(),1!==this.m_topoGraph.getHalfEdgeUserIndex(i,e)){let r=this.m_topoGraph.getHalfEdgeTwin(i);this.m_topoGraph.setHalfEdgeUserIndex(r,e,1),this.m_topoGraph.setHalfEdgeUserIndex(i,e,1);let s=this.m_topoGraph.getHalfEdgeFaceParentage(i);if(this.isGoodParentage(s)){let e=this.m_topoGraph.getHalfEdgeFaceParentage(r);this.isGoodParentage(e)&&t.push(i)}}i=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(i))}while(i!==s)}this.m_topoGraph.deleteUserIndexForHalfEdges(e),this.m_topoGraph.deleteEdgesBreakFaces_(t)}chooseVertexByOrder(e,t,r,s){let n=(0,l.b)(),a=-1;for(let s=this.m_topoGraph.getClusterVertexIterator(e);-1!==s;s=this.m_topoGraph.incrementVertexIterator(s)){let e=this.m_topoGraph.getVertexFromVertexIterator(s),i=t.getUserIndex(e,r);i>=0&&i<n&&(n=i,a=e)}(0,i.g)(-1!==a);let o=t.getUserIndex(a,s);return o>0&&(t.setUserIndex(a,s,--o),0===o&&t.setUserIndex(a,r,-1)),a}chooseVertexFromCluster_(e,t){return this.m_topoGraph.getVertexDominantFromCluster(e,t)}chooseVertexFromVertexCluster_(e,t){return this.m_topoGraph.getVertexDominant(e,t)}collectPolygonPathsPreservingFrom_(e,t,r,s,n){let o=this.m_topoGraph.getShape();if(o.getGeometryType(e)!==i.G.enumPolygon)return;let l=o.hasSegmentParentage(),m=new a.S;for(let i=o.getFirstPath(e);-1!==i;i=o.getNextPath(i)){let e=o.getFirstVertex(i);this.m_topoGraph.getClusterFromVertex(e);let a=this.m_topoGraph.getHalfEdgeFromVertex(e);if(-1===a)continue;let h=this.m_topoGraph.getHalfEdgeUserIndex(a,r);if(1===h||2===h)continue;let g=this.m_topoGraph.getHalfEdgeFaceParentage(a);if(!this.isGoodParentage(g)){this.m_topoGraph.setHalfEdgeUserIndex(a,r,2);continue}this.m_topoGraph.setHalfEdgeUserIndex(a,r,1);let u=o.insertPath(t,-1);o.setClosedPath(u,!0);let _=a,p=e,d=this.m_topoGraph.getClusterFromVertex(p),c=1;do{this.progress_();let e,t,i=this.chooseVertexFromVertexCluster_(p,n),a=o.addVertex(u,i);if(this.m_topoGraph.isHalfEdgeCurve(_)&&(this.m_topoGraph.querySegmentXY(_,m),o.setSegmentToIndex(o.getVertexIndex(a),m.get().clone())),l){let e=this.m_topoGraph.getSegmentParentage(_);o.setSegmentParentageAndBreak(a,e,this.m_topoGraph.isBreakNode(d))}-1!==s&&this.m_topoGraph.setClusterUserIndex(d,s,1),this.m_topoGraph.setHalfEdgeUserIndex(_,r,1),_=this.m_topoGraph.getHalfEdgeNext(_);do{e=1===c?o.getNextVertex(p):o.getPrevVertex(p),t=-1===e?-1:this.m_topoGraph.getClusterFromVertex(e)}while(t===d);let h=this.m_topoGraph.getHalfEdgeOrigin(_);if(h!==t){do{e=1===c?o.getPrevVertex(p):o.getNextVertex(p),t=-1===e?-1:this.m_topoGraph.getClusterFromVertex(e)}while(t===d);if(h!==t){t=h;let r=this.m_topoGraph.getClusterVertexIterator(t);e=this.m_topoGraph.getVertexFromVertexIterator(r)}else c=-c}d=t,p=e}while(_!==a)}}topoOperationPolygonPolygonHelper_(e,t,r,s,i,n){this.progress_(!0),-1!==e&&this.collectPolygonPathsPreservingFrom_(e,r,i,n,s),-1!==t&&this.collectPolygonPathsPreservingFrom_(t,r,i,n,s);let o=new a.S,l=this.m_topoGraph.getShape();l.dbgVerifyCurves();let m=l.hasSegmentParentage();for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t)continue;let a=t;do{this.progress_();let e=this.m_topoGraph.getHalfEdgeUserIndex(a,i);if(1!==e&&2!==e){let e=this.m_topoGraph.getHalfEdgeFaceParentage(a);if(this.isGoodParentage(e)){let e=l.insertPath(r,-1);l.setClosedPath(e,!0);let t=a;do{let r=this.m_topoGraph.getHalfEdgeVertexIterator(t),a=-1;if(-1!==r)a=this.m_topoGraph.getVertexFromVertexIterator(r);else{let e=this.m_topoGraph.getHalfEdgeVertexIterator(this.m_topoGraph.getHalfEdgeTwin(t));a=this.m_topoGraph.getVertexFromVertexIterator(e),a=l.getNextVertex(a)}let h=this.chooseVertexFromVertexCluster_(a,s),g=l.addVertex(e,h);if(m){let e=this.m_topoGraph.getSegmentParentage(t),r=this.m_topoGraph.getHalfEdgeOrigin(t);l.setSegmentParentageAndBreak(g,e,this.m_topoGraph.isBreakNode(r))}if(this.m_topoGraph.isHalfEdgeCurve(t)&&(this.m_topoGraph.querySegmentXY(t,o),l.setSegmentToIndex(l.getVertexIndex(g),o.get().clone())),this.m_topoGraph.setHalfEdgeUserIndex(t,i,1),-1!==n){let e=this.m_topoGraph.getClusterFromVertex(h);this.m_topoGraph.setClusterUserIndex(e,n,1)}t=this.m_topoGraph.getHalfEdgeNext(t)}while(t!==a)}else this.m_topoGraph.setHalfEdgeUserIndex(a,i,2)}a=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(a))}while(a!==t)}}topoOperationPolygonPolygon_(e,t,r,s=!1){this.dissolveTopoGraphCommonEdges_();let n=this.m_topoGraph.getShape(),a=n.createGeometry(i.G.enumPolygon),o=this.m_topoGraph.createUserIndexForHalfEdges();return this.topoOperationPolygonPolygonHelper_(e,t,a,r,o,-1),this.m_topoGraph.deleteUserIndexForHalfEdges(o),s||He(n,a,3,this.m_bOGCOutput,-1,this.m_progressTracker),a}topoOperationPolyline_(e,t){let r={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return r.ogcRule=t,r.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(-1,e,!1,r).first}topoOperationMultiPoint_(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(i.G.enumMultiPoint),r=e.insertPath(t,-1);for(let t=this.m_topoGraph.getFirstCluster();-1!==t;t=this.m_topoGraph.getNextCluster(t)){let s=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(s)){let s=-1;for(let r=this.m_topoGraph.getClusterVertexIterator(t);-1!==r;r=this.m_topoGraph.incrementVertexIterator(r)){let t=this.m_topoGraph.getVertexFromVertexIterator(r);-1===s&&(s=t);let i=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(i);if(this.isGoodParentage(n)){s=t;break}}e.addVertex(r,s)}}return t}intersection(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=(0,i.u)(r),a=(0,i.u)(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o|l]=!0;let m=-1;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(m=e),2===n&&2===a?this.topoOperationPolygonPolygon_(e,t,m):1===n&&a>0||1===a&&n>0?this.topoOperationPolyline_(m,this.m_bOGCOutput):0===n||0===a?this.topoOperationMultiPoint_():void(0,i.d)("")}topoOperationPolygonPolygonEx(e,t,r){let s=this.m_topoGraph.getShape(),n=s.createGeometry(i.G.enumPolygon),o=s.createGeometry(i.G.enumPolyline),l=s.createGeometry(i.G.enumMultiPoint);this.dissolveTopoGraphCommonEdges_();let m=-1,h=this.m_topoGraph.createUserIndexForHalfEdges(),g=this.m_topoGraph.createUserIndexForClusters();s.dbgVerifyCurves(),this.topoOperationPolygonPolygonHelper_(e,t,n,r,h,g),s.dbgVerifyCurves();let u=s.hasSegmentParentage(),_=new a.S;for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){let t=this.m_topoGraph.getClusterHalfEdge(e);if(-1===t)continue;let i=t;do{let t=this.m_topoGraph.getHalfEdgeUserIndex(i,h),n=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(i),h),a=t|n;if(2===a){let l=this.m_topoGraph.getHalfEdgeParentage(i);if(this.isGoodParentage(l)){let m=s.insertPath(o,-1),p=i,d=this.chooseVertexFromCluster_(e,r),c=s.addVertex(m,d);if(u){let e=this.m_topoGraph.getSegmentParentage(i),t=this.m_topoGraph.getHalfEdgeOrigin(i);s.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}this.m_topoGraph.isHalfEdgeCurve(i)&&(this.m_topoGraph.querySegmentXY(i,_),s.setSegmentToIndex(s.getVertexIndex(c),_.get().clone())),this.m_topoGraph.setClusterUserIndex(e,g,1);do{this.progress_();let e=this.m_topoGraph.getHalfEdgeTo(p),o=this.chooseVertexFromCluster_(e,r);if(c=s.addVertex(m,o),u){let e=this.m_topoGraph.getSegmentParentage(i),t=this.m_topoGraph.getHalfEdgeOrigin(i);s.setSegmentParentageAndBreak(c,e,this.m_topoGraph.isBreakNode(t))}if(this.m_topoGraph.setHalfEdgeUserIndex(p,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h,1),this.m_topoGraph.setClusterUserIndex(e,g,1),p=this.m_topoGraph.getHalfEdgeNext(p),t=this.m_topoGraph.getHalfEdgeUserIndex(p,h),n=this.m_topoGraph.getHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h),a=t|n,2!==a)break;if(l=this.m_topoGraph.getHalfEdgeParentage(p),!this.isGoodParentage(l)){this.m_topoGraph.setHalfEdgeUserIndex(p,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(p),h,1);break}this.m_topoGraph.isHalfEdgeCurve(i)&&p!==i&&(this.m_topoGraph.querySegmentXY(i,_),s.setSegmentToIndex(s.getVertexIndex(c),_.get().clone()))}while(p!==i)}else this.m_topoGraph.setHalfEdgeUserIndex(i,h,1),this.m_topoGraph.setHalfEdgeUserIndex(this.m_topoGraph.getHalfEdgeTwin(i),h,1)}i=this.m_topoGraph.getHalfEdgeNext(this.m_topoGraph.getHalfEdgeTwin(i))}while(i!==t)}for(let e=this.m_topoGraph.getFirstCluster();-1!==e;e=this.m_topoGraph.getNextCluster(e)){if(this.progress_(),1===this.m_topoGraph.getClusterUserIndex(e,g))continue;let t=this.m_topoGraph.getClusterParentage(e);if(this.isGoodParentage(t)){-1===m&&(m=s.insertPath(l,-1));let t=this.m_topoGraph.getClusterVertexIterator(e),i=-1;if(-1!==t){i=this.m_topoGraph.getVertexFromVertexIterator(t);let e=this.chooseVertexFromVertexCluster_(i,r);s.addVertex(m,e)}}}this.m_topoGraph.deleteUserIndexForClusters(g),this.m_topoGraph.deleteUserIndexForHalfEdges(h),s.dbgVerifyCurves(),He(s,n,3,this.m_bOGCOutput,-1,this.m_progressTracker);let p=[-1,-1,-1];return p[0]=l,p[1]=o,p[2]=n,p}topoOperationPolylinePolylineOrPolygonEx(e,t){let r={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return r.ogcRule=t,r.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(-1,e,!0,r)}topoOperationMultiPoint(){let e=this.m_topoGraph.getShape(),t=e.createGeometry(i.G.enumMultiPoint),r=e.insertPath(t,-1);for(let t=this.m_topoGraph.getFirstCluster();-1!==t;t=this.m_topoGraph.getNextCluster(t)){let s=this.m_topoGraph.getClusterParentage(t);if(this.isGoodParentage(s)){let s=-1;for(let r=this.m_topoGraph.getClusterVertexIterator(t);-1!==r;r=this.m_topoGraph.incrementVertexIterator(r)){let t=this.m_topoGraph.getVertexFromVertexIterator(r);-1===s&&(s=t);let i=e.getGeometryFromPath(e.getPathFromVertex(t)),n=this.m_topoGraph.getGeometryID(i);if(this.isGoodParentage(n)){s=t;break}}e.addVertex(r,s)}}return t}intersectionEx(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=wr(r),a=wr(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o|l]=!0;let m=-1;if(this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(m=e),2===n&&2===a)return this.topoOperationPolygonPolygonEx(e,t,m);if(1===n&&a>0||1===a&&n>0){let{first:e,second:t}=this.topoOperationPolylinePolylineOrPolygonEx(m,this.m_bOGCOutput);return[t,e]}if(0===n||0===a){let e=[];return e.push(this.topoOperationMultiPoint()),e}(0,i.d)("")}getCombinedHalfEdgeParentage(e){return this.m_topoGraph.getHalfEdgeParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(e)|this.m_topoGraph.getHalfEdgeFaceParentage(this.m_topoGraph.getHalfEdgeTwin(e))}prevailingDirection(e,t){let r=this.getCombinedHalfEdgeParentage(t),s=this.m_topoGraph.getHalfEdgeOrigin(t),i=this.m_topoGraph.getHalfEdgeTo(t),n=0,a=0;for(let o=this.m_topoGraph.getClusterVertexIterator(s);-1!==o;o=this.m_topoGraph.incrementVertexIterator(o)){let s=this.m_topoGraph.getVertexFromVertexIterator(o),l=e.getPathFromVertex(s),m=e.getGeometryFromPath(l),h=this.m_topoGraph.getGeometryID(m),g=e.getFirstVertex(l),u=0!==(h&r);u&&g===s&&(this.m_fromEdgeForPolylines=t);let _=e.getNextVertex(s);if(-1!==_&&this.m_topoGraph.getClusterFromVertex(_)===i){if(n++,u){if(-1===this.m_fromEdgeForPolylines&&g===_){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a++}}else{let r=e.getPrevVertex(s);if(-1!==r&&this.m_topoGraph.getClusterFromVertex(r)===i&&(n--,u)){if(-1===this.m_fromEdgeForPolylines&&g===r){let e=this.m_topoGraph.getHalfEdgeNext(t);this.isGoodParentage(this.getCombinedHalfEdgeParentage(e))&&(this.m_fromEdgeForPolylines=e)}a--}}}return this.m_topoGraph.queryXY(s,this.m_dummyPt1),this.m_topoGraph.queryXY(i,this.m_dummyPt2),(0===a?n:a)*l.P.distance(this.m_dummyPt1,this.m_dummyPt2)}tryMoveThroughCrossroadBackwards(e,t){let r=this.m_topoGraph.getHalfEdgePrev(e),s=this.m_topoGraph.getHalfEdgeTwin(r);if(!t){if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e)))return-1;let t=this.m_topoGraph.getHalfEdgeTwin(e);if(s===this.m_topoGraph.getHalfEdgeNext(t))return r}let i=s,n=-1;for(;i!==e;){let e=this.getCombinedHalfEdgeParentage(i);if(this.isGoodParentage(e)){if(-1!==n)return-1;n=this.m_topoGraph.getHalfEdgeTwin(i)}i=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgePrev(i))}return n}tryMoveThroughCrossroadForward(e,t){let r=this.m_topoGraph.getHalfEdgeNext(e),s=this.m_topoGraph.getHalfEdgeTwin(r);if(!t){let t=this.m_topoGraph.getHalfEdgeTwin(e);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(t)))return-1;if(s===this.m_topoGraph.getHalfEdgePrev(t))return r}let i=s,n=-1;for(;i!==e;){let e=this.getCombinedHalfEdgeParentage(i);if(this.isGoodParentage(e)){if(-1!==n)return-1;n=this.m_topoGraph.getHalfEdgeTwin(i)}i=this.m_topoGraph.getHalfEdgeTwin(this.m_topoGraph.getHalfEdgeNext(i))}return n}isOnALoop(e,t){let r=e,s=2*this.m_topoGraph.getShape().getTotalPointCount()+10;for(let i=0;i<s;i++){if(1===this.m_topoGraph.getHalfEdgeUserIndex(r,t))return!1;let s=this.m_topoGraph.getHalfEdgeNext(r);if(s===this.m_topoGraph.getHalfEdgeTwin(r))return!1;if(r=s,r===e)return!0}(0,i.d)("is_on_a_loop_")}restorePolylineParts(e,t,r,s,n,o,m,h,g,u){(0,i.g)(-1===n&&o>=0&&m>=0||-1===o&&-1===m),(0,i.g)(-1===h&&1!==u.unsplitBehavior||-1!==h&&1===u.unsplitBehavior);let _=u.ogcRule,p=u.allCrossRoadsImpassable,d=1===u.unsplitBehavior,c=0===u.unsplitBehavior,f=this.m_topoGraph.getShape(),x=f.hasSegmentParentage(),P=e,y=this.m_topoGraph.getHalfEdgeTwin(P),E=new a.S;this.m_fromEdgeForPolylines=-1;let S=this.prevailingDirection(f,P),C=P,I=-1,v=!1,G=!1,w=!1;if(!d)for(;;){let t=this.m_topoGraph.getHalfEdgePrev(P);if(t===y){w=!0;break}let s=this.m_topoGraph.getHalfEdgeNext(y);if(this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(s))){v=!0;break}if(this.m_topoGraph.getHalfEdgeTwin(t)!==s){if(p){v=!0;break}if(P=this.tryMoveThroughCrossroadBackwards(P,!0),-1===P){v=!0;break}y=this.m_topoGraph.getHalfEdgeTwin(P)}else P=t,y=s;if(1===this.m_topoGraph.getHalfEdgeUserIndex(P,r)){w=!0;break}if(P===e){I=e,G=!0;break}let i=this.getCombinedHalfEdgeParentage(P);if(!this.isGoodParentage(i))break;C=P,S+=this.prevailingDirection(f,P)}if(-1===I){for(P=e,y=this.m_topoGraph.getHalfEdgeTwin(P),I=P;;){let e=this.m_topoGraph.getHalfEdgeNext(P),t=this.m_topoGraph.isStrongPathNode(this.m_topoGraph.getHalfEdgeOrigin(e));if(t){v=!0;break}if(e===y){w=!0;break}if(-1!==h){let e=this.m_topoGraph.getHalfEdgeOrigin(y);if(1===this.m_topoGraph.getClusterUserIndex(e,h)){v=!0;break}}let s=this.m_topoGraph.getHalfEdgePrev(y);if(this.m_topoGraph.getHalfEdgeTwin(e)!==s){if(t||p){v=!0;break}if(P=this.tryMoveThroughCrossroadForward(P,!0),-1===P){v=!0;break}y=this.m_topoGraph.getHalfEdgeTwin(P)}else P=e,y=s;if(1===this.m_topoGraph.getHalfEdgeUserIndex(P,r)){w=!0;break}let i=this.getCombinedHalfEdgeParentage(P);if(!this.isGoodParentage(i))break;I=P,S+=this.prevailingDirection(f,P)}let t=this.m_topoGraph.getHalfEdgeOrigin(C);G=this.m_topoGraph.getHalfEdgeTo(I)===t}else if(-1!==this.m_fromEdgeForPolylines){C=e,I=this.tryMoveThroughCrossroadBackwards(C,!1),(0,i.g)(-1!==I);let t=this.m_topoGraph.getHalfEdgeTwin(C);this.m_topoGraph.getHalfEdgeNext(t)}let b=G;!G&&!w&&g&&(b=this.isOnALoop(e,r),b||=this.isOnALoop(y,r));let T=S>=0,N=!1;b&&v&&(G?(N=_,T&&(N||d||c)&&C!==e&&((0,i.g)(!d),C=e,N=!1)):(d||T&&c)&&(C=e));let D=0;for(P=C;y=this.m_topoGraph.getHalfEdgeTwin(P),this.m_topoGraph.setHalfEdgeUserIndex(P,r,1),this.m_topoGraph.setHalfEdgeUserIndex(y,r,1),D++,P!==I;)P=p?this.m_topoGraph.getHalfEdgeNext(P):this.tryMoveThroughCrossroadForward(P,!1);T||(I=(0,l.s)(C,C=I),I=this.m_topoGraph.getHalfEdgeTwin(I),C=this.m_topoGraph.getHalfEdgeTwin(C));let V=f.insertPath(t,-1);P=C;let k,F=this.m_topoGraph.getHalfEdgeOrigin(C);k=-1===o?this.chooseVertexFromCluster_(F,n):this.chooseVertexByOrder(F,f,o,m),this.m_topoGraph.isStrongPathNode(F)&&f.setStrongPathStart(V,!0);let H=f.addVertex(V,k),A=H;-1!==s&&this.m_topoGraph.setClusterUserIndex(F,s,1);let M=0,U=N?Math.trunc((D+1)/2):-1,q=-1,B=!0,O=-1;for(;;){if(x){let e=this.m_topoGraph.getSegmentParentage(P),t=this.m_topoGraph.getHalfEdgeOrigin(P);f.setSegmentParentageAndBreak(A,e,B||this.m_topoGraph.isBreakNode(t))}B=!1,this.m_topoGraph.isHalfEdgeCurve(P)&&(this.m_topoGraph.querySegmentXY(P,E),f.setSegmentToIndex(f.getVertexIndex(A),E.get().clone())),-1!==q&&-1!==m&&f.addToUserIndex(q,m,-1);let e,r=p?this.m_topoGraph.getHalfEdgeNext(P):this.tryMoveThroughCrossroadForward(P,!1),i=this.m_topoGraph.getHalfEdgeTo(P);if(e=-1===o?this.chooseVertexFromCluster_(i,n):this.chooseVertexByOrder(i,f,o,m),H=f.addVertex(V,e),O=i,-1!==s&&this.m_topoGraph.setClusterUserIndex(i,s,1),x&&this.m_topoGraph.isBreakNode(i)&&f.setSegmentParentageBreakVertex(H,!0),q=e,M++,N&&M===U&&(V=f.insertPath(t,-1),H=f.addVertex(V,e),B=!0,-1!==m&&f.addToUserIndex(e,m,-1),q=-1),P===I)break;P=r,A=H}-1!==O&&this.m_topoGraph.isStrongPathNode(O)&&f.setStrongPathEnd(V,!0)}topoOperationPolylineSimplify_(e,t){return this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,t,r,s){(0,i.g)(-1===t||-1===e);let n=this.m_topoGraph.getShape(),a=t=>-1===e?-1===t?n.getFirstGeometry():n.getNextGeometry(t):-1===t?e:-1,o=n.createGeometry(i.G.enumPolyline),m=-1;r&&(m=this.m_topoGraph.createUserIndexForClusters());let h=this.m_topoGraph.createUserIndexForHalfEdges(),g=-1===t?n.createUserIndex():-1,u=-1===t?n.createUserIndex():-1,_=-1;if(1===s.unsplitBehavior){_=this.m_topoGraph.createUserIndexForClusters();for(let e=a(-1);-1!==e;e=a(e))for(let t=n.getFirstPath(e);-1!==t;t=n.getNextPath(t)){{let e=n.getFirstVertex(t),r=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(r,_,1)}if(!n.isClosedPath(t)){let e=n.getLastVertex(t),r=this.m_topoGraph.getClusterFromVertex(e);this.m_topoGraph.setClusterUserIndex(r,_,1)}}}if(-1===t){let e=0;for(let t=a(-1);-1!==t;t=a(t))for(let r=n.getFirstPath(t);-1!==r;r=n.getNextPath(r))if(n.isClosedPath(r)){let t=n.getFirstVertex(r);for(let s=0,i=n.getPathSize(r);s<i;s++,t=n.getNextVertex(t))n.setUserIndex(t,g,e++),n.setUserIndex(t,u,2)}else{let t=n.getFirstVertex(r);n.setUserIndex(t,g,e++),n.setUserIndex(t,u,1);let s=n.getNextVertex(t);for(let t=1,i=n.getPathSize(r)-1;t<i;++t)n.setUserIndex(s,g,e++),n.setUserIndex(s,u,2),s=n.getNextVertex(s);n.setUserIndex(s,g,e++),n.setUserIndex(s,u,1)}}for(let e=a(-1);-1!==e;e=a(e))for(let r=n.getFirstPath(e);-1!==r;r=n.getNextPath(r)){let e=n.getFirstVertex(r);for(let i=0,a=n.getPathSize(r);i<a;i++,e=n.getNextVertex(e)){let r=this.m_topoGraph.getHalfEdgeFromVertex(e);if(-1===r||1===this.m_topoGraph.getHalfEdgeUserIndex(r,h))continue;let n=this.getCombinedHalfEdgeParentage(r);if(this.isGoodParentage(n)){let e=0===i;this.restorePolylineParts(r,o,h,m,t,g,u,_,e,s)}}}let p=-1;if(r){p=n.createGeometry(i.G.enumMultiPoint);let e=-1;for(let r=this.m_topoGraph.getFirstCluster();-1!==r;r=this.m_topoGraph.getNextCluster(r))if(this.progress_(),1!==this.m_topoGraph.getClusterUserIndex(r,m)){let s=this.m_topoGraph.getClusterParentage(r);if(this.isGoodParentage(s)){-1===e&&(e=n.insertPath(p,-1));let s=this.m_topoGraph.getClusterVertexIterator(r);if(-1!==s){let i;this.m_topoGraph.getVertexFromVertexIterator(s),i=-1===g?this.chooseVertexFromCluster_(r,t):this.chooseVertexByOrder(r,n,g,u),n.addVertex(e,i)}}}}return-1!==u&&n.removeUserIndex(u),-1!==g&&n.removeUserIndex(g),-1!==m&&n.removeUserIndex(m),this.m_topoGraph.deleteUserIndexForHalfEdges(h),(0,l.o)(o,p)}difference(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=(0,i.u)(r),a=(0,i.u)(s);if(n>a)return e;let o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);if(this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o]=!0,2===n&&2===a){let r=-1;return this.m_topoGraph.getShape().getVertexDescription().getAttributeCount()>1&&(r=e),this.topoOperationPolygonPolygon_(e,t,r)}if(1===n&&2===a){let t={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};return t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}if(1===n&&1===a){let t={unsplitBehavior:0,allCrossRoadsImpassable:!0,ogcRule:!1};return t.ogcRule=this.m_bOGCOutput,t.unsplitBehavior=0,this.topoOperationPolylineSimplifyOrPolylineTopoHelper_(e,-1,!1,t).first}if(0===n)return this.topoOperationMultiPoint_();(0,i.d)("")}symmetricDifference(e,t){let r=this.m_topoGraph.getShape().getGeometryType(e),s=this.m_topoGraph.getShape().getGeometryType(t),n=wr(r),a=wr(s),o=this.m_topoGraph.getGeometryID(e),l=this.m_topoGraph.getGeometryID(t);return(0,i.g)(o>=0),(0,i.g)(l>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=1+(o|l),this.m_maskLookup[o]=!0,this.m_maskLookup[o]=!0,this.m_maskLookup[l]=!0,2===n&&2===a?this.topoOperationPolygonPolygon_(e,t,-1):1===n&&1===a?this.topoOperationPolyline_(-1,this.m_bOGCOutput):0===n&&0===a?this.topoOperationMultiPoint():void(0,i.d)("")}planarSimplifyNoCrackingAndCluster(e,t,r,s){this.m_bOGCOutput=e,this.m_topoGraph=new K;let n=t.getFillRule(r),a=t.getGeometryType(r);if(1!==n||a===i.G.enumMultiPoint?this.m_topoGraph.setAndSimplifyEditShapeAlternate(t,r,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeWinding(t,r,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return!1;this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let o=this.m_topoGraph.getGeometryID(r);if((0,i.g)(o>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=o+1,this.m_maskLookup[o]=!0,t.getGeometryType(r)===i.G.enumPolygon||1===n&&t.getGeometryType(r)!==i.G.enumMultiPoint){t.setFillRule(r,0);let i=this.topoOperationPolygonPolygon_(r,-1,-1);if(t.swapGeometry(i,r),t.removeGeometry(i),1===n&&this.m_bOGCOutput)return this.planarSimplifyNoCrackingAndCluster(e,t,r,s)}else if(t.getGeometryType(r)===i.G.enumPolyline){let e={unsplitBehavior:0,allCrossRoadsImpassable:!1,ogcRule:!1};e.ogcRule=this.m_bOGCOutput,e.allCrossRoadsImpassable=!0,e.unsplitBehavior=s;let i=this.topoOperationPolylineSimplify_(t.getFirstGeometry(),e);t.swapGeometry(i,r),t.removeGeometry(i)}else if(t.getGeometryType(r)===i.G.enumMultiPoint){let e=this.topoOperationMultiPoint_();t.swapGeometry(e,r),t.removeGeometry(e)}else(0,i.d)("");return!0}unsplitPolylineExact(e){return(0,i.g)(0),new a.a}planarSimplifyPolylines(e,t,r,s,n){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let r=e.getGeometryType(t);(0,i.g)(r===i.G.enumPolyline)}let a=0,o=0,l=null;if(e.hasCurves()&&!e.hasSegmentParentage()){l=new dr;let r=e.getEnvelope2D(this.m_progressTracker);o=_r(t.total());let s=ur(t.total(),r);a=pr(s,o),lr(e,s,t.total(),0,l,null,this.m_progressTracker)}{let r=yr(t.add(a));e.filterClosePoints(r,!1,!1,!1,-1)}if(this.m_topoGraph=new K,4!==n&&5!==n)if(null===l&&r){let s=new ye(this.m_progressTracker,!1);s.sweepVertical(e,t.total()),s.hadComplications()?(fr(e,t,this.m_progressTracker,!0,!1),r=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else fr(e,t.add(a),this.m_progressTracker,!0,!1),r=!1;else r=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let m=e.getFirstGeometry();if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,m,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(r&&null===l),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolylines(e,t,!1,s,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let h=this.m_topoGraph.getGeometryID(m);(0,i.g)(h>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=h+1,this.m_maskLookup[h]=!0;let g=this.topoOperationPolylineSimplify_(e.getFirstGeometry(),s);null!==l&&l.stitchCurves(e,g,o,!0);let u=e.getGeometry(g);return r||u.getImpl().setIsSimple(4,t.total()),u}planarSimplifyMultiPoints(e,t,r,s){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let r=e.getGeometryType(t);(0,i.g)(r===i.G.enumMultiPoint)}this.m_topoGraph=new K,4!==s&&5!==s&&fr(e,t,this.m_progressTracker,!0,!1),e.removeSelection(),e.collapseAllGeometriesToFirst();let n=e.getFirstGeometry();if(this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,n,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(false),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyMultiPoints(e,t,!1,-1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let a=this.m_topoGraph.getGeometryID(n);(0,i.g)(a>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=a+1,this.m_maskLookup[a]=!0;let o=this.topoOperationMultiPoint(),l=e.getGeometry(o);return l.getImpl().setIsSimple(4,t.total()),l}planarSimplifyPolygons(e,t,r,s,n,a){for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t)){let s=e.getGeometryType(t);(0,i.g)(s===i.G.enumPolygon||s===i.G.enumPolyline&&r)}let o=0,l=0,m=null;if(e.hasCurves()&&!e.hasSegmentParentage()){m=new dr;let r=e.getEnvelope2D(this.m_progressTracker);l=_r(t.total());let s=ur(t.total(),r);o=pr(s,l),lr(e,s,t.total(),0,m,null,this.m_progressTracker)}if(a){fr(e,t.add(o),this.m_progressTracker,!0,!1);for(let t=e.getFirstGeometry();-1!==t;t=e.getNextGeometry(t))e.getGeometryType(t)===i.G.enumPolygon&&He(e,t,-1,!1,-1,this.m_progressTracker)}if(this.m_topoGraph=new K,a||4===n||5===n)s=!1;else if(null===m&&s){let r=new ye(this.m_progressTracker,!1);r.sweepVertical(e,t.total()),r.hadComplications()?(fr(e,t,this.m_progressTracker,!0,!1),s=!1):this.m_topoGraph.setCheckDirtyPlanesweepTolerance(t.total())}else fr(e,t.add(o),this.m_progressTracker,!0,!1),s=!1;e.removeSelection(),e.collapseAllGeometriesToFirst();let h=e.getFirstGeometry();if(r?this.m_topoGraph.setAndSimplifyEditShapeWinding(e,h,this.m_progressTracker):this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,h,this.m_progressTracker),this.m_topoGraph.dirtyCheckFailed())return(0,i.g)(s&&null===m),this.m_topoGraph.removeShape(),this.m_topoGraph=null,this.planarSimplifyPolygons(e,t,r,!1,-1,!1);this.m_topoGraph.setCheckDirtyPlanesweepTolerance(NaN);let g=this.m_topoGraph.getGeometryID(h);(0,i.g)(g>=0),this.m_maskLookup.length=0,this.m_maskLookup.length=g+1,this.m_maskLookup[g]=!0,e.setFillRule(h,0);let u=this.m_bOGCOutput&&r,_=u,p=this.topoOperationPolygonPolygon_(h,-1,-1,_);u&&(this.m_topoGraph.removeShape(),this.m_topoGraph=null,e.removeGeometry(h),this.m_topoGraph=new K,this.m_topoGraph.setAndSimplifyEditShapeAlternate(e,p,this.m_progressTracker),p=this.topoOperationPolygonPolygon_(p,-1,-1,!1)),null!==m&&m.stitchCurves(e,p,l,!0);let d=e.getGeometry(p);return d.setFillRule(0),s?d.getImpl().setIsSimple(3,0):(d.getImpl().setIsSimple(4,t.total()),d.getImpl().updateOGCFlagsProtected()),d}planarSimplify3DImpl_(e,t,r,s,n){return(0,i.g)(0),{}}planarSimplifyImpl_(e,t,r,s,n,l,m,h){if(e.isEmpty())return e.clone();let g=e.getGeometryType(),u=new a.E,_=u.addGeometry(e);if((0,o.q)(n)&&g===i.G.enumPolygon&&(r=!1,u.setFillRule(_,0)),h&&(e.hasAttribute(1)&&u.replaceNaNs(1,0),u.removeNaNVertices()),g===i.G.enumPolygon||g===i.G.enumPolyline&&r)return this.planarSimplifyPolygons(u,t,r,s,n,!1);if(g===a.a.type){let e={unsplitBehavior:0,allCrossRoadsImpassable:!0,ogcRule:!1};return e.ogcRule=this.m_bOGCOutput,e.unsplitBehavior=m,this.planarSimplifyPolylines(u,t,s,e,n)}if(g===i.G.enumMultiPoint)return this.planarSimplifyMultiPoints(u,t,s,n);(0,i.d)("what else?")}}function Mr(e,t,r,s){let n=e.getGeometryType();if(n===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(n===i.G.enumPoint&&("|"===s||"^"===s)){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(n===i.G.enumLine){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}if(n===i.G.enumMultiPoint&&"-"===s&&t.getGeometryType()===i.G.enumPoint){let t=new o.P({vd:e.getDescription()});return e.isEmpty()||e.getPointByVal(0,t),t}if(n===i.G.enumMultiPoint&&"&"===s&&t.getGeometryType()===i.G.enumPoint){let t=new o.P({vd:e.getDescription()});return e.isEmpty()||e.getPointByVal(0,t),t}return e}function Ur(e){let t=e.getGeometryType();if(t===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(t===i.G.enumPoint){let t=new a.M({vd:e.getDescription()});return e.isEmpty()||t.add(e),t}if(Gr(t)){let t=new a.a({vd:e.getDescription()});return e.isEmpty()||t.addSegment(e,!0),t}return t!==i.G.enumMultiPoint&&t!==i.G.enumPolyline&&t!==i.G.enumPolygon&&(0,i.b)("Unexpected geometry type"),e}function qr(e,t,r,s){let n=-1===r?e.getClusterHalfEdge(t):r,a=n;(0,i.g)(e.getHalfEdgeOrigin(n)===t);do{s(a),a=e.getHalfEdgeNext(e.getHalfEdgeTwin(a))}while(a!==n)}class Br{m_rParent;m_rTopoGraph;m_rShape;m_rCutHandles;m_IDCuttee;m_IDCutter;m_IDBoth;m_sideIndex;m_cutteeBreadcrumbsIndex;m_clusterParentageIndex;m_cuttee;m_cutter;m_bConsiderTouch;constructor(e,t,r,s,i,n){this.m_rParent=e,this.m_rTopoGraph=e.m_topoGraph,this.m_rShape=this.m_rTopoGraph.getShape(),this.m_IDCuttee=this.m_rTopoGraph.getGeometryID(s),this.m_IDCutter=this.m_rTopoGraph.getGeometryID(i),this.m_IDBoth=this.m_IDCuttee|this.m_IDCutter,this.m_bConsiderTouch=t,this.m_sideIndex=r,this.m_cuttee=s,this.m_cutter=i,this.m_rCutHandles=n,this.m_cutteeBreadcrumbsIndex=this.m_rShape.createUserIndexUninitialized(),this.m_clusterParentageIndex=this.m_rShape.createUserIndexUninitialized();for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let t=0,r=this.m_rShape.getPathSize(e);for(let s=this.m_rShape.getFirstVertex(e);t<r;t++,s=this.m_rShape.getNextVertex(s))this.m_rShape.setUserIndex(s,this.m_clusterParentageIndex,this.m_rTopoGraph.getClusterParentage(this.m_rTopoGraph.getClusterFromVertex(s)))}}Do(){this.cutPolylinePolyline_(),this.m_rShape.removeUserIndex(this.m_cutteeBreadcrumbsIndex),this.m_rShape.removeUserIndex(this.m_clusterParentageIndex)}setTbd(e){return 8|e}classifyStandardCut(e,t,r,s){let i=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=-1===i?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i)),o=-1===n?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),m=this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s)),h=1,g=32,u=32;if(qr(this.m_rTopoGraph,t,m,e=>{e===l&&(h=2),e===a&&(g=h),e===o&&(u=h)}),this.m_bConsiderTouch)32!==g&&this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|g),32!==u&&this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u);else{if(32===g||32===u||g===u&&a!==l&&a!==m&&o!==l&&o!==m)return 1;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|g),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|u)}return 0}classifyTouchCut(e,t,r,s){let i=this.m_rShape.getPrevVertex(e),n=this.m_rShape.getNextVertex(e),a=-1===i?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(i)),o=-1===n?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(n)),l=-1===r?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(r)),m=-1===s?-1:this.m_rTopoGraph.getHalfEdgeConnector(t,this.m_rTopoGraph.getClusterFromVertex(s));if(!this.m_bConsiderTouch){let t;return(t=l===a||m===a)?this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))):(t=l===o||m===o)&&this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),+!t}if(-1===a)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(-1===o)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;if(a===o)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(-1!==m){if(a===m)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===m)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;let r=1;qr(this.m_rTopoGraph,t,m,t=>{if(t===a){let e=this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,e),r=2}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),r=2}})}else{if(a===l)return this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex))),0;if(o===l)return this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,this.setTbd(this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex))),0;let r=2;qr(this.m_rTopoGraph,t,l,t=>{if(t===a){let e=this.m_rShape.getUserIndex(i,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(i,this.m_cutteeBreadcrumbsIndex,e),r=1}else if(t===o){let t=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex)|r;this.m_rShape.setUserIndex(e,this.m_cutteeBreadcrumbsIndex,t),r=1}})}return 0}classifyCutVertex(e,t){let r=0,s=0;for(let i=this.m_rTopoGraph.getClusterVertexIterator(t);-1!==i;i=this.m_rTopoGraph.incrementVertexIterator(i)){let n=this.m_rTopoGraph.getVertexFromVertexIterator(i);if(this.m_rShape.getGeometryFromVertex(n)===this.m_cutter){s++;let i=this.m_rShape.getPrevVertex(n),a=this.m_rShape.getNextVertex(n);r+=-1===i||-1===a?this.classifyTouchCut(e,t,i,a):this.classifyStandardCut(e,t,i,a)}}s&&r===s&&!this.m_bConsiderTouch&&this.m_rShape.setUserIndex(e,this.m_clusterParentageIndex,this.m_IDCuttee)}cutPolylinePolyline_(){this.m_rShape.getGeometryType(this.m_cuttee),this.m_rShape.getGeometryType(this.m_cutter),this.m_rParent.m_maskLookup.length=0,this.m_rParent.m_maskLookup.length=this.m_IDBoth+1,this.m_rParent.m_maskLookup[this.m_IDBoth]=!0;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let t=this.m_rShape.getPathSize(e),r=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,r=this.m_rShape.getNextVertex(r))this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,0);r=this.m_rShape.getFirstVertex(e);for(let e=0;e<t;++e,r=this.m_rShape.getNextVertex(r)){let e=this.m_rTopoGraph.getClusterFromVertex(r);this.m_rTopoGraph.getClusterParentage(e)===this.m_IDBoth&&this.classifyCutVertex(r,e)}}let e=(e,t)=>{let r=this.m_rShape.getUserIndex(e,this.m_cutteeBreadcrumbsIndex),s=this.m_rTopoGraph.getHalfEdgeConnector(this.m_rTopoGraph.getClusterFromVertex(e),this.m_rTopoGraph.getClusterFromVertex(t));return(this.m_rTopoGraph.getHalfEdgeParentage(s)&this.m_IDBoth)===this.m_IDBoth&&(r|=4),r};for(let t=this.m_rShape.getFirstPath(this.m_cuttee);-1!==t;t=this.m_rShape.getNextPath(t)){let r=this.m_rShape.getFirstVertex(t),s=this.m_rShape.isClosedPath(t),i=this.m_rShape.getPathSize(t)+ +!!s,n=1,a=32;for(let t=this.m_rShape.getNextVertex(r);n<i;++n,r=t,t=this.m_rShape.getNextVertex(t)){let s=e(r,t);this.m_rShape.getUserIndex(r,this.m_clusterParentageIndex)===this.m_IDBoth&&(a=s),32!==a&&this.m_rShape.setUserIndex(r,this.m_cutteeBreadcrumbsIndex,a|s)}r=this.m_rShape.getLastVertex(t);let o=32;n=1;for(let t=this.m_rShape.getPrevVertex(r);n<i;++n,r=t,t=this.m_rShape.getPrevVertex(t)){let s=e(t,r);this.m_rShape.getUserIndex(r,this.m_clusterParentageIndex)===this.m_IDBoth&&(o=s),32!==o&&this.m_rShape.setUserIndex(t,this.m_cutteeBreadcrumbsIndex,o|s)}}let t=-1,r=-1,s=32,n=this.m_rShape.hasSegmentParentage(),o=new a.S;for(let e=this.m_rShape.getFirstPath(this.m_cuttee);-1!==e;e=this.m_rShape.getNextPath(e)){let a=this.m_rShape.isClosedPath(e),l=this.m_rShape.getPathSize(e)+ +!!a,m=1,h=this.m_rShape.getFirstVertex(e),g=-1,u=!0;for(let e=this.m_rShape.getNextVertex(h);m<l;++m,e=this.m_rShape.getNextVertex(e)){let a=this.m_rShape.getUserIndex(h,this.m_cutteeBreadcrumbsIndex);8===a?a=3:(a&=-9,4&a?a=4:!(3&~a)&&(a=3)),a===s?this.m_rShape.getUserIndex(h,this.m_clusterParentageIndex)===this.m_IDBoth&&4!==a&&(g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),r=this.m_rShape.insertPath(t,-1),u=!0):(-1!==t&&(g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,s)),t=this.m_rShape.createGeometry(i.G.enumPolyline),r=this.m_rShape.insertPath(t,-1),s=a,u=!0),g=this.m_rShape.addVertex(r,h);let l=this.m_rTopoGraph.getClusterFromVertex(h);!u&&n&&this.m_rTopoGraph.isBreakNode(l)&&this.m_rShape.setSegmentParentageBreakVertex(g,!0);let m=this.m_rTopoGraph.getHalfEdgeFromVertex(h);if(n){let e=this.m_rTopoGraph.getSegmentParentage(m);this.m_rShape.setSegmentParentageAndBreak(g,e,u||this.m_rTopoGraph.isBreakNode(l))}this.m_rTopoGraph.isHalfEdgeCurve(m)&&(this.m_rTopoGraph.querySegmentXY(m,o),this.m_rShape.setSegmentToIndex(this.m_rShape.getVertexIndex(g),o.get().clone())),h=e,u=!1}g=this.m_rShape.addVertex(r,h),n&&this.m_rTopoGraph.isBreakNode(this.m_rTopoGraph.getClusterFromVertex(h))&&this.m_rShape.setSegmentParentageBreakVertex(g,!0),this.m_rCutHandles.push(t),this.m_rShape.setGeometryUserIndex(t,this.m_sideIndex,s),t=-1,r=-1,s=32}}}function Or(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=new n.Envelope2D;return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Or(n,t,r,s,l)}(0,i.w)(m),(0,i.i)(m)||(0,i.a)("OGC simplify is not implemented for this geometry type");let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if(5===u||0===u)return u;let _=new es(e,t,u,l,!0);return m===i.G.enumMultiPoint||m===i.G.enumPolyline||m===i.G.enumPolygon?(u=_.isSimplePlanarImpl(),(0,o.i)(u)&&(u=5)):(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}function Yr(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=n.Envelope2D.constructEmpty();return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Yr(n,t,r,s,l)}let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if(-1!==u)return u;let _=new es(e,t,u,l,!1);return m===i.G.enumMultiPoint?u=_.multipointIsSimpleAsFeature():m===i.G.enumPolyline?u=_.polylineIsSimpleAsFeature():m===i.G.enumPolygon?u=_.polygonIsSimpleAsFeature():(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}function Xr(e,t,r,s){if(e.isEmpty())return e;let l=e.getGeometryType();if(l===i.G.enumPoint){let t=new c;if(Lr(e,t),3===t.m_reason){let t=e.clone();return t.replaceNaNs(1,0),t}return 2===t.m_reason?e.createInstance():e}if(l===i.G.enumEnvelope){let r=(0,o.e)(t,e,!0).total(),s=e,i=n.Envelope2D.constructEmpty();return s.queryEnvelope(i),i.isDegenerate(r)?s.createInstance():e}if((0,i.h)(l)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Xr(n,t,r,s)}(0,i.w)(l);let m=(0,o.e)(t,e,!1).total(),h=e.getImpl().getIsSimple(m,[0]),g=r?-1:h;if((0,o.i)(g)){if(l===i.G.enumPolygon&&0!==e.getFillRule()){let t=e.clone();return t.setFillRule(0),t}return e}if((l===i.G.enumMultiPoint||l===i.G.enumPolyline)&&g>=1)return e;let u,_=new es(e,t,g,s,!1);return l===i.G.enumMultiPoint?u=_.multipointSimplifyAsFeature():l===i.G.enumPolyline?u=_.polylineSimplifyAsFeature():l===i.G.enumPolygon?u=_.polygonSimplifyAsFeature():(0,i.d)(""),u}function Rr(e,t,r,s){if(e.isEmpty())return e;let l=e.getGeometryType();if(l===i.G.enumPoint){let t=new c;if(Lr(e,t),3===t.m_reason){let t=e.clone();return t.replaceNaNs(1,0),t}return 2===t.m_reason?e.createInstance():e}if(l===i.G.enumEnvelope){let r=e,s=new n.Envelope2D;r.queryEnvelope(s);let i=(0,o.e)(t,e,!0).total();return s.isDegenerate(i)?r.createInstance():e}if((0,i.h)(l)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Rr(n,t,r,s)}(0,i.w)(l),(0,i.i)(l)||(0,i.a)("OGC simplify is not implemented for this geometry type");let m=(0,o.e)(t,e,!1).total(),h=e.getImpl().getIsSimple(m,[0]),g=r?-1:h;if(5===g){if(l===i.G.enumPolygon&&0!==e.getFillRule()){let t=e.clone();return t.setFillRule(0),t}return e}return Tr(e,(0,o.e)(t,e,!0),!1,g,s,0,!0)}function Lr(e,t){let r=e.getX(),s=e.getY();if(!Number.isFinite(r)||!Number.isFinite(s))return t&&(t.m_reason=2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0;if(e.hasAttribute(1)){let r=e.getZ();if(!Number.isFinite(r))return t&&(t.m_reason=Number.isNaN(r)?3:2,t.m_vertexIndex1=-1,t.m_vertexIndex2=-1),0}return 5}class zr{m_segment=null;m_vertexIndex=-1;m_pathIndex=-1;m_flags=0;setReversed(e){this.m_flags&=-2,this.m_flags|=+!!e}getReversed(){return!!(1&this.m_flags)}getRightSide(){return+!this.getReversed()}}function Wr(e,t,r,s,i){return{x:e,y:t,ipath:r,ivertex:s,ipolygon:i}}function jr(e,t){return e.x===t.x&&e.y===t.y&&e.ipath===t.ipath&&e.ivertex===t.ivertex&&e.ipolygon===t.ipolygon}function Zr(e,t){e.x=t.x,e.y=t.y,e.ipath=t.ipath,e.ivertex=t.ivertex,e.ipolygon=t.ipolygon}function Kr(e,t,r,s,i,n){return{x:e,y:t,ipath:r,ivertex:s,bBoundary:i,bEndPoint:n}}function Qr(e,t){e.x=t.x,e.y=t.y,e.ipath=t.ipath,e.ivertex=t.ivertex,e.bBoundary=t.bBoundary,e.bEndPoint=t.bEndPoint}class Jr extends o.F{m_helper;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=e.getElement(r),i=this.m_helper.m_xy.read(2*t)-this.m_helper.m_xy.read(2*s);return i<0?-1:+(i>0)}}class $r extends o.F{m_helper;constructor(e){super(),this.m_helper=e}compare(e,t,r){let s=e.getElement(r),i=this.m_helper.m_edges[t],n=this.m_helper.m_edges[s],a=i.getReversed(),o=n.getReversed(),l=i.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0),m=n.m_segment.intersectionOfYMonotonicWithAxisX(this.m_helper.m_yScanline,0);if(l===m){let e=a?i.m_segment.getStartY():i.m_segment.getEndY(),t=o?n.m_segment.getStartY():n.m_segment.getEndY(),r=Math.min(e,t),s=.5*(r-this.m_helper.m_yScanline)+this.m_helper.m_yScanline;s===this.m_helper.m_yScanline&&(s=r),l=i.m_segment.intersectionOfYMonotonicWithAxisX(s,0),m=n.m_segment.intersectionOfYMonotonicWithAxisX(s,0)}return l<m?-1:+(l>m)}}class es{m_description;m_geometry;m_multiVertexGeom=null;m_sr;m_toleranceIsSimpleClustering;m_toleranceIsSimpleCracking;m_toleranceIsSimple;m_toleranceSimplify;m_knownSimpleResult;m_attributeCount;m_edges=[];m_freeEdges=[];m_lineEdgesRecycle=[];m_newEdges=[];m_recycledSegIter=null;m_crossOverHelperList=new o.I;m_progressTracker=null;m_progressCounter=0;m_AET=new o.T;m_xyToNode1=null;m_xyToNode2=null;m_pathOrientations=null;m_pathParentage=null;m_unknownOrientationPathCount;m_yScanline;m_xy=null;m_pairs=[];m_pairIndices=null;m_pathsForOGCTests=[];m_curveStitcher=null;m_editShape=null;m_multiPathStitcher=null;m_bOGCRestrictions;m_bPlanarSimplify;m_nonSimpleResult=new c;constructor(e,t,r,s,i){this.m_progressCounter=0,this.m_progressTracker=s,this.m_geometry=e,this.m_knownSimpleResult=r,this.m_sr=t;let n=(0,o.e)(t,e,!1);this.m_toleranceIsSimple=n,this.m_toleranceIsSimpleClustering=(0,o.f)(n),this.m_toleranceIsSimpleCracking=(0,o.n)(n),this.m_toleranceSimplify=(0,o.e)(t,e,!0),this.m_description=this.m_geometry.getDescription(),this.m_attributeCount=this.m_description.getAttributeCount(),this.m_bOGCRestrictions=i,this.m_bPlanarSimplify=this.m_bOGCRestrictions,this.m_unknownOrientationPathCount=-1,this.m_yScanline=0,this.m_progressCounter=0}isSimplePlanarImpl(){if(this.m_bPlanarSimplify=!0,!this.checkStructure())return 0;let e=this.m_geometry.getGeometryType();return(0,i.j)(e)&&!this.checkDegenerateSegments(!1)||!this._CheckClustering()?0:(0,i.j)(e)?this._CheckCracking()?this.m_geometry.getGeometryType()===i.G.enumPolyline?this.checkSelfIntersectionsPolylinePlanar()?4:0:this._CheckSelfIntersections()?this._CheckValidRingOrientation():0:0:5}isSimplePlanarImpl3D(){return(0,i.g)(0),7}generateSortedPairs(e){let t=null;(0,i.j)(e.getGeometryType())&&(t=e);let r=(this.m_bPlanarSimplify||this.m_bOGCRestrictions)&&null!==t,s=e.getPointCount();this.m_xy=e.getAttributeStreamRef(0),this.m_pairs.length=0,this.m_pairIndices=new o.a(0),r&&(this.m_pathsForOGCTests.length=0);let n=0;for(let e=0;e<s;e++)if(this.m_pairs.push(2*e),this.m_pairs.push(2*e+1),this.m_pairIndices.add(2*e),this.m_pairIndices.add(2*e+1),r){for(;e>=t.getPathEnd(n);)n++;this.m_pathsForOGCTests.push(n)}let a=new o.B,m={parent:this,workPt:new l.P,userSort(e,t,s){s.sort(e,t,(e,t)=>this.parent.compareVerticesForPlanarClustering(e,t,r))},getValue(e){let t=this.parent.m_pairs[e],r=t>>1;return this.parent.m_xy.queryPoint2D(2*r,this.workPt),this.workPt.y+(1&t?this.parent.m_toleranceIsSimpleClustering:-this.parent.m_toleranceIsSimpleClustering)}};a.sort(this.m_pairIndices,0,2*s,m)}_TestToleranceDistancePlanar(e,t){let r=this.m_xy.read(2*e),s=this.m_xy.read(2*e+1),i=this.m_xy.read(2*t),n=this.m_xy.read(2*t+1);return!se(r,s,i,n,this.m_toleranceIsSimpleClustering*this.m_toleranceIsSimpleClustering)||0!==this.m_geometry.getDimension()&&r===i&&s===n}checkStructure(){let e=this.m_geometry.getGeometryType();if((0,i.j)(e)){let e=this.m_geometry.getImpl(),t=this.m_geometry.getGeometryType()===i.G.enumPolygon?3:2;for(let r=0,s=e.getPathCount();r<s;r++)if(e.getPathSize(r)<t){if(e.hasNonLinearSegments()&&e.hasNonLinearSegmentsPath(r)&&e.getPathSize(r)>0)continue;return this.m_nonSimpleResult=new c(1,r,0),!1}}if((0,i.i)(e)){let e=this.m_geometry.getImpl(),t=e.getAttributeStreamRef(0);for(let r=0,s=e.getPointCount();r<s;r++)if(!t.readPoint2D(2*r).isFinite())return this.m_nonSimpleResult=new c(2,r,0),!1;if(this.m_geometry.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let r=0,s=e.getPointCount();r<s;r++){let e=t.read(r);if(!Number.isFinite(e))return this.m_nonSimpleResult=Number.isNaN(e)?new c(3,r,0):new c(2,r,0),!1}}}return!0}checkDegenerateSegments(e){let t=this.m_geometry.getImpl(),r=t.querySegmentIterator(),s=t.hasAttribute(1),i=s?(0,o.o)(this.m_sr,t,!1).total():0,n=t.hasNonLinearSegments(),a=this.m_toleranceIsSimple.total();for(;r.nextPath();)for(;r.hasNextSegment();){let t=r.nextSegment(),o=t.calculateLowerLength2D();if(!(o>a||n&&t.isCurve()&&(o=t.calculateLength2D(),o>a))){if(e&&s){let e=t.getStartAttributeAsDbl(1,0),r=t.getEndAttributeAsDbl(1,0);if(Math.abs(r-e)>i)continue}return this.m_nonSimpleResult=new c(4,r.getStartPointIndex(),-1),!1}}return!0}checkDegenerateSegments3D(){return(0,i.g)(0),!1}_CheckClustering(){let e=this.m_geometry.getImpl();this.generateSortedPairs(e);let t=e.getPointCount();this.m_AET.clear(),this.m_AET.setComparator(new Jr(this)),this.m_AET.setCapacity(t);for(let e=0,r=2*t;e<r;e++){this.progress_();let t=this.m_pairIndices.read(e),r=this.m_pairs[t],s=r>>1;if(1&r){let e=this.m_AET.search(s),t=this.m_AET.getPrev(e),r=this.m_AET.getNext(e);if(this.m_AET.deleteNode(e),t!==o.T.st_nullNode()&&r!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),this.m_AET.getElement(r)))return this.m_nonSimpleResult=new c(5,this.m_AET.getElement(t),this.m_AET.getElement(r)),!1}else{let e=this.m_AET.addElement(s),t=this.m_AET.getPrev(e);if(t!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(t),s))return this.m_nonSimpleResult=new c(5,s,this.m_AET.getElement(t)),!1;let r=this.m_AET.getNext(e);if(r!==o.T.st_nullNode()&&!this._TestToleranceDistancePlanar(this.m_AET.getElement(r),s))return this.m_nonSimpleResult=new c(5,s,this.m_AET.getElement(r)),!1}}return!0}_CheckCracking(){let e=this.m_geometry.getImpl(),t=e.getPointCount();return!e.hasNonLinearSegments()&&t<10?this._CheckCrackingBrute():this._CheckCrackingPlanesweep()}_CheckCrackingPlanesweep(){if(this.m_editShape=new a.E,this.m_editShape.addGeometry(this.m_geometry),this.m_editShape.hasCurves()){this.m_curveStitcher=new dr;let e=n.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(e);let t=ur(this.m_toleranceSimplify.total(),e),r=new c;if(hr(this.m_editShape,t,this.m_toleranceSimplify.total(),0,r,this.m_curveStitcher,null,this.m_progressTracker),0!==r.m_reason)return this.m_editShape=null,this.m_nonSimpleResult.assign(r),!1}let e=new c;return Ie(!1,this.m_editShape,this.m_toleranceIsSimpleCracking,e,this.m_progressTracker)?(null==this.m_curveStitcher?(e.m_vertexIndex1=this.m_editShape.getVertexIndex(e.m_vertexIndex1),e.m_vertexIndex2=this.m_editShape.getVertexIndex(e.m_vertexIndex2)):(e.m_vertexIndex1=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,e.m_vertexIndex1),e.m_vertexIndex2=this.m_curveStitcher.getOriginalVertexIndex(this.m_editShape,e.m_vertexIndex2),this.m_curveStitcher=null),this.m_editShape=null,this.m_nonSimpleResult.assign(e),!1):(this.m_curveStitcher??(this.m_editShape=null),!0)}_CheckCrackingBrute(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),r=e.querySegmentIterator();for(;t.nextPath();)for(;t.hasNextSegment();){let e=t.nextSegment();if(!t.isLastSegmentInPath()||!t.isLastPath()){r.resetTo(t);do{for(;r.hasNextSegment();){let s=r.nextSegment(),i=(0,a.B)(!0,e,s,this.m_toleranceIsSimpleCracking,!0);if(i){let e=2===i?7:6;return this.m_nonSimpleResult=new c(e,t.getStartPointIndex(),r.getStartPointIndex()),!1}}}while(r.nextPath())}}return!0}_CheckSelfIntersections(){let e=this.m_geometry.getImpl();null!==this.m_curveStitcher&&(this.m_multiPathStitcher=this.m_editShape.getGeometry(this.m_editShape.getFirstGeometry()),e=this.m_multiPathStitcher.getImpl(),this.generateSortedPairs(e)),this.m_edges.length=0,this.m_lineEdgesRecycle.length=0,this.m_recycledSegIter=e.querySegmentIterator(),this.m_recycledSegIter.setCirculator(!0);let t=[],r=e.getPointCount(),s=NaN,i=0;for(let e=0,n=2*r;e<n;e++){this.progress_();let r=this.m_pairIndices.read(e),n=this.m_pairs[r];if(1&n)continue;let a=n>>1,o=this.m_xy.read(2*a),l=this.m_xy.read(2*a+1);if(t.length&&(o!==s||l!==i)){if(!this.processBunchForSelfIntersectionTest(t))return!1;t.length=0}t.push(a),s=o,i=l}return!!this.processBunchForSelfIntersectionTest(t)}checkSelfIntersectionsPolylinePlanar(){let e=this.m_geometry.getImpl(),t=[];for(let r=0,s=e.getPathCount();r<s;r++)t.push(e.isClosedPathInXYPlane(r));let r,s,i,n={x:-1,y:-1,ipath:-1,ivertex:-1,bBoundary:!1,bEndPoint:!1};{let a=this.m_pairIndices.read(0),o=this.m_pairs[a]>>1,l=this.m_xy.readPoint2D(2*o),m=this.m_pathsForOGCTests[o];r=t[m],s=e.getPathStart(m),i=e.getPathEnd(m)-1,n.bEndPoint=o===s||o===i,n.bBoundary=this.m_bOGCRestrictions?!r&&n.bEndPoint:n.bEndPoint,n.ipath=m,n.x=l.x,n.y=l.y,n.ivertex=o}for(let a=1,o=this.m_pairIndices.size();a<o;a++){let o=this.m_pairIndices.read(a),l=this.m_pairs[o];if(1&l)continue;let m=l>>1,h=this.m_xy.readPoint2D(2*m),g=this.m_pathsForOGCTests[m];g!==n.ipath&&(r=t[g],s=e.getPathStart(g),i=e.getPathEnd(g)-1);let u,_=m===s||m===i;u=this.m_bOGCRestrictions?!r&&_:_;let p=Kr(h.x,h.y,g,m,u,_);if(p.x===n.x&&p.y===n.y)if(this.m_bOGCRestrictions){if(!(p.bBoundary&&n.bBoundary||p.ipath===n.ipath&&p.bEndPoint&&n.bEndPoint))return this.m_nonSimpleResult=new c(10,p.ivertex,n.ivertex),!1}else if(!p.bEndPoint||!n.bEndPoint)return this.m_nonSimpleResult=new c(7,p.ivertex,n.ivertex),!1;Qr(n,p)}return!0}checkSelfIntersectionsPolylinePlanar3D(e){return(0,i.g)(0),!1}checkSelfIntersectionsPolygonsOGC(){let e=this.m_geometry.getImpl(),t=[],r=-1,s=!1;for(let i=0,n=e.getPathCount();i<n;i++)e.isExteriorRingOGC(i)&&(s=!1,r++,i<n-1&&(e.isExteriorRingOGC(i+1)||(s=!0))),t.push(s?r:-1);let i={x:-1,y:-1,ipath:-1,ivertex:-1,ipolygon:-1};{let e=this.m_pairIndices.read(0),r=this.m_pairs[e]>>1,s=this.m_xy.readPoint2D(2*r),n=this.m_pathsForOGCTests[r];i.ipath=n,i.x=s.x,i.y=s.y,i.ivertex=r,i.ipolygon=t[n]}let n=[];for(let e=1,r=this.m_pairIndices.size();e<r;e++){let r=this.m_pairIndices.read(e),s=this.m_pairs[r];if(1&s)continue;let a=s>>1,o=this.m_xy.readPoint2D(2*a),l=this.m_pathsForOGCTests[a],m=Wr(o.x,o.y,l,a,t[l]);if(m.x===i.x&&m.y===i.y){if(m.ipath===i.ipath)return this.m_nonSimpleResult=new c(11,m.ivertex,i.ivertex),!1;t[m.ipath]>=0&&t[m.ipath]===t[i.ipath]&&((0===n.length||!jr(n.at(-1),i))&&n.push({...i}),n.push(m))}Zr(i,m)}if(0===n.length)return!0;let a=new o.I(!0);t.fill(-1);let m=-1,h=new l.P;for(let e=0,r=n.length;e<r;e++){let r=n[e];(r.x!==h.x||r.y!==h.y)&&(m=a.createList(0),h.x=r.x,h.y=r.y);let s=t[r.ipath];-1===s&&(s=a.createList(2),t[r.ipath]=s),a.addElement(s,m),a.addElement(m,s)}let g=[];for(let e=a.getFirstList();-1!==e;e=a.getNextList(e)){let r=a.getListData(e);if(1&r||!(2&r))continue;let s=-1;for(g.push(e),g.push(-1);g.length;){let e=g.at(-1);g.pop();let t=g.at(-1);g.pop();let r=a.getListData(t);if(1&r){s=2&r?t:e;break}a.setListData(t,1|r);for(let r=a.getFirst(t);-1!==r;r=a.getNext(r)){let s=a.getData(r);s!==e&&(g.push(s),g.push(t))}}if(-1!==s){let e=t.indexOf(s);return this.m_nonSimpleResult=new c(12,e,-1),!1}}return!0}_CheckValidRingOrientation(){let e=null===this.m_multiPathStitcher?this.m_geometry.getImpl():this.m_multiPathStitcher.getImpl();if(e.calculateArea2D()<=0)return this.m_nonSimpleResult=new c(8,1===e.getPathCount()?1:-1,-1),0;if(1===e.getPathCount())return this.m_bOGCRestrictions&&!this.checkSelfIntersectionsPolygonsOGC()?0:4;this.m_pathOrientations=new o.b(e.getPathCount(),0),this.m_pathParentage=new o.a(e.getPathCount(),-1);let t=-1,r=0;for(let s=0,i=e.getPathCount();s<i;s++){let i=e.calculateRingArea2D(s);if(this.m_pathOrientations.write(s,i<0?0:8),i>0)t=s,r=i;else{if(0===i)return this.m_nonSimpleResult=new c(8,s,-1),0;if((t<0||r<Math.abs(i))&&(this.m_nonSimpleResult=new c(9,s,-1),this.m_bOGCRestrictions))return 0;this.m_pathParentage.write(s,t)}}this.m_unknownOrientationPathCount=e.getPathCount(),this.m_newEdges.length=0;let s=e.getPointCount();this.m_yScanline=NaN;let i=[];this.m_xyToNode1=new o.a(s,o.T.st_nullNode()),this.m_xyToNode2=new o.a(s,o.T.st_nullNode()),this.m_freeEdges.length=0,this.m_AET.clear(),this.m_AET.setComparator(new $r(this));for(let e=0,t=2*s;this.m_unknownOrientationPathCount>0&&e<t;e++){let t=this.m_pairIndices.read(e),r=this.m_pairs[t];if(1&r)continue;let s=r>>1,n=this.m_xy.read(2*s+1);if(n!==this.m_yScanline&&i.length){if(!this.processBunchForRingOrientationTest(i))return 0;i.length=0}i.push(s),this.m_yScanline=n}return this.m_unknownOrientationPathCount>0&&!this.processBunchForRingOrientationTest(i)?0:this.m_bOGCRestrictions?0===this.m_nonSimpleResult.m_reason&&this.checkSelfIntersectionsPolygonsOGC()?5:0:0===this.m_nonSimpleResult.m_reason?4:3}processBunchForSelfIntersectionTest(e){if(1===e.length)return!0;for(let t=0,r=e.length;t<r;t++){let r=e[t];this.m_recycledSegIter.resetToVertex(r,-1);let s=this.m_recycledSegIter.previousSegment();this.m_edges.push(this.createEdge(s,r,this.m_recycledSegIter.getPathIndex(),!0)),this.m_recycledSegIter.nextSegment();let i=this.m_recycledSegIter.nextSegment();this.m_edges.push(this.createEdge(i,r,this.m_recycledSegIter.getPathIndex(),!1))}this.m_edges.sort((e,t)=>this.edgeAngleCompare(e,t));let t=this.m_crossOverHelperList.getFirstList();-1===t&&(t=this.m_crossOverHelperList.createList(0)),this.m_crossOverHelperList.reserveNodes(this.m_edges.length);for(let e=0,r=this.m_edges.length;e<r;e++)this.m_crossOverHelperList.addElement(t,e);let r=!0,s=-1,i=-1;for(;r;){r=!1;let e=this.m_crossOverHelperList.getFirst(t);if(-1===e)break;let n=this.m_crossOverHelperList.getNext(e);for(;-1!==n;){let a=this.m_crossOverHelperList.getData(e),o=this.m_crossOverHelperList.getData(n);if(s=this.m_edges[a].m_vertexIndex,i=this.m_edges[o].m_vertexIndex,s!==i)e=n,n=this.m_crossOverHelperList.getNext(e);else if(r=!0,this.m_crossOverHelperList.deleteElement(t,e),e=this.m_crossOverHelperList.getPrev(n),n=this.m_crossOverHelperList.deleteElement(t,n),-1===n||-1===e)break}}let n=this.m_crossOverHelperList.getListSize(t);if(this.m_crossOverHelperList.clear(t),n>0)return this.m_nonSimpleResult=new c(7,s,i),!1;for(let t=0,r=e.length;t<r;t++)this.recycleEdge(this.m_edges[t]);return this.m_edges.length=0,!0}processBunchForRingOrientationTest(e){for(let t=0,r=e.length;t<r;t++){let r=e[t],s=this.m_xyToNode1.read(r);if(s!==o.T.st_nullNode()){let e=this.m_AET.getElement(s);this.m_freeEdges.push(e),this.m_AET.deleteNode(s),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode1.write(r,o.T.st_nullNode())}if(s=this.m_xyToNode2.read(r),s!==o.T.st_nullNode()){let e=this.m_AET.getElement(s);this.m_freeEdges.push(e),this.m_AET.deleteNode(s),this.recycleEdge(this.m_edges[e]),this.m_edges[e]=null,this.m_xyToNode2.write(r,o.T.st_nullNode())}}for(let t=0,r=e.length;t<r;t++){let r=e[t];this.m_recycledSegIter.resetToVertex(r,-1);let s=this.m_recycledSegIter.previousSegment();if(s.getStartY()>s.getEndY()){let e,t=this.m_recycledSegIter.getStartPointIndex(),i=this.createEdge(s,r,this.m_recycledSegIter.getPathIndex(),!0);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=i):(e=this.m_edges.length,this.m_edges.push(i));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===o.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}this.m_recycledSegIter.nextSegment();let i=this.m_recycledSegIter.nextSegment();if(i.getStartY()<i.getEndY()){let e,t=this.m_recycledSegIter.getEndPointIndex(),s=this.createEdge(i,r,this.m_recycledSegIter.getPathIndex(),!1);this.m_freeEdges.length>0?(e=this.m_freeEdges.at(-1),this.m_freeEdges.pop(),this.m_edges[e]=s):(e=this.m_edges.length,this.m_edges.push(s));let n=this.m_AET.addElement(e);this.m_xyToNode1.read(t)===o.T.st_nullNode()?this.m_xyToNode1.write(t,n):this.m_xyToNode2.write(t,n),3&this.m_pathOrientations.read(this.m_recycledSegIter.getPathIndex())||this.m_newEdges.push(n)}}for(let e=0,t=this.m_newEdges.length;e<t&&this.m_unknownOrientationPathCount>0;e++){let t=this.m_newEdges[e],r=this.m_AET.getElement(t),s=this.m_edges[r].m_pathIndex;if(!(3&this.m_pathOrientations.read(s))){let e=-1,r=this.m_AET.getPrev(t),s=t,i=0;{let t=-1,n=null,a=-1,l=0;for(;r!==o.T.st_nullNode()&&(t=this.m_AET.getElement(r),n=this.m_edges[t],a=n.m_pathIndex,l=this.m_pathOrientations.read(a),!(3&l));)s=r,r=this.m_AET.getPrev(r);r===o.T.st_nullNode()?(i=1,r=s):(e=1==(3&l)?a:this.m_pathParentage.read(a),i=+!n.getRightSide(),r=this.m_AET.getNext(r))}do{let t=this.m_AET.getElement(r),n=this.m_edges[t],a=n.m_pathIndex,o=this.m_pathOrientations.read(a);if(!(3&o)){if(i!==n.getRightSide())return this.m_nonSimpleResult=new c(8,a,-1),!1;let t=i&&!n.getReversed()?1:2;if(o=-4&o|t,this.m_pathOrientations.write(a,o),2===t&&0===this.m_nonSimpleResult.m_reason){let t=this.m_pathParentage.read(a);if(t!==e&&(this.m_nonSimpleResult=new c(9,a,t),this.m_bOGCRestrictions))return!1}if(this.m_unknownOrientationPathCount--,!this.m_unknownOrientationPathCount)return!0}e=1==(3&o)?a:this.m_pathParentage.read(a),s=r,r=this.m_AET.getNext(r),i=+!i}while(s!==t)}}return this.m_newEdges.length=0,!0}createEdge(e,t,r,s){let n;return e.getGeometryType()===i.G.enumLine?n=this.createEdgeLine(e):(n=new zr,n.m_segment=e.clone()),n.m_vertexIndex=t,n.m_pathIndex=r,n.m_flags=0,n.setReversed(s),n}createEdgeLine(e){let t;return this.m_lineEdgesRecycle.length>0?(t=this.m_lineEdgesRecycle.at(-1),this.m_lineEdgesRecycle.pop(),e.copyTo(t.m_segment)):(t=new zr,t.m_segment=e.clone()),t}recycleEdge(e){e.m_segment.getGeometryType()===i.G.enumLine&&this.m_lineEdgesRecycle.push(e)}static isShortSegment(e,t,r,s){let i=e.calculateLowerLength2D();if(i<=r){let n=!0;if(e.isCurve()&&(i=e.calculateLength2D(),n=i<=r),n){if(t){let t=e.getEndAttributeAsDbl(1,0);Number.isNaN(t)&&(t=0);let r=e.getStartAttributeAsDbl(1,0);return Number.isNaN(r)&&(r=0),Math.abs(r-t)<=s}return!0}return!1}return!1}static isShortSegmentPoints(e,t,r,s,i){if(r){let r=e.getXYZ(),n=t.getXYZ();return(0,o.p)(r,n,s,i)}{let r=e.getXY(),i=t.getXY();return l.P.sqrDistance(r,i)<=s*s}}removeDegenerateSegmentsFromCurvedPath(e,t,r,s){let n=e.hasAttribute(1),a=e.querySegmentIterator();a.resetToPath(t),(0,i.g)(a.nextPath());let m=this.m_toleranceSimplify.total(),h=!1,g=!0,u=new o.P,_=new o.P,p=new l.P;for(;a.hasNextSegment();){this.progress_();let e=a.nextSegment();if(es.isShortSegment(e,n,m,r))if(h){if(e.queryEnd(_),es.isShortSegmentPoints(u,_,n,m,r))continue;g&&=(s.startPathPoint(u),!1),e.queryEnd(u),s.lineToPoint(u),h=!1}else p.assign(e.getStartXY()),e.queryStart(u),h=!0;else if(h)if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(p,e.getEndXY(),!1),t.setStart(u),es.isShortSegment(t,n,m,r))continue;s.addSegment(t,g),g=!1,h=!1}else{if(e.queryEnd(_),es.isShortSegmentPoints(u,_,n,m,r))continue;g&&=(s.startPathPoint(u),!1),s.lineToPoint(_),h=!1}else s.addSegment(e,g),g=!1}if(g||!h)return;e.isClosedPath(t)?e.getPointByVal(e.getPathStart(t),u):e.getPointByVal(e.getPathEnd(t)-1,u);let d=s.querySegmentIterator();d.resetToLastPath(),d.resetToLastSegment();let c=s.getDescription().getAttributeCount()>1;for((0,i.g)(d.previousPath());d.hasPreviousSegment();){let e=d.previousSegment();if(e.isCurve()){let t=e.clone();if(t.setCoordsForIntersector(e.getStartXY(),u.getXY(),!1),!es.isShortSegment(t,n,m,r)){c&&t.setEnd(u);let e=d.getEndPointIndex();for(let t=s.getPointCount()-1;t>=e;t--)s.removePoint(t);return void s.addSegment(t,!1)}}else if(e.queryStart(_),!es.isShortSegmentPoints(_,u,n,m,r)){let e=d.getEndPointIndex();for(let t=s.getPointCount()-1;t>=e;t--)s.removePoint(t);return void s.lineToPoint(u)}}s.removePath(s.getPathCount()-1)}multipointIsSimpleAsFeature(){if(!this.checkStructure())return 0;let e=this.m_geometry.getImpl();this.m_multiVertexGeom=e;let t=e.getPointCount(),r=(0,l.c)(t,0);for(let e=0;e<t;e++)r[e]=e;r.sort((e,t)=>this.compareVerticesMultiPoint(e,t));for(let e=1;e<t;e++)if(0===this.compareVerticesMultiPoint(r[e-1],r[e]))return this.m_nonSimpleResult=new c(5,r[e-1],r[e]),0;return 1}polylineIsSimpleAsFeature(){return this.checkStructure()?+!!this.checkDegenerateSegments(!0):0}polygonIsSimpleAsFeature(){return this.isSimplePlanarImpl()}multipointSimplifyAsFeature(){let e,t=this.m_geometry.getImpl(),r=es.hasNanZs(t),s=this.m_geometry;r&&(e=this.m_geometry.clone(),t=e.getImpl(),e.replaceNaNs(1,o.V.getDefaultValue(1)),s=e),this.m_multiVertexGeom=t;let i=t.getPointCount(),n=(0,l.c)(i,0);for(let e=0;e<i;e++)n[e]=e;n.sort((e,t)=>this.compareVerticesMultiPoint(e,t));let a=Array(i);a.fill(!1);let m=-1;for(let e=0;e<i;e++){let r=n[e];t.getXY(r).isFinite()&&((m<0||0!==this.compareVerticesMultiPoint(m,r))&&(a[r]=!0),m=r)}let h=this.m_geometry.createInstance(),g=0,u=0;for(let e=0;e<i;e++)a[e]?u=e+1:(g<u&&h.addPoints(s,g,u),g=e+1);return g<u&&h.addPoints(s,g,u),h.getImpl().setIsSimple(1,this.m_toleranceSimplify.total()),h}polylineSimplifyAsFeature(){let e=this.m_geometry.getImpl(),t=e.querySegmentIterator(),r=e.querySegmentIterator(),s=this.m_geometry.createInstance(),i=this.m_geometry,n=e.hasAttribute(1),a=n?(0,o.o)(this.m_sr,e,!0).total():0,m=[],h=[],g=null;n&&(g=e.getAttributeStreamRef(1));let u=new o.P,_=e.hasNonLinearSegments(),p=this.m_toleranceSimplify.total();for(;t.nextPath();){if(r.nextPath(),e.getPathSize(t.getPathIndex())<2)continue;if(_&&e.hasNonLinearSegmentsPath(t.getPathIndex())){this.removeDegenerateSegmentsFromCurvedPath(e,t.getPathIndex(),a,s);continue}r.resetToLastSegment();let o=0,d=0,c=!0,f=!0;for(;t.hasNextSegment();){this.progress_();let s=t.nextSegment(),i=r.previousSegment();if(t.getStartPointIndex()>r.getStartPointIndex())break;if(c){let r=t.getStartPointIndex();e.getXY(r).isNAN()||(c=!1,m.push(r))}if(f){let t=r.getEndPointIndex();e.getXY(t).isNAN()||(h.push(t),f=!1)}if(!c){let r=m.at(-1),i=t.getEndPointIndex();if(i-r>1){let t=new l.P;t.setSub(e.getXY(r),e.getXY(i)),o=t.length()}else o=s.calculateLength2D();if(o>p)m.push(i),o=0;else if(n){let e=g.read(r);Number.isNaN(e)&&(e=0);let t=g.read(i);Number.isNaN(t)&&(t=0),Math.abs(t-e)>a&&(m.push(i),o=0)}}if(!f){let t=h.at(-1),s=r.getStartPointIndex();if(s-t>1){let r=new l.P;r.setSub(e.getXY(t),e.getXY(s)),d=r.length()}else d=i.calculateLength2D();if(d>p)h.push(s),d=0;else if(n){let e=g.read(t);Number.isNaN(e)&&(e=0);let r=g.read(s);Number.isNaN(r)&&(r=0),Math.abs(r-e)>a&&(h.push(s),d=0)}}}if(m.length>0&&h.length>0&&(m.at(-1)<h.at(-1)?m.length>h.length?m.pop():h.pop():(m.at(-1)===h.at(-1)||h.pop(),h.pop())),h.length+m.length>=2){let e=!1;for(let t=0,r=m.length;t<r;t++)i.getPointByVal(m[t],u),e?s.lineToPoint(u):(s.startPathPoint(u),e=!0);for(let t=h.length-1;t>0;t--)i.getPointByVal(h[t],u),e?s.lineToPoint(u):(s.startPathPoint(u),e=!0);i.isClosedPath(t.getPathIndex())?s.closePathWithLine():h.length>0&&(i.getPointByVal(h[0],u),s.lineToPoint(u))}m.length=0,h.length=0}return n&&s.replaceNaNs(1,0),s.getImpl().setIsSimple(1,p),s}polygonSimplifyAsFeature(){return this.simplifyPlanar()}simplifyPlanar(){if(1===this.m_geometry.getFillRule()&&!(0,o.q)(this.m_knownSimpleResult))return Nr(this.m_geometry,this.m_toleranceSimplify,!0,!1,this.m_knownSimpleResult,this.m_progressTracker,0,!0);let e=new a.E;if(e.addGeometry(this.m_geometry),this.m_geometry.hasAttribute(1)&&e.replaceNaNs(1,0),e.removeNaNVertices(),0!==e.getTotalPointCount()){let t=null,r=0,s=0;if(e.hasCurves()){t=new dr;let i=n.Envelope2D.constructEmpty();this.m_geometry.queryEnvelope(i);let a=ur(this.m_toleranceSimplify.total(),i);r=_r(this.m_toleranceSimplify.total()),s=pr(a,r),lr(e,a,this.m_toleranceSimplify.total(),0,t,null,this.m_progressTracker)}(0,o.q)(this.m_knownSimpleResult)||fr(e,this.m_toleranceSimplify.add(s),this.m_progressTracker,!0,!1),this.m_geometry.getGeometryType()===i.G.enumPolygon&&He(e,e.getFirstGeometry(),this.m_knownSimpleResult,!1,-1,this.m_progressTracker),null!==t&&t.stitchCurves(e,e.getFirstGeometry(),r,!0)}let t=e.getGeometry(e.getFirstGeometry());return t.getGeometryType()===i.G.enumPolygon&&(t.getImpl().updateOGCFlagsProtected(),t.setFillRule(0)),t.getImpl().setIsSimple(4,this.m_toleranceSimplify.total()),t}progress_(){}static hasNanZs(e){if(e.hasAttribute(1)){let t=e.getAttributeStreamRef(1);for(let r=0,s=e.getPointCount();r<s;r++){let e=t.read(r);if(Number.isNaN(e))return!0}}return!1}compareVerticesForPlanarClustering(e,t,r){if(e===t)return 0;let s=this.m_pairs[e],i=this.m_pairs[t],n=s>>1,a=i>>1,o=this.m_xy.readPoint2D(2*n);o.y+=1&s?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let m=this.m_xy.readPoint2D(2*a);m.y+=1&i?this.m_toleranceIsSimpleClustering:-this.m_toleranceIsSimpleClustering;let h=o.compare(m);if(0===h&&r){let e=this.m_pathsForOGCTests[n]-this.m_pathsForOGCTests[a];return(0,l.h)(e)}return h}compareVerticesMultiPoint(e,t){if(e===t)return 0;let r=this.m_multiVertexGeom.getXY(e),s=this.m_multiVertexGeom.getXY(t),i=!r.isFinite(),n=!s.isFinite();if(i||n)return i<n?-1:+(i>n);if(r.y<s.y)return-1;if(r.y>s.y)return 1;if(r.x<s.x)return-1;if(r.x>s.x)return 1;for(let r=1;r<this.m_attributeCount;r++){let s=this.m_description.getSemantics(r),i=o.V.getComponentCount(s);for(let r=0;r<i;r++){let i=this.m_multiVertexGeom.getAttributeAsDbl(s,e,r),n=this.m_multiVertexGeom.getAttributeAsDbl(s,t,r),a=(0,l.t)(i,n);if(0!==a)return a}}return 0}edgeAngleCompare(e,t){if(e===t)return 0;let r=e.m_segment.getTangent(+!!e.getReversed());e.getReversed()&&r.negateThis();let s=t.m_segment.getTangent(+!!t.getReversed());t.getReversed()&&s.negateThis();let i=r.getQuarter(),n=s.getQuarter();if(n===i){let e=r.crossProduct(s);return e<0?1:e>0?-1:0}return i<n?-1:1}}class ts{getOperatorType(){return 10103}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}supportsCurves(){return!0}isSimpleAsFeature(e,t,r,s,i){let n=Yr(e,t,r,s,i);return(0,o.l)(e.getGeometryType(),n)}isSimplePlanarDONOTUSE(e,t,r,s,l){let m=function(e,t,r,s,l){if(s&&(s.m_reason=0,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),e.isEmpty())return 5;let m=e.getGeometryType();if(m===i.G.enumPoint)return Lr(e,s);let h=(0,o.e)(t,e,!1).total();if(m===i.G.enumEnvelope){let t=e,r=new n.Envelope2D;return t.queryEnvelope(r),r.isDegenerate(h)?(s&&(s.m_reason=4,s.m_vertexIndex1=-1,s.m_vertexIndex2=-1),0):5}if((0,i.h)(m)){let i=e,n=new a.a({vd:i.getDescription()});return n.addSegment(i,!0),Yr(n,t,r,s,l)}let g=e.getImpl().getIsSimple(h,[0]),u=r?-1:g;if((0,o.i)(u)||0===u)return u;let _=new es(e,t,u,l,!1);return m===i.G.enumMultiPoint||m===i.G.enumPolyline||m===i.G.enumPolygon?u=_.isSimplePlanarImpl():(0,i.d)(""),e.getImpl().setIsSimple(u,h),s&&s.assign(_.m_nonSimpleResult),u}(e,t,r,s,l);return(0,o.i)(m)}executeMany(e,t,r,s){return new rs(e,t,r,s)}execute(e,t,r,s){let n=new _.S([e]),a=this.executeMany(n,t,r,s).next();return a||(0,i.d)("null geometry"),a}}class rs extends u.G{m_inputGeometryCursor;m_spatialReference;m_progressTracker;m_index;m_bForceSimplify;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_bForceSimplify=r,this.m_index=-1,this.m_inputGeometryCursor=e,this.m_spatialReference=t}next(){let e=this.m_inputGeometryCursor.next();return e?(this.m_index=this.m_inputGeometryCursor.getGeometryID(),this.simplify(e)):null}getGeometryID(){return this.m_index}tock(){return!1}getRank(){return 1}simplify(e){if(e||(0,i.b)(""),e.getGeometryType()===i.G.enumGeometryCollection){let t=(0,a.g)(e,-1),r=(new ts).executeMany(t,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker),s=e.createInstance();for(let e=r.next();null!=e;e=r.next())s.addGeometry(e);return s}return Xr(e,this.m_spatialReference,this.m_bForceSimplify,this.m_progressTracker)}}class ss{m_intersectorGeom=null;m_sr=null;m_dimensionMask=-1;m_progressTracker=null;m_intersectorGeomType=i.G.enumUnknown;m_geomIntersectorEmptyGeom=null;constructor(e,t,r,s){this.m_intersectorGeom=e,this.m_sr=t,this.m_dimensionMask=r,this.m_progressTracker=s,this.m_intersectorGeomType=e.getGeometryType()}intersect(e){let t=this.tryFastImplementation(e);if(null!==t)return t;let r=(0,o.g)(this.m_intersectorGeom,e),s=(0,o.c)(this.m_sr,r,!0).total(),m=n.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(m);let g=n.Envelope2D.constructEmpty();e.queryEnvelope(g),m.inflateCoords(2*s,2*s),m.intersect(g),m.inflateCoords(100*s,100*s);let u=(0,h.c)(this.m_intersectorGeom,m,0,0,this.m_progressTracker),_=(0,h.c)(e,m,0,0,this.m_progressTracker);return e.getDimension()>this.m_intersectorGeom.getDimension()&&(u=(0,l.s)(_,_=u)),function(e,t,r,s){let l=n.Envelope2D.constructEmpty();e.queryEnvelope(l);let m=n.Envelope2D.constructEmpty();t.queryEnvelope(m);let h=n.Envelope2D.constructEmpty();h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=new n.Envelope2D(m),_=(0,o.f)(g);if(u.inflateCoords(_,_),!l.isIntersecting(u)){if(e.getDimension()<=t.getDimension())return Mr(Ur(e.createInstance()),e,0,"&");if(e.getDimension()>t.getDimension())return Mr(Ur(t.createInstance()),e,0,"&")}let p=new Ar(s),d=new a.E,c=d.addGeometry(Ur(e)),f=d.addGeometry(Ur(t)),x=0,P=0,y=null;if(d.hasCurves()){y=new dr;let e=d.getEnvelope2D(s);P=_r(g.total());let t=ur(g.total(),e);x=pr(t,P),lr(d,t,g.total(),0,y,null,s)}p.setEditShapeCrackAndCluster(d,g.add(x));let E=p.intersection(c,f);null!==y&&y.stitchCurves(d,E,P,!0);let S=Mr(d.getGeometry(E),e,0,"&");return vr(S.getGeometryType())&&(S.getImpl().setIsSimple(4,g.total()),S.getGeometryType()===i.G.enumPolygon&&S.getImpl().updateOGCFlagsProtected()),S}(_,u,this.m_sr,this.m_progressTracker)}intersectEx(e){let t=this.tryFastImplementation(e);if(null!==t){let r=[];return r.length=3,r[t.getDimension()]=t,this.prepareVector(e.getDescription(),this.m_dimensionMask,r)}let r=(0,o.g)(this.m_intersectorGeom,e),s=(0,o.c)(this.m_sr,r,!0).total(),m=n.Envelope2D.constructEmpty();this.m_intersectorGeom.queryEnvelope(m);let g=n.Envelope2D.constructEmpty();e.queryEnvelope(g),m.inflateCoords(2*s,2*s),m.intersect(g),m.inflateCoords(100*s,100*s);let u=(0,h.c)(this.m_intersectorGeom,m,0,0,this.m_progressTracker),_=(0,h.c)(e,m,0,0,this.m_progressTracker);e.getDimension()>this.m_intersectorGeom.getDimension()&&(u=(0,l.s)(_,_=u));let p=function(e,t,r,s){let l=[,,,],m=n.Envelope2D.constructEmpty();e.queryEnvelope(m);let h=n.Envelope2D.constructEmpty();t.queryEnvelope(h);let g=n.Envelope2D.constructEmpty();g.setCoords({env2D:m}),g.mergeEnvelope2D(h);let u=(0,o.c)(r,g,!0),_=new n.Envelope2D(h),p=(0,o.f)(u);if(_.inflateCoords(p,p),!m.isIntersecting(_)){if(e.getDimension()<=t.getDimension()){let t=Mr(Ur(e.createInstance()),e,0,"&");return l[t.getDimension()]=t,l}if(e.getDimension()>t.getDimension()){let r=Mr(Ur(t.createInstance()),e,0,"&");return l[r.getDimension()]=r,l}}let d=new Ar(s),c=new a.E,f=c.addGeometry(Ur(e)),x=c.addGeometry(Ur(t)),P=0,y=0,E=null;if(c.hasCurves()){E=new dr;let e=c.getEnvelope2D(s);y=_r(u.total());let t=ur(u.total(),e);P=pr(t,y),lr(c,t,u.total(),0,E,null,s)}d.setEditShapeCrackAndCluster(c,u.add(P)),c.dbgVerifyCurves();let S=d.intersectionEx(f,x);for(let t of S){null!==E&&E.stitchCurves(c,t,y,!1);let r=Mr(c.getGeometry(t),e,0,"&");vr(r.getGeometryType())&&(r.getImpl().setIsSimple(4,u.total()),r.getGeometryType()===i.G.enumPolygon&&r.getImpl().updateOGCFlagsProtected()),l[r.getDimension()]=r}return null!==E&&E.clearStitcher(c),l}(_,u,this.m_sr,this.m_progressTracker);return this.prepareVector(e.getDescription(),this.m_dimensionMask,p)}init(e,t,r,s=null){(0,i.g)(0)}static intersectPoints(e,t,r){let s=(0,o.g)(e,t);return function(e,t,r){return e.isEmpty()||t.isEmpty()?e.createInstance():function(e,t,r){let s=(0,o.f)(e);return se(t.getX(),t.getY(),r.getX(),r.getY(),(0,l.e)(s))}(r,e,t)?new o.P({copy:xr(e,t)}):e.createInstance()}(e,t,(0,o.c)(r,s,!0))}tryFastImplementation(e){let t=e.getGeometryType();if(this.m_intersectorGeomType===i.G.enumPoint&&t===i.G.enumPoint){let t=ss.intersectPoints(e,this.m_intersectorGeom,this.m_sr);if(-1!==this.m_dimensionMask){let e=new a.M({vd:t.getDescription()});return t.isEmpty()||e.add(t),e}return t}if(t===i.G.enumEnvelope&&this.m_intersectorGeomType===i.G.enumEnvelope&&(-1===this.m_dimensionMask||4===this.m_dimensionMask)){let t=e,r=this.m_intersectorGeom,s=new o.E({copy:t});return s.intersect(r),s}let r=(0,o.g)(e,this.m_intersectorGeom),s=(0,o.c)(this.m_sr,r,!0),l=e.isEmpty(),m=this.m_intersectorGeom.isEmpty(),g=l||m;if(!g){let t=function(e,t,r){let s=new n.Envelope2D;e.queryEnvelope(s);let a=new n.Envelope2D;t.queryEnvelope(a);let o=new n.Envelope2D(a);if(o.inflate(2*r),!o.isIntersecting(s))return 4;let l=e.getGeometryType(),m=t.getGeometryType();if(l===i.G.enumEnvelope&&s.containsEnvelope(o))return 1;if(m===i.G.enumEnvelope){let e=new n.Envelope2D(s);if(e.inflate(2*r),a.containsEnvelope(e))return 2}return 0}(this.m_intersectorGeom,e,s.total());if(4===t)g=!0;else{if(2&t)return this.m_intersectorGeom;if(1&t)return e}}if(g){let r=(0,i.u)(t),s=(0,i.u)(this.m_intersectorGeomType);return r<s?ss.ReturnEmpty(e,l):r>s||0===r&&t===i.G.enumMultiPoint&&this.m_intersectorGeomType===i.G.enumPoint?this.ReturnEmptyIntersector():ss.ReturnEmpty(e,l)}if(t===i.G.enumEnvelope&&0===(0,i.u)(this.m_intersectorGeomType)||this.m_intersectorGeomType===i.G.enumEnvelope&&0===(0,i.u)(t)){let r=t===i.G.enumEnvelope?e:this.m_intersectorGeom,a=t===i.G.enumEnvelope?this.m_intersectorGeom:e,o=n.Envelope2D.constructEmpty();return r.queryEnvelope(o),(0,h.c)(a,o,s.total(),0,this.m_progressTracker)}if(0===(0,i.u)(t)&&(0,i.u)(this.m_intersectorGeomType)>0||(0,i.u)(t)>0&&0===(0,i.u)(this.m_intersectorGeomType)){if(t===i.G.enumMultiPoint)return Dr(e,this.m_intersectorGeom,s);if(t===i.G.enumPoint)return kr(e,this.m_intersectorGeom,s);if(this.m_intersectorGeomType===i.G.enumMultiPoint)return Dr(this.m_intersectorGeom,e,s);if(this.m_intersectorGeomType===i.G.enumPoint)return kr(this.m_intersectorGeom,e,s);(0,i.d)("")}return null}ReturnEmptyIntersector(){return null===this.m_geomIntersectorEmptyGeom&&(this.m_geomIntersectorEmptyGeom=this.m_intersectorGeom.createInstance()),this.m_geomIntersectorEmptyGeom}static ReturnEmpty(e,t){return t?e:e.createInstance()}prepareVector(e,t,r){let s=0;return 1&t?(r[0]||=new a.M({vd:e}),s++):r.shift(),2&t?(r[s]||(r[s]=new a.a({vd:e})),s++):r.splice(s,1),4&t?r[s]||(r[s]=new a.P({vd:e})):r.splice(s,1),new _.S(r)}}class is extends u.G{m_inputGeoms;m_smallCursor=null;m_progressTracker;m_geomIntersector;m_index;m_dimensionMask;m_intersector;constructor(e,t,r,s,n){super(),this.m_progressTracker=s,this.m_geomIntersector=t.next(),this.m_intersector=new ss(this.m_geomIntersector,r,n,s),this.m_index=-1,this.m_inputGeoms=e,this.m_dimensionMask=n,-1!==this.m_dimensionMask&&(this.m_dimensionMask<=0||this.m_dimensionMask>7)&&(0,i.b)("bad dimension mask")}next(){if(!this.m_geomIntersector)return null;let e;if(null!==this.m_smallCursor){if(e=this.m_smallCursor.next(),e)return e;this.m_smallCursor=null}for(;e=this.m_inputGeoms.next();)return(0,i.t)(e),this.m_index=this.m_inputGeoms.getGeometryID(),-1===this.m_dimensionMask?this.m_intersector.intersect(e):(this.m_smallCursor=this.m_intersector.intersectEx(e),this.m_smallCursor.next());return null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class ns{getOperatorType(){return 1e4}accelerateGeometry(e,t,r){if(!this.canAccelerateGeometry(e))return!1;(0,o.e)(t,e,!0);let s=0;return(e.getGeometryType()===i.G.enumPolygon||e.getGeometryType()===i.G.enumPolyline)&&(0,a.y)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeAccelerator(r)),!!s}canAccelerateGeometry(e){return(0,a.y)(e)}supportsCurves(){return!0}executeMany(e,t,r,s,i=-1){return new is(e,t,r,s,i)}execute(e,t,r,s){if(e.getGeometryType()===i.G.enumPoint&&t.getGeometryType()===i.G.enumPoint)return ss.intersectPoints(e,t,r);let n=new _.S([e]),a=new _.S([t]),o=this.executeMany(n,a,r,s,-1).next();return o||(0,i.d)("null output"),o}}function as(e,t,r){return t.m_projector.project(e,r)}function os(e,t,r,s,i){return e.m_projector.transformInPlaceZ(t,null,r,s,null,i)}function ls(e,t,r,s){if((!e||!t||!t.isPannable())&&(0,i.b)("fold_into_360_range_geodetic"),e.isEmpty())return e;if(4===r)return ms(e,t,s);let l=e,m=l.getGeometryType();if((0,i.j)(m)){l=Ti(e,t);let s=new n.Envelope2D;l.queryEnvelope(s);let i=(0,o.c)(t,s,!1).total(),a=t.getPannableExtent(),m=Math.floor((s.xmin-a.xmin)/a.width())*a.width()+a.xmin,h=l;for(;m<s.xmax;)m>s.xmin+i&&m<s.xmax-i&&(h=wi(h,t,r,!0,m)),m+=a.width();l=h}else{if(m===i.G.enumEnvelope){let e=new a.P({vd:l.getDescription()});return e.addEnvelope(l,!1),ls(e,t,r,s)}if((0,i.h)(m)){let e=new a.a({vd:l.getDescription()});return e.addSegment(l,!0),ls(e,t,r,s)}}return ms(l,t,s)}function ms(e,t,r){if((!e||!t||!t.isPannable())&&(0,i.b)(""),e.isEmpty())return e;let s,n=e.getGeometryType();if(n===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});t.addEnvelope(e,!1),s=t}else if((0,i.h)(n)){let t=new a.a({vd:e.getDescription()});t.addSegment(e,!0),s=t}else s=e;let o=Ti(s,t);return o.isEmpty()?o:Si(o,t,0,o!==e,0,r)}function hs(e,t,r,s){let i=t.getXYGridRange(),n=e.hasAttribute(1),a=e.hasAttribute(2),m=new l.E,g=new l.E;n&&(m=t.getZGridRange()),a&&(g=t.getMGridRange());let u=(new h.O).execute(e,i,r,s);if(n){let t=u.queryInterval(1,0);m.contains(t)||(e===u&&(u=u.clone()),(0,o.J)(u,m,1,0))}if(a){let t=u.queryInterval(2,0);g.contains(t)||(e===u&&(u=u.clone()),(0,o.J)(u,g,2,0))}return u}class gs{m_projTransform;m_inputPCSHorizonClipOption=0;m_outputPCSHorizonClipOption=0;m_bDontGeonormalizePolygon=!1;m_bClipOutCurvedPoles=!1;m_bNormalizeOutputGeometry=!1;m_bDontHackPolesInGeogToGeog=!1;m_centralMeridianOfOutputGCS=0;m_densificationStepInput=0;constructor(e){e||(0,i.b)(""),this.m_projTransform=e,this.m_bClipOutCurvedPoles=!1;let t=this.m_projTransform.getExtendedParamsImpl();this.m_bNormalizeOutputGeometry=t.normalizeResultGeometry,this.m_bNormalizeOutputGeometry&&(t.legacyHorizonClipping?this.m_bNormalizeOutputGeometry=!1:this.m_projTransform.getOutputSR().isPannable()||(this.m_bNormalizeOutputGeometry=!1)),t.clipWithInputHorizon?(this.m_inputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getInputSR().isPannable()&&(this.m_inputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_inputPCSHorizonClipOption=1,t.clipWithOutputHorizon?(this.m_outputPCSHorizonClipOption=0,!t.legacyHorizonClipping&&this.m_projTransform.getOutputSR().isPannable()&&(this.m_outputPCSHorizonClipOption=this.m_bNormalizeOutputGeometry?4:2)):this.m_outputPCSHorizonClipOption=1,this.m_centralMeridianOfOutputGCS=t.centralMeridianOfOutputGCS,this.m_densificationStepInput=t.densificationStep;let r=this.m_projTransform.getExtendedParamsInternal();this.m_bDontGeonormalizePolygon=r.hasFlag(2147483648),this.m_bDontHackPolesInGeogToGeog=r.hasFlag(1073741824),this.m_bClipOutCurvedPoles=r.hasFlag(536870912)}project(e,t){if(this.m_projTransform.isIdentity()||e.isEmpty())return e;let r=e.getGeometryType();if(r===i.G.enumPoint)return this.projectPoint(e,t);let s=this.m_projTransform.getInputSR().getCoordinateSystemType(),n=this.m_projTransform.getOutputSR().getCoordinateSystemType(),a=this.m_projTransform.getInputSR(),o=this.m_projTransform.getOutputSR();if(0===s&&s===n){let t=_s(a,o),r=e.clone();return r.applyTransformation(t),r}switch(r){case i.G.enumPolyline:case i.G.enumPolygon:return this.projectMultiPath(e,t);case i.G.enumMultiPoint:return this.projectMultiPoint(e,t);case i.G.enumEnvelope:return this.projectEnvelope(e,t);case i.G.enumGeometryCollection:return this.projectGeometryCollection(e,t);default:(0,i.d)("")}}projectPoint(e,t){let r,s=[e.getXY()],i=null;(r=e.hasAttribute(1))&&(i=[e.getZ()]),this.transformInPlaceZ(s,i,1,s,i,null);let n=e.clone();return n.setXY(s[0]),r&&n.setZ(i[0]),n}projectMultiPoint(e,t){let r=new a.M({copy:e}),s=this.m_projTransform.getInputSR(),n=this.m_projTransform.getOutputSR(),o=s.getCoordinateSystemType(),l=n.getCoordinateSystemType();if(3===o&&(0,i.g)(0),r=Hi(r,s,this.m_inputPCSHorizonClipOption,t),r.isEmpty())return r;2===o&&Yi(s,0,r),ji(this.m_projTransform,r,!1);let m=0;3===l&&(0,i.g)(0);let h=2===l;return h?m=n.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(m=this.m_centralMeridianOfOutputGCS),(!h||0===this.m_outputPCSHorizonClipOption)&&(r=Si(r,Jn(n),m,!1,0,t)),h&&(r=xi(r,n,this.m_outputPCSHorizonClipOption,t),qi(n,r,this.m_bNormalizeOutputGeometry),r.isEmpty()),r}projectMultiPath(e,t){let r=e.getGeometryType();return r===i.G.enumPolygon?this.projectPolygon(e,t):r===i.G.enumPolyline?this.projectPolyline(e,t):void(0,i.d)("project_multi_path_")}projectEnvelope(e,t){this.m_projTransform.getInputSR(),this.m_projTransform.getOutputSR();let r=this.m_projTransform.isVertical()&&e.hasAttribute(1),s=l.E.constructEmpty();if(r&&(s=e.queryInterval(1,0)),s.width()>0){let r=e.clone();r.setInterval(1,0,s.vmin,s.vmin);let i=this.projectEnvelopeHelper(r,t);r.setInterval(1,0,s.vmax,s.vmax);let n=this.projectEnvelopeHelper(r,t);return i.merge(n),i}return this.projectEnvelopeHelper(e,t)}projectPolygon(e,t){(0,i.g)(e.getGeometryType()===i.G.enumPolygon),(0,i.g)(!this.m_projTransform.isIdentity()),(0,i.g)(!e.isEmpty());let r=this.m_projTransform.getInputSR(),s=this.m_projTransform.getOutputSR(),o=r.getCoordinateSystemType(),l=s.getCoordinateSystemType(),m=new a.P({copy:e});3===o&&(0,i.g)(0),3===l&&(0,i.g)(0);let u=2===o,_=2===l,p=u?r.getGCS():r,d=_?s.getGCS():s,c=!_&&!this.m_bDontHackPolesInGeogToGeog,f=!1,x=Hi(m,r,this.m_inputPCSHorizonClipOption,t);if(x.isEmpty())return x;let P=this.m_densificationStepInput,y=!Number.isNaN(P);y&&(x=(new g.O).execute(x,P,0,0,t));let E,S=_?s.getPCSInfo():null,C=NaN;u&&(C=r.getCentralMeridian());let I=null!==s.getGCSSplitLines();if(this.m_bDontGeonormalizePolygon){let e=x;if(u&&(Li(r,C,e),y)){let e=r.getUnitsPerMillimeter();P*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,e,c),y){let e=r.getGCS().getUnitsPerMillimeter();P*=s.getGCS().getUnitsPerMillimeter()/e}E=e}else{let e=new a.a({vd:x.getDescription()});if(e.addAndExplicitlyOpenAllPaths(x,!1),u){if(Li(r,C,e),y){let e=r.getUnitsPerMillimeter();P*=r.getGCS().getUnitsPerMillimeter()/e}if(this.m_bClipOutCurvedPoles){let s=r.getPCSInfo(),i=s.getSouthPoleGeometry()===ba.PE_POLE_LINE_CURVED,a=s.getNorthPoleGeometry()===ba.PE_POLE_LINE_CURVED;if(i||a){let r=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(r),r.inflateCoords(1,1);let s=89.9999*p.getOneDegreeGCSUnit();i&&(r.ymin=-s),a&&(r.ymax=s),e=(0,h.a)(e,r,p,0,0,t)}}}if(Ki(this.m_projTransform,e,c),y){let e=Jn(r).getUnitsPerMillimeter();P*=Jn(s).getUnitsPerMillimeter()/e}let i=NaN;_?(S=s.getPCSInfo(),i=s.getCentralMeridian()):Number.isNaN(this.m_centralMeridianOfOutputGCS)||(i=this.m_centralMeridianOfOutputGCS);let o=us(r)|us(s),l=10*d.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(o=3,l=10*d.getTolerance(0)),E=function(e,t,r,s,i,n,a,o,l){return new js(e,null,r,t,s,i,a,o,n).geoNormalizePolygonGeometry(l)}(x,r,e,d,i,t,o,l,this.m_bNormalizeOutputGeometry),o=0}if(I&&((0,i.g)(!s.isPannable()),E=di(E,s,t)),_){if(!f){let e=d.getPannableExtent().width();if(E.queryInterval(0,0).width()>=e-10*d.getTolerance(0)){let e=S.getNorthPoleLocation(),t=S.getSouthPoleLocation(),r=S.getNorthPoleGeometry(),s=S.getSouthPoleGeometry(),i=0;r===ba.PE_POLE_POINT&&e!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(i=1),s===ba.PE_POLE_POINT&&t!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(i|=2),f||=0!==i}}E=xi(E,s,this.m_outputPCSHorizonClipOption,t),y&&(E=(new g.O).execute(E,P,0,0,t)),Oi(s,E,this.m_bNormalizeOutputGeometry)}return E.isEmpty()||f&&(E=(new ts).execute(E,s,!1,t)),E}projectPolyline(e,t){(0,i.g)(e.getGeometryType()===i.G.enumPolyline),(0,i.g)(!this.m_projTransform.isIdentity()),(0,i.g)(!e.isEmpty());let r=this.m_projTransform.getInputSR(),s=this.m_projTransform.getOutputSR(),n=r.getCoordinateSystemType(),o=s.getCoordinateSystemType(),l=new a.a({copy:e});3===n&&(0,i.g)(0),3===o&&(0,i.g)(0);let m=2===n,h=2===o;m&&r.getGCS();let u=h?s.getGCS():s,_=!h&&!this.m_bDontHackPolesInGeogToGeog,p=Hi(l,r,this.m_inputPCSHorizonClipOption,t);if(p.isEmpty())return p;let d=NaN;m&&(d=r.getCentralMeridian());let c,f=null!==s.getGCSSplitLines(),x=this.m_densificationStepInput,P=!Number.isNaN(x);if(P&&(p=(new g.O).execute(p,x,0,0,t)),this.m_bDontGeonormalizePolygon){if(m&&(Li(r,d,p),P)){let e=r.getUnitsPerMillimeter();x*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,p,_),P){let e=r.getGCS().getUnitsPerMillimeter();x*=s.getGCS().getUnitsPerMillimeter()/e}c=p}else{let e=new a.a({vd:p.getDescription()});if(e.addAndExplicitlyOpenAllPaths(p,!1),m&&(Li(r,d,e),P)){let e=r.getUnitsPerMillimeter();x*=r.getGCS().getUnitsPerMillimeter()/e}if(Ki(this.m_projTransform,e,_),P){let e=r.getGCS().getUnitsPerMillimeter();x*=s.getGCS().getUnitsPerMillimeter()/e}let i=NaN;h?i=s.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(i=this.m_centralMeridianOfOutputGCS);let n=us(r)|us(s),o=10*u.getTolerance(0);this.m_bDontHackPolesInGeogToGeog&&(n=3,o=0),c=function(e,t,r,s,i,n,a,o,l){return new js(e,null,r,t,s,i,a,o,n).geoNormalizePolylineGeometry(l)}(p,r,e,u,i,t,n,o,this.m_bNormalizeOutputGeometry),n=0}return f&&((0,i.g)(!s.isPannable()),c=di(c,s,t)),h&&(c=xi(c,s,this.m_outputPCSHorizonClipOption,t),P&&(c=(new g.O).execute(c,x,0,0,t)),Oi(s,c,this.m_bNormalizeOutputGeometry)),c.isEmpty(),c}projectGeometryCollection(e,t){return(0,i.g)(0),{}}projectEnvelopeHelper(e,t){let r=(e.height()+e.width())/400;if(0!==r){let s=(new g.O).execute(e,r,0,0,t),i=this.projectMultiPath(s,t),l=new o.E({vd:e.getDescription()});if(i.isEmpty()){let r=Math.min(e.height(),e.width()),i=(0,o.e)(this.m_projTransform.getInputSR(),e,!0).total();if(r>100*i){let e=n.Envelope2D.constructEmpty(),t=(0,o.c)(this.m_projTransform.getOutputSR(),e,!0).total(),s=this.m_projTransform.getInputSR().getOneMeter()/this.m_projTransform.getOutputSR().getOneMeter();if(r>100*Math.max(i,t*s))return l}let m=new a.a;m.addAndExplicitlyOpenAllPaths(s,!1),this.projectMultiPath(m,t).queryEnvelope(l);let h=new a.M({vd:e.getDescription()});h.reserve(4);let g=new o.P;for(let t=0;t<4;t++)e.queryCornerByVal(t,g),h.add(g);let u=this.projectMultiPoint(h,t),_=new o.E;return u.queryEnvelope(_),l.merge(_),l}return i.queryEnvelope(l),l}{let r=e.getCenterXY(),s=new o.P(r),i=this.projectPoint(s,t),n=new o.E({vd:e.getDescription()});if(i.isEmpty())n.setEmpty();else{e.copyTo(n);let t=i.getXY();n.setCoords(t.x,t.y,t.x,t.y)}return n}}transformInPlace(e,t,r,s){return(0,i.g)(0),0}transformInPlaceZ(e,t,r,s,n,a){if(this.m_projTransform.isIdentity())return e!==s&&(0,l.F)(s,e,r),t!==n&&(0,l.f)(n,t,0,0,r),r;let o=this.m_projTransform,m=o.getInputSR(),h=o.getOutputSR(),g=m.getCoordinateSystemType(),u=h.getCoordinateSystemType();if(0===g&&g===u)return _s(m,h).transformPoints2D(e,r,s),o.isVertical()&&(0,i.g)(0),r;3===g&&(0,i.a)("image: transform_in_place_"),3===u&&(0,i.a)("image: transform_in_place_"),function(e,t,r,s,n){let a=s.getCoordinateSystemType();if(2===a){if(0===n)r!==e&&(0,l.F)(r,e,t),function(e,t,r){let s=e.getPCSHorizon();if(s.getGeometryType()===i.G.enumPolygon){let i=e.getDefaultPrecisionSR().getTolerance(0),n=s;for(let e=0;e<r;e++)1!==tr(n,t[e],i)&&t[e].setNAN();return}if(s.getGeometryType()===i.G.enumEnvelope){let e=s;for(let s=0;s<r;s++)e.contains(t[s])||t[s].setNAN();return}(0,i.b)("")}(s,r,t);else if(r!==e&&(0,l.F)(r,e,t),s.isPannable()){let e=s.getTolerance(0);(function(e,t,r,s){for(let i=0;i<t;i++){if(e[i].y<r.ymin||e[i].y>r.ymax){e[i].setNAN();continue}let t=e[i].x;e[i].x=vi(t,r,s)}})(r,t,s.getPannableExtent(),e),Ci(r,t,s,0)}}else{(0,i.g)(1===a);let n=s.getTolerance(0),o=s.getPannableExtent();for(let s=0;s<t;s++)r[s].assign(Fi(e[s],o,n))}}(e,r,s,m,this.m_inputPCSHorizonClipOption),n!==t&&(0,l.f)(n,t,0,0,r),2===g&&zi(m,0,s,r),en(this.m_projTransform,s,n,r,!1);let _=0,p=2===u;p?_=h.getCentralMeridian():Number.isNaN(this.m_centralMeridianOfOutputGCS)||(_=this.m_centralMeridianOfOutputGCS),(!p||0===this.m_outputPCSHorizonClipOption)&&Ci(s,r,h.getGCS(),_),p&&(Ei(s,r,h,this.m_outputPCSHorizonClipOption),Mi(h,s,r,!1));let d=r;for(let e=0;e<r;++e)s[e].isNAN()&&(n&&(n[e]=NaN),d--);return d}}function us(e){if(2!==e.getCoordinateSystemType())return 0;let t=0,r=e.getPCSInfo(),s=r.getNorthPoleLocation(),i=r.getSouthPoleLocation(),n=r.getNorthPoleGeometry(),a=r.getSouthPoleGeometry();return n===ba.PE_POLE_POINT&&s!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(t=1),a===ba.PE_POLE_POINT&&i!==ba.PE_POLE_OUTSIDE_BOUNDARY&&(t|=2),t}function _s(e,t){let r=e.getHorzUnitFactor(),s=t.getHorzUnitFactor(),i=1,n=1,a=20015077/180;1===e.getUnit().getUnitType()&&(i=a),1===t.getUnit().getUnitType()&&(n=a);let o=r/s*(i===n?1:i/n),l=new m.T;return l.setScaleCoords(o,o),l}class ps{getOperatorType(){return 10300}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r){return!t||t.isIdentity()?e:new ds(e,t,r)}execute(e,t,r){return t.isIdentity()?e:as(e,t,r)}transform(e,t,r,s,i=!0){return i?function(e,t,r,s){e.m_projector.transformInPlaceZ(t,null,r,s,null,null);let i=s.slice(0,r).filter(e=>!e.isNAN());for(let e=0,t=i.length;e<t;++e)s[e].assign(i[e]);return i.length}(e,t,r,s):os(e,t,r,s,null)}transform3D(e,t,r,s,n=!0){return(0,i.g)(0),0}foldInto360Range(e,t){return ms(e,t,null)}foldInto360RangeGeodetic(e,t,r){return ls(e,t,r,null)}normalizeGeometryEx(e,t,r,s,n=0){return function(e,t,r,s,n){if(!t.isPannable()||e.isEmpty())return e;let h=e.getGeometryType();h===i.G.enumGeometryCollection&&(0,i.a)("not yet impl for geometry collection");let g=t.getPannableExtent();Number.isNaN(r)&&(r=g.getCenterX());let u=g.width(),_=.5*u,p=n>0,d=e.queryInterval(0,0);if(!p&&d.width()<_||!(0,i.i)(e.getGeometryType())){let t=d.getCenter();if(Math.abs(t-r)<=_)return e;{let s=new m.T,i=r-t,n=(0,l.H)(i/u)*u;s.setShiftCoords(n,0);let a=e.clone();return a.applyTransformation(s),a}}if(h===i.G.enumPolygon){let i=new a.a({vd:e.getDescription()});i.addAndExplicitlyOpenAllPaths(e,!1),p&&(i=cs(i,t,2,n,NaN,null,!0));let m=[];if(!s){{let r=e;p&&(r=new a.P,r.add(i,!1));let s=function(e,t,r){let s=On();t.querySpheroidData(s);let i=t.getGCS()===t?null:t.getSRToGCSTransform(),n=(0,l.d)(l.P,100),a=new o.k(0,0,0),m=e.getPointCount(),h=t.getGCS().getUnit().getUnitToBaseFactor();for(let t=0,r=m;t<r;){let o=Math.min(100,r-t);e.queryCoordinates(n,o,t,t+o),i&&(new ps).transform(i,n,o,n,!1);for(let e=0;e<o;e++){if(n[e].isNAN())continue;n[e].scale(h);let t=v(s.majorSemiAxis,s.e2,n[e]);a.addThis(t)}t+=o}let g=b(s.majorSemiAxis,s.e2,a);g.scale(1/h);let u=e;if(!new Ys(t.getGCS(),g).project(u))return 0;r.length=e.getPathCount();let _=u.calculateArea2D()<0;for(let t=0,s=e.getPathCount();t<s;t++){let e=u.calculateRingArea2D(t);r[t]=_?e<0:e>0}return _?-1:1}(e,t,m);if(s)s<0&&i.reverseAllPaths();else{let e=r.getPathCount();for(let t=0;t<e;t++)m.push(r.calculateRingArea2D(t)>0)}}s=m}return new js(null,s,i,null,t,r,3,0,null).geoNormalizePolygonGeometry(!0)}if(h===i.G.enumPolyline){let s=new a.a({vd:e.getDescription()});return s.addAndExplicitlyOpenAllPaths(e,!1),p&&(s=cs(s,t,2,n,NaN,null,!0)),new js(null,null,s,null,t,r,3,0,null).geoNormalizePolylineGeometry(!0)}if(h===i.G.enumMultiPoint){let t,s=e,i=s.getAttributeStreamRef(0),n=null,a=r,o=0,m=.1*u;for(let r=0,h=s.getPointCount();r<h;r++){let s=i.read(2*r),h=s-a;if(Math.abs(h)>_&&(h=(0,l.H)(h/u)*u,o-=h,Math.abs(o)<m&&(o=0)),0!==o){n||=(t=e.clone(),t.getAttributeStreamRef(0));let i=s+o;n.write(2*r,i)}a=s}return n?(t.notifyModified(),t):e}(0,i.d)("")}(e,t,r,s,n)}normalizeGeometry(e,t,r){return function(e,t,r){if(!t.isPannable()||e.isEmpty())return e;let s=t.getPannableExtent().width(),n=.5*s,a=e.queryInterval(0,0);if(a.width()<n||!(0,i.i)(e.getGeometryType())){if(Number.isNaN(r))return e;let t=a.getCenter();if(Math.abs(t-r)<=n)return e;{let i=new m.T,n=r-t,a=(0,l.H)(n/s)*s;i.setShiftCoords(a,0);let o=e.clone();return o.applyTransformation(i),o}}let o=e.getGeometryType(),h=e,g=h.getAttributeStreamRef(0),u=e.clone(),_=u.getAttributeStreamRef(0),p=0,d=0,c=0,f=(0,i.j)(o)?0:-1,x=l.E.constructEmpty(),P=!1;for(let e=0,t=h.getPointCount();e<t;e++){let t=g.read(2*e);e===d&&((0,i.j)(o)?(0===f&&Number.isNaN(r)&&(P=!0),f>0&&Number.isNaN(r)&&(r=x.getCenter(),P=!1),d=h.getPathEnd(f),f++):d=h.getPointCount(),Number.isNaN(r)?c=t:(c=r,p=0));let a=t-c;Math.abs(a)>n&&(a=(0,l.H)(a/s)*s,p-=a,Math.abs(p)<.1*s&&(p=0));let m=t+p;_.write(2*e,m),P&&x.mergeCoordinate(m),c=t}return u.notifyModified(),u}(e,t,r)}clipToSpatialReference(e,t,r,s=0){return function(e,t,r,s){let a=t.getCoordinateSystemType();if(0===a){let s=new ma;return t.queryPrecisionDescriptor(s),hs(e,s,t,r)}let o=e;(2===s||3===s)&&t.isPannable()&&(o=ms(o,t,r));let l=new ma;if(t.queryPrecisionDescriptor(l),o=hs(o,l,t,r),0===s||o.isEmpty())return o;if(1===a){if(1===s){let e=new n.Envelope2D;o.queryLooseEnvelope(e);let s=t.getPannableExtent(),i=.01*s.width();return s.xmin=e.xmin-i,s.xmax=e.xmax+i,(new h.O).execute(o,s,t,r)}return o}if(2===a){let e=t.getPCSHorizon();if(1===s||2===s){let s=(new ns).execute(o,e,t,r);return s===e?s.clone():s}return o}if(3===a)return o;(0,i.d)("missing implementation")}(e,t,r,s)}}class ds extends u.G{m_inputGeoms;m_projTrans;m_index;m_progressTracker;constructor(e,t,r){super(),this.m_projTrans=t,this.m_progressTracker=r,this.m_index=-1,e||(0,i.b)(""),this.m_inputGeoms=e}next(){let e=this.m_inputGeoms.next();return null==e?null:((0,i.p)(e),(0,i.t)(e),this.m_index=this.m_inputGeoms.getGeometryID(),as(e,this.m_projTrans,this.m_progressTracker))}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}function cs(e,t,r,s,n,o,l=!1){e||(0,i.b)("Geometry.Geodetic_densify.densify");let m=e.getGeometryType();if((0,i.t)(e),e.isEmpty()||(0,i.f)(m))return e;let h=new Ss;h.m_sr=t,h.m_gcs=t.getGCS(),h.m_transform=h.m_gcs===t?null:t.getSRToGCSTransform(),h.m_progressTracker=o;let g,u,_,p=On();if(h.m_gcs.querySpheroidData(p),h.m_a=p.majorSemiAxis,h.m_eSquared=p.e2,h.m_rpu=h.m_gcs.getUnit().getUnitToBaseFactor(),h.m_gcsTolerance=h.m_gcs.getTolerance(0),h.m_radTolerance=h.m_gcsTolerance*h.m_rpu,h.m_maxLength=s,h.m_maxDeviation=n,h.m_curveType=r,m===i.G.enumEnvelope){let t=new a.P({vd:e.getDescription()});t.addEnvelope(e,!1),g=t,m=i.G.enumPolygon}else if((0,i.h)(m)){let t=new a.a({vd:e.getDescription()});t.addSegment(e,!0),g=t,m=i.G.enumPolyline}else g=e;if(4!==h.m_curveType){if((0,i.g)((0,i.j)(m)),u=h.replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(g),u.isEmpty())return u;u=fs(h.m_rpu,u);let e=h.geodeticDensify(u);l||(e=(new ps).foldInto360RangeGeodetic(e,h.m_gcs,h.m_curveType)),_=h.m_transform&&!h.m_transform.isIdentity()?(new ps).execute(e,h.m_transform.getInverse(),o):e}else{let e;if((0,i.g)((0,i.j)(m)),t.isPannable())e=Ti(g,t);else{let r=t.getPCSHorizon();e=(new ns).execute(g,r,t,o),e===r&&(e=r.clone())}if(u=e,u.isEmpty())return u;_=h.shapePreservingDensify(u)}return _}function fs(e,t){let r=new n.Envelope2D;if(t.queryLooseEnvelope(r),r.width()*e<Math.PI)return t;let s=!1,i=t.querySegmentIterator(),a=new l.P,m=new l.P;for(;i.nextPath();)for(;i.hasNextSegment();){let t=i.nextSegment();if(a.setCoordsPoint2D(t.getStartXY()),m.setCoordsPoint2D(t.getEndXY()),a.scale(e),m.scale(e),Math.abs(a.x-m.x)>Math.PI){if(!Ps(a,m)){s=!0;break}if(Math.abs(a.x-m.x)>2*Math.PI){s=!0;break}}}if(!s)return t;let h=t.createInstance();h.reserve(t.getPointCount());let g=t.getDescription().getAttributeCount()>1,u=new l.P,_=new l.P,p=new l.P(0,0),d=new l.P(0,0),c=new o.P;for(i.resetToFirstPath();i.nextPath();){let t=NaN,r=0;for(;i.hasNextSegment();){let s=i.nextSegment();if(a.setCoordsPoint2D(s.getStartXY()),m.setCoordsPoint2D(s.getEndXY()),a.scale(e),m.scale(e),Number.isNaN(t)?(r=Fs(a.x,NaN,r),p.setCoordsPoint2D(a)):p.setCoordsPoint2D(d),t=p.x,Ps(a,m)){if(m.x-a.x>2*Math.PI)for(;m.x-a.x>2*Math.PI;)m.x-=2*Math.PI;else if(m.x-a.x<2*-Math.PI)for(;m.x-a.x<2*-Math.PI;)m.x+=2*Math.PI;r=Fs(m.x,NaN,r),d.setCoordsPoint2D(m)}else u.setCoordsPoint2D(m),qs(u),r=Fs(u.x,t,r),d.setCoords(r+u.x,u.y);if(Math.abs(d.x-m.x)<.5&&d.setCoordsPoint2D(m),g)s.queryCoord(0,c),_.setCoordsPoint2D(p),_.scale(1/e),c.setXY(_),i.isFirstSegmentInPath()?h.startPathPoint(c):h.lineToPoint(c),i.isLastSegmentInPath()&&!i.isPathClosed()&&(s.queryCoord(1,c),_.setCoordsPoint2D(d),_.scale(1/e),c.setXY(_),h.lineToPoint(c));else{i.isFirstSegmentInPath()&&h.insertPath2D(-1,null,0,0,!0);let t=h.getPathCount()-1;_.setCoordsPoint2D(p),_.scale(1/e),h.insertPoint2D(t,-1,_),i.isLastSegmentInPath()&&!i.isPathClosed()&&(_.setCoordsPoint2D(d),_.scale(1/e),h.insertPoint2D(t,-1,_))}}}return h}function xs(e,t,r,s,i,n,a,o,m,h,g,u){let _=new l.P,p=new l.P,d=s.compare(i)>0;Vs(d,s,i,_,p);let c=vs(e,t,r,_,p,n,a,o,m,h,null,g,u);return d&&Ds(m,h,null,g),c}function Ps(e,t){return!!(Ea(e.y,l.l)&&Ea(t.y,l.l)||Ea(e.y,-l.l)&&Ea(t.y,-l.l))}function ys(e,t){return!!(Ea(e.y,l.l)&&!Ea(t.y,l.l)||Ea(e.y,-l.l)&&!Ea(t.y,-l.l))}function Es(e,t){return!!(Ea(t.y,l.l)&&!Ea(e.y,l.l)||Ea(t.y,-l.l)&&!Ea(e.y,-l.l))}class Ss{m_sr=null;m_gcs=null;m_transform=null;m_progressTracker=null;m_a=0;m_eSquared=0;m_rpu=0;m_gcsTolerance=0;m_radTolerance=0;m_maxLength=0;m_maxDeviation=0;m_curveType=0;geodeticDensify(e){let t=e.createInstance(),r=e.querySegmentIterator(),s=[],i=[],n=new a.S,o=e.getDescription().getAttributeCount()>1;for(;r.nextPath();){let e=[0];for(;r.hasNextSegment();){let a=r.nextSegment(),m=a.getStartXY(),h=a.getEndXY();m.scale(this.m_rpu),h.scale(this.m_rpu);let g=new l.P,u=new l.P,_=m.compare(h)>0;Vs(_,m,h,g,u),s.length=0,i.length=0,this.m_maxLength>0?vs(this.m_a,this.m_eSquared,this.m_curveType,g,u,this.m_maxLength,this.m_maxDeviation,this.m_radTolerance,null,null,o?i:null,s,e):Gs(),_&&Ds(null,null,o?i:null,s),s[0].setCoordsPoint2D(a.getStartXY()),s.at(-1).setCoordsPoint2D(a.getEndXY());let p=1/this.m_rpu;for(let e=1,t=s.length-1;e<t;e++)s[e].scale(p);if(o){let e=ks(_,a,n);Is(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),a,e,i,s,t)}else Cs(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),s,t)}}return t}shapePreservingDensify(e){let t=e.createInstance(),r=e.querySegmentIterator(),s=[],i=[],n=new a.S,o=e.getDescription().getAttributeCount()>1;for(;r.nextPath();)for(;r.hasNextSegment();){let e=r.nextSegment(),a=e.getStartXY(),l=e.getEndXY(),m=a.compare(l)>0,h=ks(m,e,n);s.length=0,i.length=0,Ns(this.m_a,this.m_eSquared,this.m_rpu,h,this.m_sr,this.m_maxLength,this.m_maxDeviation,o?i:null,s),m&&Ds(null,null,o?i:null,s),o?Is(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),e,h,i,s,t):Cs(r.isFirstSegmentInPath(),r.isLastSegmentInPath()&&!r.isPathClosed(),s,t)}return t}replaceCurvesWithLinesAndProjectToGCSAsMultiPoint_(e){let t=e.hasNonLinearSegments();if((!this.m_transform||this.m_transform.isIdentity())&&(e=Ti(e,this.m_gcs),!t))return e;let r=e.createInstance();r.reserveParts(e.getPointCount(),e.getPathCount());for(let t=0,s=e.getPathCount();t<s;++t){let s=new a.M,i=e.getPathStart(t),n=e.getPathEnd(t);s.addPoints(e,i,n);let l=e.isClosedPath(t),m=!1;if(l&&n-i===1&&e.hasNonLinearSegmentsPath(t)){let t=new o.P;e.getPointByVal(i,t),s.add(t),m=!0}if(this.m_transform&&!this.m_transform.isIdentity()){if(l&&!m){let t=new o.P;e.getPointByVal(i,t),s.add(t)}if(s=(new ps).execute(s,this.m_transform,this.m_progressTracker),l&&s.getPointCount()>1){let e=s.getXY(0),t=s.getXY(s.getPointCount()-1);e.equals(t)&&s.removePoint(s.getPointCount()-1)}}s.getPointCount()>1&&(r.addPathMultiPoint(s,0,-1,!0),l&&r.closePathWithLine())}return r}}function Cs(e,t,r,s){e&&s.insertPath2D(-1,null,0,0,!0);let i=s.getPathCount()-1;s.insertPointsFromPoints(i,-1,r,0,r.length-1,!0),t&&s.insertPoint2D(i,-1,r.at(-1))}function Is(e,t,r,s,i,n,a){a.reserve(a.getPointCount()+n.length-1);let l=new o.P;if(r.queryStart(l),e?a.startPathPoint(l):a.lineToPoint(l),n.length>2){let e=s.calculateLength2D();for(let t=1;t<n.length-1;t++){let r=s.lengthToT(i[t]*e);s.queryCoord(r,l),l.setXY(n[t]),a.lineToPoint(l)}}t&&(r.queryEnd(l),a.lineToPoint(l))}function vs(e,t,r,i,n,a,o,m,h,g,u,_,p){let d={stack:[],error:void 0,hasError:!1};try{let c=(0,s.mS)(d,new Sa,!1),f=(0,s.mS)(d,new Sa,!1),x=(0,s.mS)(d,new Sa,!1);Da.geodeticDistance(e,t,i.x,i.y,n.x,n.y,x,c,f,r);let P=x.val,y=c.val,E=f.val,S=y,C=E;S<0&&(S+=2*Math.PI),C<0&&(C+=2*Math.PI),h&&(h[0]=S),g&&(g[0]=C);let I=NaN,v=NaN;if(null!==u){let r=Va.q90(e,t),s=Va.q(e,t,i.y);I=(r-s)/P,v=(r+s)/P}let G=ys(i,n),w=Es(i,n),b=G||w,T=function(e,t,r){return!(!Us(e,t,r)||Ea(e.y,l.l)||Ea(e.y,-l.l)||Ea(t.y,l.l)||Ea(t.y,-l.l))}(i,n,m),N=(0,s.mS)(d,new l.S(new Sa,new Sa),!1),D=new l.P,V=new l.P,k=new l.P;p[0]=Fs(i.x,NaN,p[0]);let F=p[0];if(P<=a)return _.push(i.clone()),p[0]=Fs(n.x,NaN,p[0]),u?.push(0),b?(G&&Hs(i,n,u,_),w&&As(i,n,u,_)):T?Ms(i,n,y,I,v,u,_):o>0&&(V.setCoords(i.x-F,i.y),D.setCoords(n.x-p[0],n.y),F=ws()),_.push(n.clone()),P;let H=1+Math.ceil(P/a),A=P/(H-1),M=new l.P;_.push(i.clone()),M.setCoordsPoint2D(i),V.setCoords(i.x-p[0],i.y),null!==u&&u.push(0);for(let s=1;s<H;s++){let a;if(s<H-1){let n=s*A;Da.geodeticCoordinate(e,t,i.x,i.y,n,y,N.at(0),N.at(1),r),D.setCoords(N.at(0).val,N.at(1).val),p[0]=Fs(D.x,M.x,p[0]),k.setCoords(p[0]+D.x,D.y),a=s/(H-1)}else p[0]=Fs(n.x,NaN,p[0]),D.setCoords(n.x-p[0],n.y),k.setCoordsPoint2D(n),a=1;b?(1===s&&G&&Hs(i,k,u,_),s===H-1&&w&&As(M,n,u,_)):T?Us(M,k,m)&&(i.x<n.x?M.x>k.x&&(p[0]+=2*Math.PI,k.setCoords(p[0]+D.x,D.y)):M.x<k.x&&(p[0]-=2*Math.PI,k.setCoords(p[0]+D.x,D.y)),Ms(M,k,y,I,v,u,_)):o>0&&ws(),_.push(k.clone()),u?.push(a),M.setCoordsPoint2D(k),V.setCoordsPoint2D(D),F=p[0]}return P}catch(e){d.error=e,d.hasError=!0}finally{(0,s.hk)(d)}}function Gs(e,t,r,s,n,a,o,l,m,h){(0,i.g)(0)}function ws(e,t,r,s,n,a,o,l,m,h,g,u,_,p,d){return(0,i.g)(0),0}function bs(e,t,r,s){let i=v(e,t,r),n=v(e,t,s);return o.k.distance(i,n)}function Ts(e,t,r,s,n,a,m,h){let g=[],u=(0,l.d)(Array,8),_=2,p=n.getCoord2D(a);u[0][0]=p.x,u[0][1]=p.y,p=n.getCoord2D(m),u[1][0]=p.x,u[1][1]=p.y;let d=e=>{if(null!==r){let t=Ga.projToGeog(r,e,u);(0,i.g)(t===e)}for(let e of u)e[0]*=s,e[1]*=s};d(2),g.push(v(e,t,new l.P(u[0][0],u[0][1]))),g.push(v(e,t,new l.P(u[1][0],u[1][1])));let c=o.k.distance(g[0],g[1]);if(c>h)return c;let f=0;for(_=3;_<=17;){let r=1/(_-1),s=0;for(let e=1;e<_;++e)if(1&e){let t=(0,l.r)(a,m,e*r);n.queryCoord2D(t,p),u[s][0]=p.x,u[s][1]=p.y,s++}d(s);let x=1;for(let r=0;r<s;++r)g.splice(x,0,v(e,t,new l.P(u[r][0],u[r][1]))),x++;x=0;let P=g[x];x++;let y=0;for(;x!==g.length;++x){let e=g[x];y+=o.k.distance(P,e),P=e}if(y>h)return y;if(f=y-c,(0,i.g)(f>=0||Math.abs(f)<1e-14*y),f<0&&(f=0),c=y,y+f<=h)return y+f;_=2*_-1}return c+f}function Ns(e,t,r,s,n,a,o,m,h){let g=s.isCurve(),u=function(e,t){return e*Math.sqrt(1-t)}(e,t)*Math.PI*179/180,_=a;(!(a>0)||a>u)&&(_=u);let p=o>0,d=NaN;p&&(d=function(e,t,r){let s=r/(2*function(e,t){return(1-t)*e}(e,t)),i=s*s;return r*(1-i*(.16666666666666666-.008333333333333333*i))}(e,t,o));let c=1===n.getCoordinateSystemType(),f=null;c||(f=n.getPECoordSys());let x=n.getTolerance(0),P=s.getStartXY(),y=s.getEndXY(),E=new l.P,S=new l.P;if(c)E.setCoordsPoint2D(P),E.scale(r),S.setCoordsPoint2D(y),S.scale(r);else{let e=[P.x,P.y,y.x,y.y];Ga.projToGeog(f,2,e),E.setCoords(e[0],e[1]),E.scale(r),S.setCoords(e[2],e[3]),S.scale(r)}let C=0,I=0,G=[],w=[],b=[];G.push(y.clone()),w.push(S.clone()),b.push(1),h.push(P.clone()),null!==m&&m.push(I);let T=n.isPannable(),V=P.clone(),k=[.5,.33333333333333337,.6666666666666666,.16666666666666669,.8333333333333333],F=5;g||(p?(k[0]=.5,k[1]=.25,k[2]=.75,F=3):F=1),(0,i.g)(_>0);let H=e=>{if(e=e.clone(),null!==f){let t=[e.x,e.y];Ga.projToGeog(f,1,t),e.setCoords(t[0],t[1])}return e.scale(r),e};for(;w.length>0;){let a=G.at(-1).clone();S.assign(w.at(-1));let o=b.at(-1),u=!1,P=NaN,y=Ts(e,t,f,r,s,I,o,_),A=_>=y&&Math.abs(E.y-S.y)<.9*Math.PI;c&&A&&(A=Math.abs(E.x-S.x)<.9*Math.PI);let M=new l.P,U=new l.P,q=!1;if(!p&&A&&A&&(q=!0),s.calculateSubLength(I,o)<=x&&(q=!0),!q)for(let m=0;m<F;m++){let h=(0,l.r)(I,o,k[m]),_=new l.P;s.queryCoord2D(h,_);let f=H(_);if(0===m&&(P=h,M.setCoordsPoint2D(_),U.setCoordsPoint2D(f),!A)){u=!0;break}if((0,i.g)(p),c&&Math.abs(E.x-f.x)>=Math.PI){u=!0;break}let x=new l.P,y=new l.P;g?(x=l.P.lerp(V,a,k[m]),y=H(x)):(x=_.clone(),y=f.clone());let C=N(e,t,E,S,k[m]),G=C.clone();if(c?(G.x/=r,G.y/=r):(G.x/=r,G.y/=r,os(n.getGCSToSRTransform(),[G],1,[G],null)),G.isNAN()){let{second:r}=D(e,t,v(e,t,f),v(e,t,E),v(e,t,S),2,null);if(r>d){u=!0;break}}else{if(T){let e=n.getPannableExtent().width(),t=(0,l.r)(s.getStartX(),s.getEndX(),.5);for(;G.x<t-.5*e;)G.x+=e;for(;G.x>=t+.5*e;)G.x-=e}let r=s.getClosestCoordinateOnInterval(G,new l.E(I,o),-1),i=s.getCoord2D(r);i=H(i);let a=bs(e,t,i,C);if(a>d){if(a<4*d){let{second:r}=D(e,t,v(e,t,i),v(e,t,E),v(e,t,S),2,null);a=r}if(a>d){u=!0;break}}else if(g){let r=v(e,t,f),s=v(e,t,E),i=v(e,t,S),{second:n}=D(e,t,r,s,i,3,null);if(n<=d){r=v(e,t,y);let{second:a}=D(e,t,r,s,i,3,null);n=a}if(n>d){u=!0;break}}}}u?(G.push(M.clone()),w.push(U.clone()),b.push(P)):(G.pop(),w.pop(),b.pop(),h.push(a.clone()),C+=y,null!==m&&m.push(C),V.setCoordsPoint2D(a),E.setCoordsPoint2D(S),I=o)}if(null!==m){let e=1/C;for(let t=0;t<m.length;t++)m[t]*=e}}function Ds(e,t,r,s){if(s.reverse(),null!==r&&r.reverse(),e){let r=e[0];e[0]=t[0],t[0]=r}}function Vs(e,t,r,s,i){e?(s.setCoordsPoint2D(r),i.setCoordsPoint2D(t)):(s.setCoordsPoint2D(t),i.setCoordsPoint2D(r))}function ks(e,t,r){return e?(r.create(t.getGeometryType()),t.copyTo(r.get()),r.get().reverse(),r.get()):t}function Fs(e,t,r){if(Number.isNaN(t)){for(;r-e>Math.PI;)r-=2*Math.PI;for(;e-r>Math.PI;)r+=2*Math.PI;return r}return r+e-t>Math.PI?r-=2*Math.PI:t-(r+e)>Math.PI&&(r+=2*Math.PI),r}function Hs(e,t,r,s){if(e.y>0){let i=new l.P;i.setCoords(t.x,l.l),!Ea(e.x,i.x)&&!Ea(t.y,i.y)&&(s.push(i),null!==r&&r.push(0))}else{let i=new l.P;i.setCoords(t.x,-l.l),!Ea(e.x,i.x)&&!Ea(t.y,i.y)&&(s.push(i),null!==r&&r.push(0))}}function As(e,t,r,s){if(t.y>0){let i=new l.P;i.setCoords(e.x,l.l),!Ea(t.x,i.x)&&!Ea(e.y,i.y)&&(s.push(i),null!==r&&r.push(1))}else{let i=new l.P;i.setCoords(e.x,-l.l),!Ea(t.x,i.x)&&!Ea(e.y,i.y)&&(s.push(i),null!==r&&r.push(1))}}function Ms(e,t,r,s,i,n,a){if(function(e){return function(e,t){return 0===e||Math.abs(e)<=t}(e,ya)}(r)){if(l.l-e.y>0){let t=new l.P;t.setCoords(e.x,l.l),a.push(t),null!==n&&n.push(s)}if(l.l-t.y>0){let e=new l.P;e.setCoords(t.x,l.l),a.push(e),null!==n&&n.push(s)}}else{if(l.l+e.y>0){let t=new l.P;t.setCoords(e.x,-l.l),a.push(t),null!==n&&n.push(i)}if(l.l+t.y>0){let e=new l.P;e.setCoords(t.x,-l.l),a.push(e),null!==n&&n.push(i)}}}function Us(e,t,r){return Math.abs(Math.abs(e.x-t.x)-Math.PI)<=r}function qs(e){if(e.x<-Math.PI)for(;e.x<-Math.PI;)e.x+=2*Math.PI;else if(e.x>Math.PI)for(;e.x>Math.PI;)e.x-=2*Math.PI}function Bs(e,t,r,i){let n={stack:[],error:void 0,hasError:!1};try{let a=[r.x],o=[r.y-i],l=[r.x],m=[r.y+i];k(a,o),k(l,m);let h=(0,s.mS)(n,new Sa,!1),g=(0,s.mS)(n,new Sa,!1);return Da.greatEllipticDistance(e,t,r.x,r.y,a[0],o[0],h,null,null),Da.greatEllipticDistance(e,t,r.x,r.y,l[0],m[0],g,null,null),Math.min(h.val,g.val)}catch(e){n.error=e,n.hasError=!0}finally{(0,s.hk)(n)}}function Os(e,t,r,s,i){let a=new n.Envelope2D;r.queryEnvelope(a);let l=(0,o.e)(null,r,!0).total();if(t.xmin-a.xmin<=l&&a.xmax-t.xmax<=l)return r;let g=t.width(),u=0;for(;t.xmin+u*g<a.xmin;)u++;for(;t.xmin+u*g>a.xmin;)u--;let _=u*g,p=new m.T;p.setShiftCoords(-_,0);let d=r;d.applyTransformation(p);let c=new n.Envelope2D;d.queryEnvelope(c);let f=null;if(c.xmax>t.xmax){let r=0,s=new n.Envelope2D;s.setCoords({env2D:t}),--s.ymin,s.ymax+=1;let a=d;for(;s.xmin<c.xmax;){c.xmax>s.xmax&&(a=wi(a,e,2,!0,s.xmax));let n=(0,o.h)(a,s),l=(0,o.c)(null,n,!0).total(),m=(0,h.c)(a,s,l,NaN,i);null===f?f=m===a?m.clone():m:(p.setShiftCoords(-r*g,0),m.applyTransformation(p),f.add(m,!1)),r++,s.xmin=s.xmax,s.xmax=t.xmax+r*g}}else f=d;return f}class Ys{m_gcs;m_a;m_e2;m_rpu;m_curvCenterRad;m_cartCenter3D;m_basisX=new o.k;m_basisY=new o.k;m_normal=new o.k;m_d;m_northPolePcs;m_southPolePcs;constructor(e,t){(0,i.g)(1===e.getCoordinateSystemType()),this.m_gcs=e;let r=On();e.querySpheroidData(r),this.m_a=r.majorSemiAxis,this.m_e2=r.e2,this.m_rpu=e.getUnit().getUnitToBaseFactor(),this.m_curvCenterRad=t.mul(this.m_rpu);let s=this.m_curvCenterRad.x,n=this.m_curvCenterRad.y,a=Math.cos(s),m=Math.sin(s),h=Math.cos(n),g=Math.sin(n);this.m_cartCenter3D=function(e,t,r,s,i,n){return G(e,t,r,s,i,n,0)}(this.m_a,this.m_e2,a,m,h,g),this.m_normal.setCoordsPoint3D(this.m_cartCenter3D),this.m_d=this.m_cartCenter3D.length(),this.m_normal.divThis(this.m_d),o.k.selectRightHandedBasisFromNormal(this.m_normal,this.m_basisX,this.m_basisY),this.m_northPolePcs=this.projectPoint(l.P.construct(0,.5*Math.PI/this.m_rpu)),this.m_southPolePcs=this.projectPoint(l.P.construct(0,.5*-Math.PI/this.m_rpu))}project(e){let t=e.getGeometryType();if((0,i.i)(t)){(0,i.p)(e);let t=e;return this.projectMultiVertex(t)}(0,i.b)("Gnomonic.project")}unproject(e,t,r){let s=e.getGeometryType();if((0,i.i)(s)){(0,i.p)(e);let m=e,h=[];if(s===i.G.enumPolygon){let e=m.getPathCount();for(let t=0;t<e;t++){let e=m.calculateRingArea2D(t);h.push(e)}}return this.unprojectMultiVertex(t,m),(0,i.j)(s)?(function(e,t,r){let s=e.getPannableExtent(),i=l.P.construct(0,0);s.centerAt(i);let n=s.width(),a=.5*n,o=new l.P;o.setNAN();let m=NaN;for(let e=0;e<r.getPathCount();e++)for(let t=r.getPathStart(e);t<r.getPathEnd(e);t++){let i=r.getXY(t),l=Ea(i.y,s.ymax)||Ea(s.ymin,i.y);t===r.getPathStart(e)?(o.setNAN(),m=0):!o.isNAN()&&!l&&(m=Ls(i.x,o.x,a,n,m)),i.x+=m,r.setXYNoCurves(t,i),l||o.setCoordsPoint2D(i)}r.getImpl().notifyModifiedFlags(2001)}(this.m_gcs,0,m),function(e,t,r,s,m){let h=s.getGeometryType(),g=t.getPannableExtent(),u=s,_=!1,p=!1;if(h===i.G.enumPolygon){let r=new n.Envelope2D,s=l.P.construct(0,0);r.setCoords({env2D:g}),r.centerAt(s),_=function(e,t,r,s,i){let o=function(e,t){let r=new n.Envelope2D;t.queryEnvelope(r);let s=Ea(e.ymax,r.ymax),i=Ea(e.ymin,r.ymin),o=s||i;return!!o&&(function(e,t){let r=new a.P,s=new n.Envelope2D;for(let i=0;i<t.getPathCount();i++){t.queryPathEnvelope(i,s);let n=Ea(e.ymax,s.ymax),a=Ea(e.ymin,s.ymin);if(!n&&!a){r.addPath(t,i,!0);continue}r.insertPath2D(-1,null,0,0,!0);let o=t.getPathStart(i),m=t.getPathEnd(i),h=m-o,g=-1;for(g=o;g<m;g++){let r=t.getXY(g);if(n=Ea(e.ymax,r.y),a=Ea(e.ymin,r.y),!n&&!a)break}let u=g,_=!1,p=NaN;do{let s=t.getXY(u);n=Ea(e.ymax,s.y),a=Ea(e.ymin,s.y);let m=o+(u+1-o)%h;if(n||a){let n=l.P.construct(p,s.y);r.insertPoint2D(i,-1,n);let a=t.getXY(m),o=Ea(e.ymax,a.y),h=Ea(e.ymin,a.y);!o&&!h&&(n=l.P.construct(a.x,s.y),_?r.setXYNoCurves(r.getPointCount()-1,n):r.insertPoint2D(i,-1,n)),_=!0}else r.insertPoint2D(i,-1,s),p=s.x,_=!1;u=m}while(u!==g)}t.setEmpty(),t.add(r,!1)}(e,t),o)}(r,s),m=function(e,t,r,s,i){let n=[],o=[],l=.5*r.width();for(let a=0;a<s.getPathCount();a++){let m=s.getXY(s.getPathStart(a)),h=s.getXY(s.getPathEnd(a)-1),g=e[a]<0;if(Math.abs(m.x-h.x)>l){let e=Xs(g,t,r,a,s,i);n.push(e),o.push(a)}else if(!g&&s.calculateRingArea2D(a)<0){let e=Rs(t,r,a,s,i);n.push(e),o.push(a)}}if(0===n.length)return!1;let m=new a.P({vd:s.getDescription()}),h=0,g=o[h];for(let e=0;e<s.getPathCount();e++)e===g?(m.add(n[h],!1),h++,h<o.length&&(g=o[h])):m.addPath(s,e,!0);return s.setEmpty(),s.add(m,!1),!0}(e,t,r,s,i);return o||m}(e,t,r,u,m);let i=function(e,t,r,s){let i=new n.Envelope2D;r.queryEnvelope(i);let a=(0,o.e)(null,r,!0).total();if(t.xmin-i.xmin<=a&&i.xmax-t.xmax<=a)return r;let l=r.createInstance(),m=r.createInstance(),h=new n.Envelope2D,g=r.getPathCount();for(let i=0;i<g;i++)r.queryPathEnvelope(i,h),t.xmin-h.xmin<=a&&h.xmax-t.xmax<=a?l.addPath(r,i,!0):(m.setEmpty(),m.addPath(r,i,!0),m=Os(e,t,m,0,s),l.add(m,!0));return l}(t,r,u,m);i!==u&&(p=!0),u=i}else u=(new ps).foldInto360RangeGeodetic(u,t,2);h===i.G.enumPolygon&&(_||p)&&(u=(new ts).execute(u,t,!1,m)),u!==s&&(s.setEmpty(),s.add(u,!1))}(h,this.m_gcs,0,m,r)):m=Si(m,this.m_gcs,0,!0,0,r),m}(0,i.b)("Gnomonic.unproject")}projectPoint(e){let t=e.mul(this.m_rpu),r=v(this.m_a,this.m_e2,t),s=this.m_normal.dotProduct(r);if(s<=0)return l.P.construct(NaN,NaN);let i=this.m_d/s,n=r.mul(i).sub(this.m_cartCenter3D),a=new l.P;return a.x=this.m_basisX.dotProduct(n),a.y=this.m_basisY.dotProduct(n),a}unprojectPoint(e){let t=this.m_cartCenter3D.add(this.m_basisX.mul(e.x).add(this.m_basisY.mul(e.y)));return b(this.m_a,this.m_e2,t).divide(this.m_rpu)}projectMultiVertex(e){let t=e.getImpl(),r=!0,s=new l.P,i=new l.P;for(let e=0,n=t.getPointCount();e<n;e++)t.queryXY(e,s),s.y*this.m_rpu>.5*Math.PI?i.assign(this.m_northPolePcs):s.y*this.m_rpu<.5*-Math.PI?i.assign(this.m_southPolePcs):i.assign(this.projectPoint(s)),t.setXYNoCurves(e,i),i.isNAN()&&(r=!1);return t.notifyModifiedFlags(2001),r}unprojectMultiVertex(e,t){let r=t.getImpl(),s=e*e,i=!this.m_northPolePcs.isNAN(),n=!this.m_southPolePcs.isNAN();for(let e=0,t=r.getPointCount();e<t;e++){let t=r.getXY(e),a=new l.P;i&&l.P.sqrDistance(t,this.m_northPolePcs)<=s?(a.setCoords(this.m_curvCenterRad.x,.5*Math.PI),a.scale(1/this.m_rpu)):n&&l.P.sqrDistance(t,this.m_southPolePcs)<=s?(a.setCoords(this.m_curvCenterRad.x,.5*-Math.PI),a.scale(1/this.m_rpu)):a=this.unprojectPoint(t),r.setXYNoCurves(e,a)}r.notifyModifiedFlags(2001)}}function Xs(e,t,r,s,i,g){let u=new a.P,_=new a.P,p=new m.T,d=i.getXY(i.getPathStart(s)),c=i.getXY(i.getPathEnd(s)-1),f=r.width(),x=.5*f,P=new n.Envelope2D;i.queryEnvelope(P);let y,E,S=Math.ceil(P.width()/f)+1;d.x>c.x?(y=-f,E=e?r.ymin:r.ymax):(y=f,E=e?r.ymax:r.ymin),p.setShiftCoords(y,0),u.addPath(i,s,!0),_.add(u,!1);let C=new o.P;for(let e=0;e<S;e++)_.applyTransformation(p),_.getPointByVal(0,C),u.lineToPoint(C),u.addSegmentsFromPath(_,0,0,_.getSegmentCount()-1,!1);let I=u.getXY(0),v=u.getXY(u.getPointCount()-1);I.y=E,v.y=E,u.lineTo(v);let G=new l.P;for(G.setCoordsPoint2D(v),G.x-=.5*y;Math.abs(G.x-I.x)>x;)u.lineTo(G),G.x-=.5*y;u.lineTo(I);let w=r.getCenter().x,b=new n.Envelope2D;u.queryEnvelope(b);let T=0,N=b.getCenter().x;N-w>x?T=-Math.ceil((N-w-x)/f):w-N>x&&(T=Math.ceil((w-N-x)/f)),0!==T&&(p.setShiftCoords(T*f,0),u.applyTransformation(p));let D=new a.E,V=D.addGeometry(u);bi(D,V,t,0,2,!0,r.xmin),bi(D,V,t,0,2,!0,r.xmax);let k=D.getGeometry(V),F=(0,o.h)(k,r);F.inflateCoords(0,1);let H=(0,o.c)(null,F,!0);return(0,h.c)(k,r,H.total(),NaN,g)}function Rs(e,t,r,s,i){let g=t.width(),u=.5*g,_=t.getCenter().x,p=new n.Envelope2D;s.queryPathEnvelope(r,p);let d=0,c=p.getCenter().x;if(c-_>u?d=-Math.ceil((c-_-u)/g):_-c>u&&(d=Math.ceil((_-c-u)/g)),0!==d){let e=new m.T;e.setShiftCoords(d*g,0),s.getImpl().applyTransformationToPath(e,r),s.queryPathEnvelope(r,p),c=p.getCenter().x}let f,x=new n.Envelope2D;t.containsExclusiveEnvelope(p)?(f=!1,x.setCoords({env2D:t})):(f=!0,x.setCoords({env2D:t}),x.xmin-=g,x.xmax+=g);let P=s.createInstance();P.addPathPoint2D(null,0,!0);let y=new l.P;if(y.setCoords(x.xmin,x.ymin),P.insertPoint2D(0,-1,y),y.setCoords(x.xmin,x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(.5*(x.xmin+x.xmax),x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(x.xmax,x.ymax),P.insertPoint2D(0,-1,y),y.setCoords(x.xmax,x.ymin),P.insertPoint2D(0,-1,y),y.setCoords(.5*(x.xmin+x.xmax),x.ymin),P.insertPoint2D(0,-1,y),f){P.addPath(s,r,!0);let n=new m.T;c<_?n.setShiftCoords(g,0):n.setShiftCoords(-g,0),s.getImpl().applyTransformationToPath(n,r),P.addPath(s,r,!0);let l=new a.E,u=l.addGeometry(P);bi(l,u,e,0,2,!0,t.xmin),bi(l,u,e,0,2,!0,t.xmax),P=l.getGeometry(u);let p=(0,o.h)(P,t);p.inflateCoords(0,1);let d=(0,o.c)(null,p,!0).total();P=(0,h.c)(P,t,d,NaN,i)}else P.addPath(s,r,!0);return P}function Ls(e,t,r,s,i){return i+e-t>r?i-=s:t-(i+e)>r&&(i+=s),i}function zs(e,t,r,s,i,n){let m=t.getAttributeStreamRef(0),h=t.getPointCount(),g=!1,u=new l.P;for(let e=0;e<h;++e){if(m.queryPoint2D(2*e,u),1&n&&u.y>=r){g=!0;break}if(2&n&&u.y<=-r){g=!0;break}}if(!g)return!1;let _=!1;e&&(_=t.getImpl().isClosedPathInXYPlane(0));let p=new a.E,d=p.addGeometry(t),c=p.getFirstPath(d),f=-1,x=!0,P=new l.P,y=new o.P,E=-1,S=Ws*i/360;for(let e=p.getFirstVertex(c);-1!==e;e=p.getNextVertex(e)){p.queryXY(e,u);let t=1&n&&u.y>=r?1:0;if(t|=2&n&&u.y<=-r?2:0,f>0&&f!==t){if(P.x!==u.x){let t=p.getPrevVertex(e);p.queryPoint(t,y);let r=p.insertVertex(c,e,y);P.x=u.x,p.setXY(r,P)}if(_){let t=-1===E?p.getFirstVertex(c):p.getNextVertex(E),r=p.getPrevVertex(e);for(;t!==r;)t=p.removeVertex(t,!1);if(-1!==E){let e=p.getXY(E),t=p.getXY(r);if(Math.abs(e.x-t.x)>S){p.queryPoint(E,y);let s=p.insertVertex(c,r,y);e.x=(0,l.r)(e.x,t.x,.5),p.setXY(s,e)}}}E=-1}if(t&&(u.y=(0,l.j)(s,u.y),p.setXY(e,u),!x&&f!==t))if(u.x!==P.x){p.queryPoint(e,y);let t=p.insertVertex(c,e,y);p.setXYCoords(t,P.x,u.y),E=t}else E=e;f=t,P.assign(u),x=!1}if(_){if(-1!==E){let e=p.getNextVertex(E);for(;-1!==e;)e=p.removeVertex(e,!1)}let e=p.getFirstVertex(c),t=p.getLastVertex(c),r=p.getXY(e),s=p.getXY(t);if(!r.equals(s)&&(p.queryPoint(e,y),t=p.insertVertex(c,-1,y),Math.abs(r.x-s.x)>S)){let e=p.insertVertex(c,t,y);r.x=(0,l.r)(r.x,s.x,.5),p.setXY(e,r)}}return t.assignCopy(p.getGeometry(d)),!0}const Ws=210;class js{m_inputPoly;m_originalGeometry;m_polygonRingFlags;m_originalSR;m_pannableSR;m_pannableExtent;m_progressTracker;m_centralLongitude;m_poleSnappingTolerance;m_width360;m_degree;m_GCSLargeDelta;m_poleFlags;m_bAdjustedAtPoles=0;constructor(e,t,r,s,n,a,o,l,m){this.m_inputPoly=r,this.m_progressTracker=m,this.m_originalGeometry=e,this.m_originalSR=s,this.m_polygonRingFlags=t,this.m_pannableSR=n,this.m_poleSnappingTolerance=l,this.m_poleFlags=o,this.m_bAdjustedAtPoles=0,this.m_pannableExtent=function(e,t){let r=e.getPannableExtent();return Number.isNaN(t)||r.centerAtCoords(t,0),r}(this.m_pannableSR,a),this.m_centralLongitude=Number.isNaN(a)?this.m_pannableExtent.getCenterX():a,this.m_width360=this.m_pannableExtent.width(),this.m_degree=this.m_width360/360,this.m_GCSLargeDelta=210*this.m_degree,(0,i.g)(null===this.m_originalGeometry&&null===this.m_originalSR||null!==this.m_originalGeometry&&null!==this.m_originalSR)}geonormalizeRing(e,t,r,s,n,m,h){let g=r,u=new a.a({vd:this.m_inputPoly.getDescription()});u.addPath(this.m_inputPoly,e,!0),0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=+!!zs(!0,u,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,this.m_pannableExtent.width(),this.m_poleFlags),this.m_bAdjustedAtPoles&&(g=!1));let _=-1;g&&(_=this.m_originalGeometry.getPathStart(e));let p=u.getAttributeStreamRef(0),d=u.getPointCount(),c=0,f=p.read(0),x=0,P=3*this.m_pannableSR.getTolerance(0),y=!1,E=new l.P,S=new l.P,C=!1,I=u.hasNonLinearSegments(),v=new l.P;for(let e=1;e<d;++e){p.queryPoint2D(2*e,v);let t=v.x,r=t+c,n=r-f;if(v.x=r,Math.abs(n)>this.m_GCSLargeDelta){if(g){let t=_+e-1,r=_+(e+1<d?e:0),i=m.read(2*t),a=(m.read(2*r)-i)*s;Math.abs(n-a)>1*this.m_degree&&(g=!1)}g||(c-=(0,l.j)(this.m_width360,r-f),r=t+c,++x,C=0!==c,v.x=r)}else y||(0,o.H)(E,S,v,P)&&(y=!0);C&&(I&&(0,i.d)("error in geonormalize_ring_ for curves"),p.write(2*e,r)),f=r,E.setCoordsPoint2D(S),S.setCoordsPoint2D(v)}x&&u.notifyModified();let G=u.getXY(0),w=u.getXY(d-1);if(l.P.distance(G,w)<P){let e=this.finalizeGeoNormalizeClosedRing(u,y,n);h.add(e,!1)}else{t<0&&(null===this.m_originalGeometry?t=1:((0,i.g)(null!==this.m_originalGeometry),t=+(this.m_originalGeometry.calculateRingArea2D(e)>0)));let r=this.finalizeGeoNormalizeOpenedRing(t>0,u);h.add(r,!1)}}geoNormalizePolygonGeometry(e){(0,i.g)(this.m_originalSR&&this.m_originalGeometry||!this.m_originalGeometry&&!this.m_originalSR),(0,i.g)(this.m_pannableSR.isPannable());let t=null,r=NaN,s=!!this.m_originalSR&&this.m_originalSR.isPannable();s&&(t=this.m_originalGeometry.getAttributeStreamRef(0),r=this.m_width360/this.m_originalSR.getPannableExtent().width()),this.m_bAdjustedAtPoles=0;let o=new a.P({vd:this.m_inputPoly.getDescription()});for(let i=0,n=this.m_inputPoly.getPathCount();i<n;++i){let n=this.m_polygonRingFlags?+!!this.m_polygonRingFlags[i]:-1;this.geonormalizeRing(i,n,s,r,e,t,o)}let l=this.m_pannableSR.getTolerance(0),m=this.m_pannableExtent.width()/180;ki(o,this.m_pannableExtent,.1*l,!1);let u=n.Envelope2D.constructEmpty();if(u.setCoords({env2D:this.m_pannableExtent}),e){let e=!0;for(let t=0;t<2;t++){e=!0;let t=n.Envelope2D.constructEmpty();for(let r=0,s=o.getPathCount();r<s;r++)if(o.queryPathEnvelope(r,t),!(u.xmin<=t.xmin&&u.xmax>=t.xmax||t.xmin>=u.xmax||t.xmax<=u.xmin)){e=!1;break}if(e)break;u.move(.5*this.m_width360,0)}e||u.setCoords({env2D:this.m_pannableExtent})}let _=(0,h.c)(o,u,l,m,this.m_progressTracker),p=o!==_,d=this.m_originalGeometry?this.m_originalGeometry.calculateArea2D():1,c=_.calculateArea2D(),f=0;if(c>0&&d<0)f=1;else if(c<=0&&d>0)if(0===c){if(this.m_originalSR){let e=NaN;2===this.m_originalSR.getCoordinateSystemType()?e=this.m_originalSR.getPCSHorizon().calculateArea2D():1===this.m_originalSR.getCoordinateSystemType()&&(e=this.m_originalSR.getPannableExtent().getArea()),d>.99*e&&(f=-1)}}else f=-1;if(0!==f){let e=function(e,t){let r=new a.P({vd:e});r.addEnvelope(t,!1);let s=t.width()/180;return r=(new g.O).execute(r,s,0,0,null),r}(_.getDescription(),u);e.add(_,!1),p=!0,_=e}return p&&(_=(new ts).execute(_,this.m_pannableSR,!1,this.m_progressTracker)),_}geoNormalizePolylineGeometry(e){(0,i.g)(this.m_pannableSR.isPannable());let t=null,r=this.m_originalSR&&this.m_originalSR.isPannable(),s=1;r&&((0,i.g)(this.m_originalGeometry),s=this.m_width360/this.m_originalSR.getPannableExtent().width(),t=this.m_originalGeometry.getAttributeStreamRef(0));let o=this.m_pannableExtent.width(),g=o*(0,l.I)()*4,u=e,_=NaN,p=l.E.constructEmpty();this.m_bAdjustedAtPoles=0;let d=new a.a({vd:this.m_inputPoly.getDescription()});for(let e=0,h=this.m_inputPoly.getPathCount();e<h;++e){let h=r,c=new a.a({vd:this.m_inputPoly.getDescription()});c.addPath(this.m_inputPoly,e,!0);let f=this.m_inputPoly.isClosedPath(e);0!==this.m_poleFlags&&(this.m_bAdjustedAtPoles|=+!!zs(f,c,this.m_pannableExtent.ymax-this.m_poleSnappingTolerance,this.m_pannableExtent.ymax,o,this.m_poleFlags),this.m_bAdjustedAtPoles&&(h=!1));let x=-1,P=c.getPointCount(),y=!1;h&&(x=this.m_originalGeometry.getPathStart(e),y=this.m_originalGeometry.isClosedPath(e));let E=c.getAttributeStreamRef(0),S=0,C=E.read(0),I=0,v=new l.P,G=new l.P,w=!1,b=c.hasNonLinearSegments(),T=new l.P;for(let e=1;e<P;++e){E.queryPoint2D(2*e,T);let r=T.x,n=r+S,a=n-C;if(T.x=n,Math.abs(a)>this.m_GCSLargeDelta){if(h){let r=x+e-1,i=x;(!y||e+1<P)&&(i+=e);let n=t.read(2*r),o=(t.read(2*i)-n)*s;Math.abs(a-o)>1*this.m_degree&&(h=!1)}h||(S-=(0,l.j)(this.m_width360,n-C),n=r+S,++I,w=0!==S,T.x=n)}w&&(b&&(0,i.d)("error in geonormalize_ring_ for curves"),E.write(2*e,n)),C=n,v.setCoordsPoint2D(G),G.setCoordsPoint2D(T)}if(I&&c.notifyModified(),u){let e=!1;if(!c.isEmpty()){let t=n.Envelope2D.constructEmpty();if(c.queryEnvelope(t),t.width()>=o||t.ymin<=this.m_pannableExtent.ymin||t.ymax>=this.m_pannableExtent.ymax)e=!0;else{if(Number.isNaN(_)){let e=this.m_centralLongitude-.5*o;_=t.xmin,_+=Math.round((e-t.xmin)/o)*o,_>e&&(_-=o),(0,i.g)(_<=e),_<e&&(_+=o),(0,i.g)(_>=e)}let r=Math.round((_-t.xmin)/o)*o;if(t.xmin+r>_+g&&(r-=o),t.xmin+r<_-g&&(r+=o),p.mergeCoordinate(t.xmin+r),p.mergeCoordinate(t.xmax+r),e=p.width()>=o,!e){let e=new m.T;e.setShiftCoords(r,0),c.applyTransformation(e)}}}d.add(c,!1),e&&(d=(()=>{let e=new a.a({vd:d.getDescription()});for(let t=0,r=d.getPathCount();t<r;++t){let r=new a.a({vd:d.getDescription()});r.addPath(d,t,!0);let s=Si(r,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);e.add(s,!1)}return e})(),u=!1)}else{let e=Si(c,this.m_pannableSR,this.m_centralLongitude,!0,0,this.m_progressTracker);d.add(e,!1)}}if(u)return d;let c=this.m_pannableSR.getTolerance(0),f=this.m_pannableExtent.width()/180;return ki(d,this.m_pannableExtent,.1*c,!1),(0,h.c)(d,this.m_pannableExtent,c,f,this.m_progressTracker)}finalizeGeoNormalizeOpenedRing(e,t){let r=t.getPointCount(),s=t.getXY(0),o=t.getXY(r-1);{let e=Math.abs(o.x-s.x),t=Math.round(e/this.m_width360)*this.m_width360;(0,i.g)(Math.abs(e-t)<this.m_pannableSR.getTolerance(0))}let h=(0,l.h)(o.x-s.x),g=n.Envelope2D.constructEmpty();t.queryLooseEnvelope(g);let u=this.m_pannableExtent.getCenterX(),_=0,p=u-this.m_width360,d=u+this.m_width360;if(h>=0){let e=Math.ceil((p-g.xmin)/this.m_width360);for(e*=this.m_width360;p>g.xmin+e;)e+=this.m_width360;for(;p<g.xmax+e;)e-=this.m_width360;for(_=e,g.width()>720&&(d=p+360*Math.ceil(g.width()/360));d<g.xmax;)d+=this.m_width360}else{let e=Math.ceil((d-g.xmax)/this.m_width360);for(e*=this.m_width360;d<g.xmax+e;)e-=this.m_width360;for(;d>g.xmin+e;)e+=this.m_width360;for(_=e,g.width()>720&&(p=d-360*Math.ceil(g.width()/360));p>g.xmin;)p-=this.m_width360}let c=Math.round(Math.abs(o.x-s.x)/this.m_width360)*this.m_width360,f=h*c,x=g.clone();x.move(_,0);let P=new l.P(0,0),y=new m.T;y.setShiftCoords(_,0),t.applyTransformation(y);let E=new a.a({vd:t.getDescription()});E.add(t,!1),P.assign(t.getXY(r-1));let S=0,C=E.getXY(0).x;for(;h>0?x.xmax<d:x.xmin>p;)x.move(f,0),y.xd=f,t.applyTransformation(y),C+=f,this.m_pannableExtent.xmin<=C&&this.m_pannableExtent.xmax>=C&&(S=E.getPointCount()-1),t.setXY(0,P),P.assign(t.getXY(r-1)),E.addSegmentsFromPath(t,0,0,r-1,!1);let I=new a.P({vd:E.getDescription()});I.add(E,!1);let v=E.getXY(0),G=E.getXY(E.getPointCount()-1),w=h<0?e:!e,b=I.getPointCount()-1;if(w){let e=new l.P(G.x,this.m_pannableExtent.ymax);I.lineTo(e);let t=new l.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymax);I.lineTo(t);let r=new l.P(v.x,this.m_pannableExtent.ymax);I.lineTo(r)}else{let e=new l.P(G.x,this.m_pannableExtent.ymin);I.lineTo(e);let t=new l.P(this.m_pannableExtent.getCenterX(),this.m_pannableExtent.ymin);I.lineTo(t);let r=new l.P(v.x,this.m_pannableExtent.ymin);I.lineTo(r)}if(I.interpolateAttributesPath(0,b,0),I.getImpl().changeRingStartPoint(S),c>this.m_width360){let e=new a.P({copy:I});y.setShiftCoords(this.m_width360,0),e.applyTransformation(y),I.add(e,!1)}return I}finalizeGeoNormalizeClosedRing(e,t,r){let s=new a.P({vd:e.getDescription()});if(s.add(e,!1),s.hasNonLinearSegments()&&(()=>{let e=s.getPointCount()-2;return s.getSegmentType(e)!==i.G.enumLine})()){let e=new a.S,t=s.getPointCount()-2;s.getSegmentBuffer(t,e,!1),s.removePointFromPath(0,t+1),s.closeLastPathWithSegment(e.get())}else s.removePointFromPath(0,s.getPointCount()-1);let o=n.Envelope2D.constructEmpty();s.queryLooseEnvelope(o);let h=Math.ceil((this.m_pannableExtent.xmin-o.xmin)/this.m_width360);for(h*=this.m_width360;this.m_pannableExtent.xmin>o.xmin+h;)h+=this.m_width360;for(;this.m_pannableExtent.xmin<o.xmax+h;)h-=this.m_width360;if(h+=this.m_width360,0!==h){o.move(h,0);let e=new m.T;e.setShiftCoords(h,0),s.applyTransformation(e)}if(this.m_pannableExtent.xmin<=o.xmin&&this.m_pannableExtent.xmax>=o.xmax){if(t){let e=s.calculateArea2D(),t=(new ts).execute(s,this.m_pannableSR,!0,this.m_progressTracker);if(t!==s){let r=t.calculateArea2D();(0,l.h)(e)!==(0,l.h)(r)&&t.reverseAllPaths(),s.assignMove(t)}}let e;if(e=r?new a.P({copy:s}):new a.P({move:s}),r)for(;o.xmin<this.m_pannableExtent.xmax;){o.move(this.m_width360,0);let t=new m.T;t.setShiftCoords(this.m_width360,0),s.applyTransformation(t),e.add(s,!1)}return e}let g=new a.P({vd:e.getDescription()});g.add(s,!1);let u=t||o.width()>this.m_width360-10*this.m_pannableSR.getTolerance(0);for(;o.xmin<this.m_pannableExtent.xmax;){o.move(this.m_width360,0);let e=new m.T;e.setShiftCoords(this.m_width360,0),s.applyTransformation(e),g.add(s,!1)}if(u){let e=g.calculateArea2D();g.setFillRule(1),g=(new ts).execute(g,this.m_pannableSR,!0,this.m_progressTracker);let t=g.calculateArea2D();(0,l.h)(e)!==(0,l.h)(t)&&g.reverseAllPaths()}return g}geonormalize_ring_(e,t,r,s,n,a,o){(0,i.g)(0)}}function Zs(e){(0,i.g)(0);let t=function(e){let t=new hn({},!0);return t.m_WKID=e,t}(e),r=new Qs;return r.setVertProj_(t),r}function Ks(e){return!1}class Qs{m_hashCode=0;m_peVertSysVal=null;m_verticalUnit=new kn;m_verticalShift=0;m_userVerticalWKID=0;m_bIsDepth=!1;getType(){return(0,i.g)(0),0}getID(){return(0,i.g)(0),0}getLatestID(){return this.m_peVertSysVal?this.m_peVertSysVal.getLatestID():0}getOldID(){return this.m_peVertSysVal?this.m_peVertSysVal.getOldID():0}getText(){return(0,i.g)(0),""}getTextExtended(e){return(0,i.g)(0),""}getText2(e){return(0,i.g)(0),""}getUnit(){return(0,i.g)(0),{}}equals(e){return(0,i.g)(0),!1}equalForProjection(e){return(0,i.g)(0),!1}getPeVertcsCopy(){return(0,i.g)(0),{}}getOneMeter(){return 1/this.m_verticalUnit.getUnitToBaseFactor()}getUnitToBaseFactor(){return(0,i.g)(0),0}isDepth(){return(0,i.g)(0),!1}getVerticalShift(){return(0,i.g)(0),0}isCustomWkid(){return!!this.m_peVertSysVal&&this.m_peVertSysVal.isCustomWkid()}getHashCode(){return this.m_hashCode}setVertProj_(e){this.m_peVertSysVal=e}getPEVerticalCoordSys(){return this.m_peVertSysVal?this.m_peVertSysVal.m_peVertcs:null}}function Js(e,t,r,s,i){if(e.equals(t))return!1;if(s){let r=1,n=0,a=1,o=1,l=0,m=1;Number.isNaN(e.m_heightMetersPerUnit)||(r=e.m_heightMetersPerUnit,n=e.m_heightZ0,a=e.m_heightSign,o=t.m_heightMetersPerUnit,l=t.m_heightZ0,m=t.m_heightSign);let h=a*m*r/o;for(let e=0;e<i;e++)s[e]=(s[e]-n)*h+l}let n=1,o=0;if(Number.isNaN(e.m_XYToRadians)||(n=e.m_XYToRadians/t.m_XYToRadians,o=e.m_PrimeMeridianDegrees-t.m_PrimeMeridianDegrees,0!==o&&(o=(0,a.b)(o),o/=t.m_XYToRadians)),Array.isArray(r)){let e=r;for(let t=0;t<i;t++)e[t][0]=e[t][0]*n+o,e[t][1]=e[t][1]*n}else{let e=r;for(let t=0;t<i;t++){let r=t<<1;e[r]=e[r]*n+o,e[r+1]=e[r+1]*n}}return!0}function $s(){return{m_heightMetersPerUnit:0,m_heightSign:0,m_heightZ0:0,m_XYToRadians:0,m_PrimeMeridianDegrees:0,assign(e){this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0,this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees},equals(e){return(0,l.G)(this.m_heightSign,e.m_heightSign)&&(0,l.G)(this.m_heightMetersPerUnit,e.m_heightMetersPerUnit)&&(0,l.G)(this.m_heightZ0,e.m_heightZ0)&&(0,l.G)(this.m_XYToRadians,e.m_XYToRadians)&&(0,l.G)(this.m_PrimeMeridianDegrees,e.m_PrimeMeridianDegrees)},initFromGcsAndVcsPe(e,t){this.m_heightSign=1,this.m_heightMetersPerUnit=NaN,this.m_heightZ0=0,this.m_XYToRadians=NaN,this.m_PrimeMeridianDegrees=NaN,t&&(0,i.g)(0),e&&(this.m_XYToRadians=e.getUnit().getUnitFactor(),this.m_PrimeMeridianDegrees=e.getPrimem().getLongitude())},initFromGcsAndVcs(e,t){let r=e?e.getPECoordSys():null,s=t?t.getPEVerticalCoordSys():null;this.initFromGcsAndVcsPe(r,s)},processUnitParams(e){Number.isNaN(this.m_heightMetersPerUnit)&&(this.m_heightMetersPerUnit=e.m_heightMetersPerUnit,this.m_heightSign=e.m_heightSign,this.m_heightZ0=e.m_heightZ0),Number.isNaN(this.m_XYToRadians)&&(this.m_XYToRadians=e.m_XYToRadians,this.m_PrimeMeridianDegrees=e.m_PrimeMeridianDegrees)}}}class ei{m_inputUnitParams;m_outputUnitParams;m_constantsLoaded=-1;m_isUsable=-1;m_latestID;m_inputSR=null;m_outputSR=null;m_inputSRHorz=null;m_outputSRHorz=null;m_inputVCS=null;m_outputVCS=null;m_geogTran;m_vertTran;m_hashCode=0;m_areaOfUse=new o.E;constructor(e){this.m_inputUnitParams=$s(),this.m_outputUnitParams=$s(),(0,i.g)(e),this.m_geogTran=e,this.m_vertTran=null,this.m_latestID=Ia.getCode(this.m_geogTran),this.m_latestID<0&&(this.m_latestID=0);let t=this.m_geogTran.getGeogcs1();Ia.getCode(t);let r=this.m_geogTran.getGeogcs2();Ia.getCode(r),this.initUnitParams()}getLatestId(){return this.m_latestID}getText(){return this.m_geogTran?this.m_geogTran.toString():((0,i.g)(0),"")}getGeogtran(){return this.m_geogTran}getVerttran(){return null}loadConstants(e){let t=this.m_constantsLoaded;if(-1===t){if(!e){this.m_geogTran||(0,i.d)("vcs not impl");let t=this.m_geogTran.getParameters();null!==t[va.PE_PARM_ND]&&(e=0===t[va.PE_PARM_ND].getValue())}t=+!!this.m_geogTran.loadConstants(),this.m_constantsLoaded=t}return 0!==t}isUsable(){let e=this.m_isUsable;return-1===e&&(this.m_isUsable=e=this.m_geogTran?+!!this.m_geogTran.usable():+!!this.m_vertTran),1===e}getInputSr(e){return this.updateSrs(),e?this.m_inputSR:this.m_inputSRHorz}getOutputSr(e){return this.updateSrs(),e?this.m_outputSR:this.m_outputSRHorz}getHashCode(){let e=this.m_hashCode;return 0===e&&(e=this.m_latestID>0?(0,l.C)(this.m_latestID):(0,l.L)(this.getText()),0===e&&(e=345),this.m_hashCode=e),e}isGeogtran(){return null!==this.m_geogTran}prepareOrThrow(){}getName(){return this.isGeogtran()?this.getGeogtran().getName():((0,i.a)("vcs not impl"),"")}updateSrs(){if(this.m_inputSR||this.m_inputVCS)return;let e,t,r,s,n,a;if(this.m_geogTran){let i=this.m_geogTran.getGeogcs1(),o=Cn(i),l=this.m_geogTran.getGeogcs2(),m=Cn(l),h=-1,g=-1;h=o.getVcsCode(),g=m.getVcsCode(),r=Zn(i,null,0,1),s=Zn(l,null,0,1),h>0&&g>0?(n=Zs(h),a=Zs(g),e={},t={}):(e=r,t=s)}else(0,i.g)(0);!this.m_inputSR&&!this.m_inputVCS&&(this.m_inputSR=e,this.m_outputSR=t,this.m_inputSRHorz=r,this.m_outputSRHorz=s,this.m_inputVCS=n,this.m_outputVCS=a)}initUnitParams(){if(this.m_inputUnitParams.m_heightSign=1,this.m_inputUnitParams.m_heightMetersPerUnit=NaN,this.m_inputUnitParams.m_heightZ0=0,this.m_outputUnitParams.m_heightSign=1,this.m_outputUnitParams.m_heightMetersPerUnit=NaN,this.m_outputUnitParams.m_heightZ0=0,this.m_inputUnitParams.m_XYToRadians=NaN,this.m_inputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_outputUnitParams.m_XYToRadians=NaN,this.m_outputUnitParams.m_PrimeMeridianDegrees=NaN,this.m_vertTran)(0,i.g)(0);else if(this.m_geogTran){let e=this.m_geogTran,t=e.getGeogcs1();this.m_inputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_inputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude(),t=e.getGeogcs2(),this.m_outputUnitParams.m_XYToRadians=t.getUnit().getUnitFactor(),this.m_outputUnitParams.m_PrimeMeridianDegrees=t.getPrimem().getLongitude()}}}function ti(e,t,r,s,i,n,a){let o=null;t&&(o=t.getPEVerticalCoordSys());let l=null;e&&(l=e.getPECoordSys());let m=null;s&&(m=s.getPEVerticalCoordSys());let h=null;if(r&&(h=r.getPECoordSys()),!(l||o||h||m))return!1;let g=$s();g.initFromGcsAndVcsPe(l,o);let u=$s();return u.initFromGcsAndVcsPe(h,m),Js(g,u,i,n,a)}function ri(e,t,r,s,i,n,a,o){let l=t,m=e,h=$s();h.initFromGcsAndVcsPe(m,l),o.assign(s?r.m_outputUnitParams:r.m_inputUnitParams),o.processUnitParams(h),h.processUnitParams(o),a>0&&Js(h,o,i,n,a)}function si(e,t,r,s,i,n,a,o,l){let m=$s(),h=$s();m.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),h.assign(i?s.m_outputUnitParams:s.m_inputUnitParams),m.processUnitParams(e),h.processUnitParams(m),m.processUnitParams(h),o>0&&Js(m,h,n,a,o),l.assign(h)}function ii(e,t,r,s,i,n,a){let o=t.getVerttran(),l=t.getGeogtran();if(a.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),a.processUnitParams(e),n>0){t.prepareOrThrow();let e=r?va.PE_TRANSFORM_2_TO_1:va.PE_TRANSFORM_1_TO_2;o?Ji():$i(l,n,s,i,e)}}class ni{supportsCurves(){return!0}accelerateGeometry(e,t,r){return ai(e,t,r)}canAccelerateGeometry(e){return oi(e)}}function ai(e,t,r){if(!oi(e))return!1;(0,o.m)(t,e,!1);let s=0,n=e.getGeometryType();return(0,i.j)(n)&&(0,a.y)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeAccelerator(r)),(0,i.j)(n)&&(0,a.z)(e)&&0!==r&&(s|=+!!e.getImpl().buildQuadTreeForPathsAccelerator(r)),s>0}function oi(e){return(0,a.y)(e)||(0,a.z)(e)}class li extends ni{getOperatorType(){return 8}execute(e,t,r,s){return et(e,t,r,1,s)}}class mi{getOperatorType(){return 10002}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s){return new hi(e,t,r,s)}execute(e,t,r,s){return this.executeMany(new _.S([e]),new _.S([t]),r,s).next()}}class hi extends u.G{m_inputGeoms;m_progressTracker;m_spatialReference;m_geomSubtractor;m_index;constructor(e,t,r,s){super(),this.m_progressTracker=s,this.m_index=-1,this.m_inputGeoms=e,this.m_spatialReference=r;let i=t.next();this.m_geomSubtractor=i||new a.P}next(){let e=this.m_inputGeoms.next();return e?((0,i.t)(e),(0,i.s)(e),this.m_index=this.m_inputGeoms.getGeometryID(),function(e,t,r,s){if(e.isEmpty()||t.isEmpty())return e;let m=e.getDimension(),g=t.getDimension();if(m>g)return e;let u=e.getGeometryType(),_=t.getGeometryType(),p=new n.Envelope2D,d=new n.Envelope2D,c=new n.Envelope2D;e.queryEnvelope(p),t.queryEnvelope(d),c.setCoords({env2D:p}),c.mergeEnvelope2D(d);let f=(0,o.c)(r,c,!0),x=(0,o.f)(f),P=new n.Envelope2D;if(P.setCoords({env2D:p}),P.inflateCoords(x,x),!P.isIntersecting(d))return e;if(1===m&&2===g){let l=function(e,t,r,s,l){let m=new o.E;e.queryEnvelope(m);let h=new n.Envelope2D;t.queryEnvelope(h),m.merge(h);let g=.1*m.width(),u=.1*m.height();m.inflateCoords(g,u);let _=new a.P;_.addEnvelope(m,!1);let p=_.getImpl();if(r===i.G.enumPolygon){let e=t.getImpl();p.add(e,!0)}else p.addEnvelope(t,!0);return new ss(_,s,-1,l).tryFastImplementation(e)}(e,t,_,r,s);if(l)return l}if(u===i.G.enumPoint){let r;switch((0,i.h)(_)?(r=new a.a({vd:t.getDescription()}),r.addSegment(t,!0)):r=t,_){case i.G.enumPolygon:return function(e,t,r){return 0===er(t,e,r.total())?e:e.createInstance()}(e,r,f);case i.G.enumPolyline:return function(e,t,r){let s=e.getXY(),i=t.querySegmentIterator(),a=(0,o.f)(r),m=a*a;for(;i.nextPath();)for(;i.hasNextSegment();){let t=i.nextSegment(),o=new n.Envelope2D;if(t.queryEnvelope(o),o.inflateCoords(a,a),!o.contains(s))continue;if(t.isIntersectingPoint(s,r.total()))return e.createInstance();let h=t.getStartXY();if(l.P.sqrDistance(s,h)<=m||(h=t.getEndXY(),l.P.sqrDistance(s,h)<=m))return e.createInstance()}return e}(e,r,f);case i.G.enumMultiPoint:return function(e,t,r){let s=t.getImpl().getAttributeStreamRef(0),i=t.getPointCount(),n=e.getXY(),a=(0,o.f)(r),m=a*a,h=new l.P;for(let t=0;t<i;t++)if(s.queryPoint2D(2*t,h),l.P.sqrDistance(h,n)<=m)return e.createInstance();return e}(e,r,f);case i.G.enumEnvelope:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getXY();return s.contains(i)?e.createInstance():e}(e,r,f);case i.G.enumPoint:return function(e,t,r){let s=(0,o.f)(r),i=s*s,n=e.getXY(),a=t.getXY();return l.P.sqrDistance(n,a)<=i?e.createInstance():e}(e,r,f);default:(0,i.b)("invalid shape type")}}else if(u===i.G.enumMultiPoint)switch(_){case i.G.enumPolygon:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getPointCount(),a=!1,o=(0,l.c)(i,!1),m=new l.P;for(let n=0;n<i;n++)e.queryXY(n,m),s.contains(m)&&0!==tr(t,m,r.total())&&(a=!0,o[n]=!0);if(!a)return e;let h=e.createInstance();for(let t=0;t<i;t++)o[t]||h.addPoints(e,t,t+1);return h}(e,t,f);case i.G.enumEnvelope:return function(e,t,r){let s=new n.Envelope2D;t.queryEnvelope(s),s.inflate(r.total());let i=e.getPointCount(),a=!1,o=(0,l.c)(i,!1),m=new l.P;for(let t=0;t<i;t++)e.queryXY(t,m),s.contains(m)&&(a=!0,o[t]=!0);if(!a)return e;let h=e.createInstance();for(let t=0;t<i;t++)o[t]||h.addPoints(e,t,t+1);return h}(e,t,f);case i.G.enumPoint:return function(e,t,r){let s=e.getImpl().getAttributeStreamRef(0),i=e.getPointCount(),n=t.getXY(),a=!1,m=(0,l.c)(i,!1),h=(0,o.f)(r),g=h*h,u=new l.P;for(let e=0;e<i;e++)s.queryPoint2D(2*e,u),l.P.sqrDistance(u,n)<=g&&(a=!0,m[e]=!0);if(!a)return e;let _=e.createInstance();for(let t=0;t<i;t++)m[t]||_.addPoints(e,t,t+1);return _}(e,t,f)}let y=new n.Envelope2D(p);return y.inflate(100*f.total()),function(e,t,r,s){if(e.isEmpty()||t.isEmpty()||e.getDimension()>t.getDimension())return Mr(Ur(e),e,0,"-");let l=new n.Envelope2D;e.queryEnvelope(l);let m=new n.Envelope2D;t.queryEnvelope(m);let h=new n.Envelope2D;h.setCoords({env2D:l}),h.mergeEnvelope2D(m);let g=(0,o.c)(r,h,!0),u=m.clone(),_=(0,o.f)(g);if(u.inflateCoords(_,_),!l.isIntersecting(u))return Mr(Ur(e),e,0,"-");let p=new Ar(s),d=new a.E,c=d.addGeometry(Ur(e)),f=d.addGeometry(Ur(t)),x=0,P=0,y=null;if(d.hasCurves()){y=new dr;let e=d.getEnvelope2D(s);P=_r(g.total());let t=ur(g.total(),e);x=pr(t,P),lr(d,t,g.total(),0,y,null,s)}p.setEditShapeCrackAndCluster(d,g.add(x));let E=p.difference(c,f);null!==y&&y.stitchCurves(d,E,P,!0);let S=Mr(d.getGeometry(E),e,0,"-");return vr(S.getGeometryType())&&(S.getImpl().setIsSimple(4,g.total()),S.getGeometryType()===i.G.enumPolygon&&S.getImpl().updateOGCFlagsProtected()),S}(e,(0,h.c)(t,y,0,0,s),r,s)}(e,this.m_geomSubtractor,this.m_spatialReference,this.m_progressTracker)):null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class gi{getOperatorType(){return 10001}supportsCurves(){return!0}accelerateGeometry(e,t,r){return!1}canAccelerateGeometry(e){return!1}executeMany(e,t,r,s=0){return new _i(e,t,r,s)}execute(e,t,r,s){let n=new _.S([e,t]),a=new _i(n,r,s,0).next();return a||(0,i.d)("null output"),a}}class ui{binVertexCount;geometries;constructor(){this.binVertexCount=0,this.geometries=[]}addPair(e){this.binVertexCount+=e.vertexCount,this.geometries.push(e)}sort(){this.geometries.sort((e,t)=>function(e,t){return l.P.compareZorder(e.location,t.location)?-1:+!e.location.equals(t.location)}(e,t))}geomCount(){return this.geometries.length}geomPairs(){return this.geometries}clear(){this.binVertexCount=0,this.geometries.length=0}getBinVertexCount(){return this.binVertexCount}}class _i extends u.G{m_inputGeoms;m_progressTracker;m_spatialReference;m_bUnionAllDimensions;m_bPreserveAllPathEnds;m_index=-1;m_currentDim=-1;m_bDone=!1;m_unionBins=[];m_readyGeoms=(0,l.D)(4);m_dimGeomCounts=(0,l.c)(4,0);m_addedGeoms=0;m_options;m_maxDimension=-1;m_bHadGeometry=(0,l.c)(4,!1);m_bIs3D;m_complexUnionGeoms=(0,l.D)(4);m_totalNonEmptyGeomCounters=(0,l.c)(4,0);constructor(e,t,r,s,i=!1){super(),this.m_progressTracker=r,this.m_bUnionAllDimensions=!!(4&s),this.m_bPreserveAllPathEnds=!!(8&s),this.m_inputGeoms=e,this.m_spatialReference=t,this.m_options=s,this.m_bIs3D=i}next(){if(this.m_bDone&&this.m_currentDim===this.m_maxDimension)return null;for(;!this.step_(););if(-1===this.m_maxDimension)return null;if(this.m_bUnionAllDimensions){if(-1===this.m_currentDim)for(let e=0;e<=this.m_maxDimension;e++)if(this.m_bHadGeometry[e]){this.m_complexUnionGeoms[e]=this.getResultGeometry(e);for(let t=e+1;t<=this.m_maxDimension;t++)this.m_complexUnionGeoms[t]=this.getResultGeometry(t),this.m_bHadGeometry[t]&&!this.m_complexUnionGeoms[t].isEmpty()&&(this.m_bIs3D?(0,i.g)(0):this.m_complexUnionGeoms[e]=(new mi).execute(this.m_complexUnionGeoms[e],this.m_complexUnionGeoms[t],this.m_spatialReference,this.m_progressTracker))}for(;this.m_currentDim++,(this.m_currentDim>this.m_maxDimension||this.m_currentDim<0)&&(0,i.d)(""),!this.m_bHadGeometry[this.m_currentDim];);if(this.m_index++,0===this.m_currentDim&&this.m_complexUnionGeoms[this.m_currentDim].getGeometryType()===i.G.enumPoint){let e=new a.M({vd:this.m_complexUnionGeoms[this.m_currentDim].getDescription()});return this.m_complexUnionGeoms[this.m_currentDim].isEmpty()||e.add(this.m_complexUnionGeoms[this.m_currentDim]),e}return this.m_complexUnionGeoms[this.m_currentDim]}return this.m_index=0,this.m_currentDim=this.m_maxDimension,this.getResultGeometry(this.m_maxDimension)}getGeometryID(){return this.m_index}getRank(){return 1}tock(){return this.step_()}getResultGeometry(e){return this.m_readyGeoms[e]}finishDim(e,t,r){let s=t;if(!r)return 16&this.m_options&&(s=Fr([s],1,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D)),s;if(1&this.m_options)return s;if(1===e)if(8&this.m_options||!(16&this.m_options||this.m_totalNonEmptyGeomCounters[e]>1))1===this.m_totalNonEmptyGeomCounters[e]&&(this.m_bIs3D?(0,i.g)(0):s=(new ts).execute(s,this.m_spatialReference,!1,this.m_progressTracker));else{s=Fr([s],1,this.m_spatialReference,this.m_progressTracker,16|this.m_options,this.m_bIs3D);let e=s.getImpl().getIsSimple(0,[0]);(0,i.g)(this.m_bIs3D||(0,o.i)(e))}else this.m_bIs3D?(0,i.g)(0):s=(new ts).execute(s,this.m_spatialReference,!1,this.m_progressTracker);if(0===e&&s.getGeometryType()===i.G.enumPoint){let e=new a.M({vd:s.getDescription()});s.isEmpty()||e.add(s),s=e}return s}static getLevel(e){let t=(0,i.v)(e),r=t>0?(Math.log(t)-Math.log(32))/Math.log(4):0;return r<0&&(r=0),Math.floor(r)}step_(){if(this.m_bDone)return!0;let e;if(this.m_inputGeoms?(e=this.m_inputGeoms.next(),null===e?(this.m_bDone=!0,this.m_inputGeoms=null):(this.checkAndThrow(e),e.isEmpty()||this.m_totalNonEmptyGeomCounters[e.getDimension()]++)):e=null,null!==e){let t=e.getDimension();this.m_bHadGeometry[t]=!0,(t>=this.m_maxDimension||this.m_bUnionAllDimensions)&&(this.addGeom(t,!1,e),t>this.m_maxDimension&&!this.m_bUnionAllDimensions&&this.removeAllBinsWithLowerDimension(t))}if(this.m_addedGeoms>0)for(let e=0;e<=this.m_maxDimension;e++){for(;this.m_dimGeomCounts[e]>1;){let t=this.collectGeometriesToUnion(e);if(null===t)break;{let r;r=1&this.m_options?Fr(t,t.length,this.m_spatialReference,this.m_progressTracker,this.m_options,this.m_bIs3D):Hr(t,t.length,this.m_spatialReference,this.m_progressTracker,8|this.m_options,this.m_bIs3D),this.addGeom(e,!0,r)}}if(this.m_bDone&&((0,i.g)(this.m_dimGeomCounts[e]<=1),0!==this.m_dimGeomCounts[e])){let t=this.m_unionBins[e].entries().next().value,r=t[1].geomPairs()[0].geom,s=t[1].geomPairs()[0].bUnioned;this.m_unionBins[e].clear(),this.m_readyGeoms[e]=this.finishDim(e,r,s)}}return this.m_bDone}addGeom(e,t,r){let s={geom:null,vertexCount:-1,bUnioned:!1,location:new l.P};s.geom=r;let a=(0,i.v)(r);s.vertexCount=a;let o=n.Envelope2D.constructEmpty();r.queryEnvelope(o),s.location=a>0?o.getCenter():new l.P(0,0);let m=_i.getLevel(r);if(e+1>this.m_unionBins.length)for(;this.m_unionBins.length<Math.max(2,e+1);)this.m_unionBins.push(new Map);let h=null,g=this.m_unionBins[e].get(m);g&&(h=g),null===h&&(h=new ui,this.m_unionBins[e].set(m,h)),s.bUnioned=t,h.addPair(s),this.m_dimGeomCounts[e]++,this.m_addedGeoms++,this.m_maxDimension=Math.max(this.m_maxDimension,e)}removeAllBinsWithLowerDimension(e){for(let t=0;t<e;t++)this.m_unionBins[t].clear(),this.m_addedGeoms-=this.m_dimGeomCounts[t],this.m_dimGeomCounts[t]=0}collectGeometriesToUnion(e){if(1&this.m_options&&!this.m_bDone)return null;let t=null,r=[];for(let t of this.m_unionBins[e].keys())r.push(t);(0,l.w)(r);for(let s=0;s<r.length;s++){if(-1===r[s])continue;let i=this.m_unionBins[e].get(r[s]);{let n=i.getBinVertexCount()>5e3&&i.geomCount()>=4;if(this.m_bDone||n){for(let i=0;i<s;i++){if(-1===r[i])continue;let s=this.m_unionBins[e].get(r[i]);s.sort(),this.m_dimGeomCounts[e]-=s.geomCount(),this.m_addedGeoms-=s.geomCount();for(let e of s.geomPairs())t||=[],t.push(e.geom);s.clear(),this.m_unionBins[e].delete(r[i]),r[i]=-1}i.sort(),this.m_dimGeomCounts[e]-=i.geomCount(),this.m_addedGeoms-=i.geomCount();for(let e of i.geomPairs())t||=[],t.push(e.geom);if(i.clear(),this.m_unionBins[e].delete(r[s]),r[s]=-1,!this.m_bDone)break}}}return t}checkAndThrow(e){this.m_bIs3D&&(e.getDimension()>1&&(0,i.x)(),e.hasAttribute(1)||(0,i.b)("Geometry must have Zs")),(0,i.t)(e)}}class pi extends ni{getOperatorType(){return 3}execute(e,t,r,s=null){return et(e,t,r,4,s)}}function di(e,t,r){let s=t.getGCSSplitLines();if(null===s)return e;let h=t.getGCS(),g=h.getPannableExtent().width(),u=n.Envelope2D.constructEmpty();e.queryLooseEnvelope(u);let _=l.E.constructEmpty();u.queryIntervalX(_);let p=s.querySegmentIterator(),d=null,c=new m.T;for(;p.nextPath();)for(;p.hasNextSegment();){let e=p.nextSegment(),t=e.queryInterval(0,0),r=l.E.constructEmpty();r.setCoordsFromEnvelope(t);let s=0;for(;r.vmax>_.vmin;)r.move(-g),s--;for(;r.vmin<=_.vmax;){if(r.isIntersecting(_)){null===d&&(d=new a.a);let t=new a.L({start:e.getStartXY(),end:e.getEndXY()});0!==s&&(c.setShiftCoords(s*g,0),t.applyTransformation(c)),d.addSegment(t,!0)}r.move(g),++s}}if(null!==d){let t=(0,o.e)(h,d,!0);return function(e,t,r,s){let n=t.getGeometryType();if((0,i.j)(n))return new Ge(s).crackAWithBMultiPath_(e,t,r);(0,i.a)("crack_A_with_B")}(e,d,(0,o.f)(t),r)}return e}function ci(e,t,r){let s=e.getName();return function(e){return e.startsWith(ra())}(s)||(r||t>0?(s=e.toString(va.PE_STR_NAME_CANON|va.PE_STR_AUTH_NONE),s=function(e){return e.toLocaleUpperCase("en-US")}(s)):s=e.toString(va.PE_STR_AUTH_TOP)),s}function fi(e,t=-1){if((t>1||t<-1)&&(0,i.b)("verbosity"),-1===t)return e.toString();{let r=0===t?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL;return e.toString(r)}}function xi(e,t,r,s){if(e.isEmpty()||1===r)return e;let a=e.getGeometryType();if(a===i.G.enumPoint){let s=e,i=s.getXY();return 0===Ei([i],1,t,r)||i.isNAN()?s.setEmpty():s.setXY(i),e}if(a===i.G.enumMultiPoint){let s=e,i=e.createInstance(),n=s.getPointCount();i.reserve(n);let a=s.getAttributeStreamRef(0),l=s.getDescription().getAttributeCount()>1,m=new o.P,h=Float64Array.from(a.getArray());if(Ei(h,n,t,r)>0)for(let e=0,t=2*n;e<t;e+=2)Number.isNaN(h[e])||(l?(s.getPointByVal(e>>1,m),m.setXYCoords(h[e],h[e+1]),i.add(m)):i.addXY(h[e],h[e+1]));return i}let l=e,g=t.getOneDegreeGCSUnit(),u=90*g,_=180*g,p=360*g,d=t.getCentralMeridian(),c=.5*g,f=n.Envelope2D.constructEmpty();l.queryEnvelope(f);let x=t.getGCSHorizon(),P=t.getGCSHorisonIsInclusive(),y=x.getGeometryType()===i.G.enumEnvelope,E=n.Envelope2D.constructEmpty();x.queryEnvelope(E);let S=t.getGCS();if((2===r||4===r)&&(E.xmin=d-_,E.xmax=E.xmin+p),4===r){if(!(f.width()>p-g)){let e=n.Envelope2D.constructEmpty();e.setCoords({xmin:f.xmin-g,ymin:E.ymin,xmax:f.xmax+g,ymax:E.ymax}),l=(new h.O).execute(l,e,S,s);let t=Math.floor((d-f.getCenterX())/p);for(f.move(t*p,0);f.xmin>E.xmax;)--t,f.move(-p,0);for(;f.xmin<E.xmin;)t+=1,f.move(p,0);if(0!==t){let e=new m.T;e.setShiftCoords(t*p,0),l.applyTransformation(e)}return l}r=2}if(2===r&&(E.xmin=d-_,E.xmax=E.xmin+p),f.ymin<-u||f.ymax>u){let e=n.Envelope2D.constructEmpty();if(e.setCoords({xmin:f.xmin-g,ymin:-u,xmax:f.xmax+g,ymax:u}),l=(new h.O).execute(l,e,S,s),l.isEmpty())return l;l.queryEnvelope(f)}if(P&&(E.ymax<f.ymin||E.ymin>f.ymax))return l.createInstance();f.width()>p&&(l=Di(l,d-_,p,S,!0,0,!0,s),l.queryEnvelope(f));let C=function(e,t,r,s,i){return e>=r&&t<=s?0:Ni(.5*(t+e),r,s,i)}(f.xmin,f.xmax,E.xmin,E.xmax,p);if(0!==C&&f.move(C,0),f.xmax>E.xmax||f.xmin<E.xmin){if(f.xmax>E.xmax)for(;f.xmin>=E.xmax;)f.move(-p,0),C-=p;for(;f.xmin<E.xmax-p;)f.move(p,0),C+=p}let I=(0,o.m)(S,x,!1);if(0!==C){let e=new m.T;e.setShiftCoords(C,0),l.applyTransformation(e),C=0}if(P){if(y&&E.containsEnvelope(f))return l;let e=[,,];for(let t=0;t<2;t++){let r;if(y?r=(0,i.j)(a)?(0,h.c)(l,E,I,c,s):(0,h.c)(l,E,I,0,s):(r=(new ns).execute(l,x,S,s),r===x&&(r=r.clone())),E.xmin<=f.xmin&&E.xmax>=f.xmax||E.xmin>=f.xmin&&E.xmax<=f.xmax)return r;if(e[t]=r,0===t){f.move(-p,0);let e=new m.T;e.setShiftCoords(-p,0),l.applyTransformation(e)}}return(0,i.j)(a)?e[0].add(e[1],!1):(0,i.d)("intersect_with_GCS_horizon: unexpected geometry type"),e[0]}{if(E.ymax<f.ymin||E.ymin>f.ymax)return l;let e=0;for(;!l.isEmpty()&&f.xmax>E.xmin;){if(0!==e){let t=new m.T;t.setShiftCoords(e,0),l.applyTransformation(t)}if((new pi).execute(l,x,S,s)||(l=(new mi).execute(l,x,S,s),x===l&&(l=l.clone())),0!==e){let t=new m.T;t.setShiftCoords(-e,0),l.applyTransformation(t)}e-=p,f.move(-p,0)}return l}}function Pi(e,t,r,i,n,m){let h={stack:[],error:void 0,hasError:!1};try{if(2===m)return function(e,t,r,s,i){if(Math.abs(r.x-s.x)>Math.PI||Math.abs(r.y)>l.l||Math.abs(s.y)>l.l||(Math.abs(r.y)===l.l||Math.abs(s.y)===l.l)&&r.x!==s.x)return NaN;let{first:n,second:m}=(0,l.$)(r.x,s.x),h=i;if(h=I(h,n,m),!l.E.construct(r.x,s.x).containsCoordinate(h))return NaN;let g=a.Z.constructPoint2D(r),u=a.Z.constructPoint2D(s),_=w(1,t,g),p=w(1,t,u),d=_.crossProductVector(p);if(d.z.isZero())return r.y;let c=d.x.divE(d.z.negate()),f=d.y.divE(d.z.negate()),x=c.mulE(c).addE(f.mulE(f)).sqrt();if(x.isZero()||c.isZero()&&f.isZero())return r.y;let P=Math.atan2(f.value(),c.value()),y=Math.atan2(x.value()*Math.cos(P-h),1-t),E=v(1,t,l.P.construct(h,y)),S=o.k.construct(E.x,E.y,-E.z),C=d.value().dotProduct(E),G=d.value().dotProduct(S);return Math.abs(G)<Math.abs(C)&&(y=-y),y}(0,t,r,i,n);if(Math.abs(r.x-i.x)>=Math.PI||!nn(r.x,i.x,n))return NaN;r.x>i.x&&(i=(0,l.s)(r,r=i));let g=(0,s.mS)(h,new Sa,!1),u=(0,s.mS)(h,new Sa,!1),_=(0,s.mS)(h,new Sa,!1),p=r.clone();Da.geodeticDistance(e,t,r.x,r.y,i.x,i.y,u,g,null,m);let d=u.val,c=0,f=1;for(;d*(f-c)>1e-12*e;){let s=.5*(c+f);if(Da.geodeticCoordinate(e,t,r.x,r.y,d*s,g.val,u,_,m),p.x=u.val,p.y=_.val,p.x===n)return p.y;if(nn(r.x,p.x,n))f=s;else{if(!nn(i.x,p.x,n))return NaN;c=s}}return p.y}catch(e){h.error=e,h.hasError=!0}finally{(0,s.hk)(h)}}function yi(e,t,r,s){for(let i=0,n=0;i<s;i++,n+=2)t[r+i].x=e[n],t[r+i].y=e[n+1]}function Ei(e,t,r,s){if(0===t||1===s)return t;let a=function(e,t){let r;if(Array.isArray(e)){let s=e;r=new Float64Array(2*t);for(let e=0,i=0;e<t;e++,i+=2)r[i]=s[e].x,r[i+1]=s[e].y}else r=e;return r}(e,t);if(2===s){let s=r.getPannableExtentInGCS(),i=t;for(let e=0,r=2*t;e<r;e+=2)(a[e+1]>s.ymax||a[e+1]<s.ymin)&&(a[e]=NaN,i--);return i?(Vi(a,t,s.xmin,s.width(),!0),e!==a&&yi(a,e,0,t),i):(e!==a&&yi(a,e,0,t),0)}let m=r.getOneDegreeGCSUnit(),h=90*m,g=180*m,u=360*m,_=t;for(let e=0,r=2*t;e<r;e+=2)(a[e+1]>h||a[e+1]<-h)&&(a[e]=NaN,_--);if(!_)return e!==a&&yi(a,e,0,t),0;let p=n.Envelope2D.constructEmpty();p.setFromPoints(a,t);let d=r.getGCSHorizon(),c=r.getGCSHorisonIsInclusive(),f=d.getGeometryType()===i.G.enumEnvelope,x=n.Envelope2D.constructEmpty();if(d.queryEnvelope(x),c&&(x.ymax<p.ymin||x.ymin>p.ymax))return e!==a&&yi(a,e,0,t),0;if(c)if(Vi(a,t,x.getCenterX()-g,u,!0),_=t,f)for(let e=0,r=2*t;e<r;e+=2)x.containsCoords(a[e],a[e+1])||(a[e]=NaN,_--);else{let e=(0,o.m)(r.getGCS(),d,!1),s=new l.P;for(let r=0,i=2*t;r<i;r+=2)s.setCoords(a[r],a[r+1]),0!==tr(d,s,e)||(a[r]=NaN,_--)}else{Vi(a,t,-g,u,!0),_=t;let e=(0,o.m)(r.getGCS(),d,!1),s=new l.P;for(let r=0,i=2*t;r<i;r+=2){s.setCoords(a[r],a[r+1]),s.isNAN()&&_--;let t=Ni(s.x,x.xmin,x.xmax,u);s.x+=t,0!==tr(d,s,e)&&(a[r]=NaN,_--)}}return e!==a&&yi(a,e,0,t),_}function Si(e,t,r,s,n,a){if(t.isPannable()||(0,i.b)("fold_into_360_degree_range"),e.isEmpty())return e;let o,l;if(2===t.getCoordinateSystemType()){let e=t.getPannableExtent();l=e.xmin,o=e.width()}else{let e=t.getOneDegreeGCSUnit();o=360*e,l=r-180*e}return Di(e,l,o,t,s,n,!0,a)}function Ci(e,t,r,s){let i,n;if(2===r.getCoordinateSystemType()){let e=r.getPannableExtent();i=e.xmin,n=e.width()}else{let e=r.getOneDegreeGCSUnit();n=360*e,i=s-180*e}Vi(e,t,i,n)}function Ii(e,t){let r=t.width(),s=(0,l.p)(e-t.vmin,r);return s<0&&(s+=r),t.snapClip(s+t.vmin)}function vi(e,t,r){return e>t.xmax&&e-t.xmax<r?t.xmax:e<t.xmin&&t.xmin-e<r?t.xmin:e}function Gi(e,t,r){if(e[0]<t.vmin||e[0]>t.vmax||r&&e[0]===t.vmax){let r=t.width();return e[0]+=Math.ceil((t.vmin-e[0])/r)*r,e[0]=t.snapClip(e[0]),!0}return!1}function wi(e,t,r,s,i){let n=new a.E,l=n.addGeometry(e);return bi(n,l,t,(0,o.m)(t,e,!1),r,s,i),n.getGeometry(l)}function bi(e,t,r,n,a,o,m){let h={stack:[],error:void 0,hasError:!1};try{(0,i.g)(Rn()),r.isPannable()||(0,i.q)("insert_geodetic_points");let g=r.getPannableExtent(),u=r.getGCS(),_=On();u.querySpheroidData(_);let p=u.getUnit().getUnitToBaseFactor(),d=_.majorSemiAxis,c=_.e2,f=0,x=new l.E;g.queryIntervalX(x);let P=null,y=(0,l.c)(4,NaN);2===r.getCoordinateSystemType()?(P=r.getPECoordSys(),o?(y[0]=Ii(m,x),y[1]=g.getCenterY(),Ga.projToGeog(P,1,y),f=y[0]*p):(y[0]=g.getCenterX(),y[1]=m,Ga.projToGeog(P,1,y),f=y[1]*p)):f=m*p,!o&&0!==f&&2!==a&&(0,i.q)("insert_geodetic_points: 1");let E=(0,s.mS)(h,new Sa,!1),S=new l.P,C=new l.P,I=new l.P,v=new l.P,G=new l.P,w=new l.P;for(let s=e.getFirstPath(t);-1!==s;s=e.getNextPath(s)){let t=e.getFirstVertex(s);e.queryXY(t,I);let i=!1,h=e.getNextVertex(t);for(let t=h;-1!==t;t=e.getNextVertex(t)){if(t===h){if(i)break;i=!0}if(e.queryXY(t,v),o&&(n<m-I.x&&v.x-m>n||n<m-v.x&&I.x-m>n)||!o&&(0!==m||n<-I.y&&v.y>n||n<-v.y&&I.y>n))do{if(Math.abs(I.x-v.x)>=.5*x.width())break;2===r.getCoordinateSystemType()?(y[0]=Ii(I.x,x),y[1]=I.y,y[2]=Ii(v.x,x),y[3]=v.y,Ri(P,2,y,0),G.x=y[0]*p,G.y=y[1]*p,w.y=y[3]*p):(G.x=I.x*p,G.y=I.y*p,w.y=v.y*p),w.x=(v.x-I.x)*Math.PI*2/x.width()+G.x;let s=0,i=(0,l.d)(l.P,2);if(o){if(C.x=f,C.y=Pi(d,c,G,w,f,a),Number.isNaN(C.y))break;i[0]=C,s=1}else if(2===a){let e=[0,0];if(s=V(0,c,G,w,f,e),!s)break;i[0].x=e[0],i[0].y=f,2===s&&(i[1].x=e[1],i[1].y=f)}else{if(C.x=an(d,c,G,w,a),Number.isNaN(C.x))break;C.y=0,i[0]=C,s=1}let n=-1;for(let h=0;h<s;h++){Da.geodeticDistance(d,c,G.x,G.y,w.x,w.y,E,null,null,a);let s=E.val;Da.geodeticDistance(d,c,G.x,G.y,i[h].x,i[h].y,E,null,null,a);let g=E.val;2===r.getCoordinateSystemType()?(y[0]=i[h].x/p,y[1]=i[h].y/p,Ga.geogToProj(P,1,y),o?(S.y=y[1],S.x=m):(S.x=on(y[0],I.x,v.x,x),S.y=m)):o?(S.x=m,S.y=i[h].y/p):(S.x=on(i[h].x/p,I.x,v.x,x),S.y=m);let u=s>0?(0,l.a)(g/s,0,1):.5;if(0===u||1===u||n>u)continue;let _=e.getPrevVertex(t);e.splitSegment(_,[u],1);let f=e.getNextVertex(_);e.setXYCoords(f,S.x,S.y),n=u}}while(0);I.setCoordsPoint2D(v)}}}catch(e){h.error=e,h.hasError=!0}finally{(0,s.hk)(h)}}function Ti(e,t){(0,i.g)(t.isPannable());let r=t.getPannableExtent();if(e.getGeometryType()===i.G.enumPoint){let t=e.getY();return r.ymin<=t&&t<=r.ymax?e:e.createInstance()}let s=n.Envelope2D.constructEmpty();e.queryEnvelope(s);let a=n.Envelope2D.constructEmpty();a.setCoords({env2D:r}),a.xmin=s.xmin,a.xmax=s.xmax,a.inflateCoords(.01*a.height(),0);let l,m=(0,o.d)(t,s,!1);return l=a.containsEnvelope(s)?e:(0,h.c)(e,a,m,0,null),l}function Ni(e,t,r,s){let i=.5*(r+t);return(0,l.H)((i-e)/s)*s}function Di(e,t,r,s,o,g,u,_){let p=e.getGeometryType(),d=l.E.constructEmpty();d.setCoords(t,t+r);let c=[0];if(p===i.G.enumPoint){if(c[0]=e.getX(),Gi(c,d,u)){let t=o?e:e.clone();return t.setX(c[0]),t}return e}let f=n.Envelope2D.constructEmpty();if(e.queryEnvelope(f),f.isEmpty())return e;if(p===i.G.enumMultiPoint){let t=o?e:e.clone(),r=t.getImpl(),s=r.getAttributeStreamRef(0),i=2*r.getPointCount(),n=!1;for(let e=0;e<i;e+=2)c[0]=s.read(e),Gi(c,d,u)&&(s.write(e,c[0]),n=!0);return n&&r.notifyModifiedFlags(2001),t}let x=l.E.constructEmpty();if(f.queryIntervalX(x),d.contains(x))return d.vmax,x.vmax,e;let P=n.Envelope2D.constructEmpty();if(P.setCoords({env2D:f}),0===x.width()){let t=x.vmin;t+=Math.ceil((d.vmin-t)/r)*r,t=d.snapClip(t);let s=o?e:e.clone();return s.setAttributeBasic(0,0,t),s}if(p===i.G.enumEnvelope){let t=o?e:e.clone();return f.intersect(P),t.setEnvelope(f),t}let y=.1*Math.max(f.height(),f.width())*1;P.inflateCoords(0,y);let E=e,S=s.getTolerance(0),C=new m.T;for(;;){let e=Math.floor((x.vmin-t)/r),n=Math.ceil((x.vmax-t)/r);if(!(n-e>3))break;{let a=Math.floor(.5*(n+e));P.xmin=f.xmin-y,P.xmax=t+r*a;let o=(0,h.c)(E,P,S,g,_);P.xmin=P.xmax,P.xmax=f.xmax+y;let l=(0,h.c)(E,P,S,g,_);C.setShiftCoords((a-n)*r,0),l.applyTransformation(C),p===i.G.enumPolygon?E=(new gi).execute(o,l,s,_):(E=o,E.add(l,!1)),E.queryEnvelope(f),f.queryIntervalX(x)}}P.xmin=t,P.xmax=t+r;let I=n.Envelope2D.constructEmpty();I.setCoords({env2D:P}),I.inflateCoords(S,0);let v,G=Math.floor((f.xmin-P.xmin)/r)*r;G?(P.move(G,0),C.setShiftCoords(-G,0)):C.setIdentity(),v=p===i.G.enumPolyline?new a.a({vd:E.getDescription()}):new a.P({vd:E.getDescription()});let w=n.Envelope2D.constructEmpty(),b=n.Envelope2D.constructEmpty();for(;f.xmax>P.xmin;){let e=(0,h.c)(E,P,S,0,_);e.queryEnvelope(b);let t=!1;t=p===i.G.enumPolyline?!e.isEmpty()&&(b.width()>S||b.height()>S):!e.isEmpty()&&(p!==i.G.enumPolygon||b.width()>S),t&&(e.applyTransformation(C),e.queryEnvelope(b),v.queryEnvelope(w),w.inflateCoords(S,S),w.isIntersecting(b)&&p===i.G.enumPolygon?v=(new gi).execute(v,e,s,_):v.add(e,!1)),P.move(r,0),C.shiftCoords(-r,0)}return v}function Vi(e,t,r,s,i=!0){let n=new l.E;n.setCoords(r,r+s);let a=[0];if(Array.isArray(e)){let r=e;for(let e=0;e<t;e++)n.containsRightExclusive(r[e].x)||(a[0]=r[e].x,Gi(a,n,i),r[e].x=a[0])}else{let r=e;for(let e=0;e<t;e++){let t=e<<1;n.containsRightExclusive(r[t])||(a[0]=r[t],Gi(a,n,i),r[t]=a[0])}}}function ki(e,t,r,s=!0){if(e.isEmpty())return;let a=e.getGeometryType();if(!s||a!==i.G.enumPolygon)if((0,i.i)(a)){let s=!1;if((0,i.j)(a)&&e.hasNonLinearSegments()){let n=e.getImpl(),a=n.getAttributeStreamRef(0),o=n.getSegmentFlagsStreamRef();(0,i.g)(null!==o);for(let e=0,i=n.getPathCount();e<i;e++){let i=!0,l=n.isClosedPath(e),m=n.getPathEnd(e);l&&n.getPathSize(e)>0&&(i=1==(31&o.read(m-1)));for(let l=n.getPathStart(e);l<m;l++)if(1==(31&o.read(l))){if(i){let e=a.read(2*l),i=vi(e,t,r);i!==e&&(s=!0,a.write(2*l,i))}i=!0}else i=!1}}else{let i=e.getImpl(),n=i.getAttributeStreamRef(0);for(let e=0,a=i.getPointCount();e<a;e++){let i=n.read(2*e),a=vi(i,t,r);a!==i&&(s=!0,n.write(2*e,a))}}s&&e.getImpl().notifyModifiedFlags(2001)}else if(a===i.G.enumEnvelope){let s=e,i=n.Envelope2D.constructEmpty();s.queryEnvelope(i),i.xmin=vi(i.xmin,t,r),i.xmax=vi(i.xmax,t,r),s.setEnvelope(i)}else if(a===i.G.enumPoint){let s=e;s.setX(vi(s.getX(),t,r))}else(0,i.d)("")}function Fi(e,t,r){let s=new l.P;return s.x=vi(e.x,t,r),s.y=e.y,s}function Hi(e,t,r,s){let a=e.getGeometryType();(0,i.g)(a===i.G.enumPolygon||a===i.G.enumPolyline||a===i.G.enumMultiPoint);let m=t.getCoordinateSystemType();if(2===m){let m=e;if(0===r){let r=function(e,t){if(t.isEmpty())return 0;let r=e.getPECoordSys();if(r.getProjection().getCode()===va.PE_PRJ_AZIMUTHAL_EQUIDISTANT){let s=On();e.querySpheroidData(s);let i=r.getParameters();if(null===i[va.PE_PARM_LAM0]||null===i[va.PE_PARM_PHI0])return 0;let a=[i[va.PE_PARM_LAM0].getValue(),i[va.PE_PARM_PHI0].getValue()];Ga.geogToProj(r,1,a);let o=new l.P(a[0],a[1]),m=n.Envelope2D.constructEmpty();t.queryEnvelope(m);let h=(0,l.d)(l.P,4);m.queryCorners(h);let g=0,u=e.getOneMeter(),_=Math.max(s.majorSemiAxis,s.minorSemiAxis)*Math.PI,p=Math.min(s.majorSemiAxis,s.minorSemiAxis)*Math.PI;p-=_/180,_*=u,p*=u;for(let e=0;e<4;e++){let t=l.P.distance(h[e],o);if(t>_)g++;else if(t>p)return-1}if(0===g)return 1;if(4===g){let e=n.Envelope2D.constructEmpty();return e.setCoords({center:o,width:_,height:_}),m.isIntersectingNe(e)?-1:0}return-1}return-1}(t,e);if(0===r)return e.createInstance();if(1===r)return e;let a=t.getPCSHorizon(),g=a.getGeometryType(),u=t.getDefaultPrecisionSR();if(g===i.G.enumEnvelope){let r=n.Envelope2D.constructEmpty();a.queryEnvelope(r);let i=(0,o.d)(u,r,!1);m=(0,h.c)(e,r,i,5e4*t.getOneMeterPCSUnit(),s)}else(new li).execute(a,e,u,s)||(m=(new ns).execute(m,a,u,s),m===a&&(m=m.clone()))}else if(t.isPannable()){let e=n.Envelope2D.constructEmpty();m.queryEnvelope(e);let o=t.getPannableExtent();o.containsEnvelope(e)||(ki(m,o,t.getTolerance(0)),(2===r||4===r)&&(m=Ti(m,t)),4===r?a===i.G.enumPolygon&&e.width()>2*o.width()&&(m=Di(m,-2*o.width(),2*o.width(),t,!0,0,!0,s)):m=Si(m,t,0,!0,1e5*t.getOneMeterPCSUnit(),s))}return m}if((0,i.g)(1===m),a===i.G.enumMultiPoint)return ki(e,t.getPannableExtent(),t.getTolerance(0)),e;{let r=n.Envelope2D.constructEmpty();e.queryEnvelope(r);let o=e,l=t.getPannableExtent();if(r.ymin<l.ymin||r.ymax>l.ymax){let e=Math.max(1,r.calculateToleranceFromEnvelope()),i=new n.Envelope2D(r.xmin-e,l.ymin,r.xmax+e,l.ymax);if(o=(new h.O).execute(o,i,t,s),o.isEmpty())return o}return a===i.G.enumPolygon&&r.width()>2*l.width()&&(o=Di(o,-2*l.width(),2*l.width(),t,!0,0,!0,s)),o}}function Ai(e,t){let r=t.getPointCount();if(!r)return;let s=t.getImpl(),i=s.getAttributeStreamRef(0),n=e;Ga.geogToProj(n,r,i.getArray()),s.notifyModifiedFlags(2001)}function Mi(e,t,r,s){if(!r)return;let i=e.getPECoordSys();if(1===r){if(t[0].isNAN())return;let r=[t[0].x,t[0].y];if(Ga.geogToProj(i,1,r),s){let{first:s,second:i}=e.m_peCoordSysVal.getGeogToProjFactors();r[0]=s*(t[0].x-e.getCentralMeridian())+i}return void t[0].setCoords(r[0],r[1])}let n=e.isPannable(),a=n?e.getPannableExtent().width():0,o=179*a/360,m=0;n&&(m=e.getCentralMeridian());let h=new Float64Array(512);for(let g=0;g<r;){for(let e=g;e<r&&t[e].isNAN();++e)g++;let u=Math.min(256,r-g);if(u>0){for(let e=1,r=g+1;e<u;++e,++r)if(t[r].isNAN()){u=e;break}for(let e=0;e<u;++e){let r=e<<1;h[r]=t[g+e].x,h[r+1]=t[g+e].y}if(Ga.geogToProj(i,u,h),s){let{first:r,second:s}=e.m_peCoordSysVal.getGeogToProjFactors();for(let e=0;e<u;++e)h[e<<1]=r*(t[g+e].x-m)+s}if(n)for(let e=0,r=g;e<u;e++,r++){let s=e<<1,i=h[s],n=(0,l.h)(i),g=t[r].x-m;n*(0,l.h)(g)<0&&Math.abs(i)>o&&(h[s]-=n*a)}yi(h,t,g,u),g+=u}}}function Ui(e,t,r,s){let i,o=new a.M({vd:t.getDescription()});o.addPoints(t,0,-1),i=(new ps).execute(o,e,s);let l=t.getPointCount();if(r.setEmpty(),e.getInputSR().isPannable()){if(l!==i.getPointCount())return!1;let s=new n.Envelope2D;t.queryEnvelope(s);let a=new n.Envelope2D;i.queryEnvelope(a);let o=s.width(),m=a.width();if(0!==o&&0!==m){let t=m/o,r=e.getOutputSR().getPannableExtent().width()/e.getInputSR().getPannableExtent().width();if(Math.abs(t/r-1)>1e-10)return!1}else if(0!==o||0!==m)return!1;r.add(t,!1);for(let e=0;e<l;e++){let t=i.getXY(e);r.setXY(e,t)}return!0}return!1}function qi(e,t,r){(0,i.g)(!r||e.isPannable());let s=t.getPointCount();if(!s)return;let n=t.getImpl(),a=n.getAttributeStreamRef(0),o=e.getPECoordSys(),m=0,h=a.readRange(0,2*s),g=()=>{Ga.geogToProj(o,s,h)},u=e.isPannable()&&!r,_=u?e.getPannableExtent().width():0,p=179*_/360;if(e.isPannable()&&(m=e.getCentralMeridian(),r)){let t=e.m_peCoordSysVal.getGeogToProjFactors(),r=t.first,i=t.second;g=()=>{Ga.geogToProj(o,s,h);for(let e=0;e<s;e++){let t=e<<1,s=a.read(t),n=r*(s-m)+i;h[t]=n}}}if(g(),u)for(let e=0;e<s;e++){let t=e<<1,r=h[t],s=(0,l.h)(r),i=a.read(t)-m;s*(0,l.h)(i)<0&&Math.abs(r)>p&&(h[t]+=-s*_)}a.writeRangeFromArray(0,2*s,h,!0,1),n.notifyModifiedFlags(2001)}function Bi(e,t,r){switch(t.getGeometryType()){case i.G.enumLine:return void function(e,t,r){let s=[t.getStartXY(),t.getEndXY()];Mi(e,s,2,r),t.setStartXY(s[0]),t.setEndXY(s[1]),t.normalizeAfterEndpointChange()}(e,t,r);case i.G.enumBezier:return void function(e,t,r){let s=(0,l.d)(l.P,4);t.queryControlPoints(s),tn(e,s,4,r),t.setControlPoints(s)}(e,t,r);case i.G.enumEllipticArc:return void function(e,t,r){if(0===t.projectionBehavior())!function(e,t,r){sn(!0,e,0,t,r)}(e,t,r);else{let s=t.isClosed()&&t.isMajor(),i=[t.getStartXY(),s?t.getCenter():t.getEndXY()],n=[i[0].clone(),i[1].clone()];tn(e,n,2,r);let a=new m.T;a.initializeFromTwoPointsArray(i,n),t.applyTransformation(a);let o=+!s;t.setCoordsForIntersector(n[0],n[o],!1)}}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return void(0,i.g)(0);default:(0,i.d)("")}}function Oi(e,t,r){if(!t.hasNonLinearSegments())return void qi(e,t,r);if((0,i.g)(!r||e.isPannable()),t.isEmpty())return;let s=e.getPECoordSys(),n=e.isPannable(),m=n?e.getPannableExtent().width():0,h=179*m/360,g=0;n&&(g=e.getCentralMeridian());let u=t.createInstance();u.reserveParts(t.getPointCount(),t.getPathCount());let _=t.getImpl(),p=new a.S;for(let i=0,a=t.getPathCount();i<a;++i)if(_.hasNonLinearSegmentsPath(i)){let t=!0,s=-1,n=_.getPathStart(i),a=n+_.getSegmentCountPath(i);_.isClosedPath(i)&&(s=a-1);let m=new l.P;for(let i=n;i<a;++i){if(_.getSegmentBuffer(i,p,!1),Bi(e,p.get(),r),t||p.get().getStartXY().equals(m)||p.get().moveTo(m),i!==s)u.addSegment(p.get(),t);else{if(t){let e=new o.P;p.get().queryStart(e),u.startPathPoint(e)}u.closeLastPathWithSegment(p.get())}m.assign(p.get().getEndXY()),t=!1}}else{let e,r=1024,a=_.getPathSize(i),o=Math.min(a,r);u.insertPath(-1,t,i,!0);let p=_.getAttributeStreamRef(0),d=u.getAttributeStreamRef(0);for(let t=_.getPathStart(i),u=_.getPathEnd(i);t<u;){if(e=p.readRange(t,o),Ga.geogToProj(s,o,e),n)for(let t=0;t<o;t++){let r=t<<1,s=e[r],i=(0,l.h)(s),n=p.read(2*(0+t))-g;i*(0,l.h)(n)<0&&Math.abs(s)>h&&(e[r]+=-i*m)}d.writeRangeFromArray(t,o,e,!0,1),t+=o,a-=o,o=Math.min(a,r)}}t.assignMove(u)}function Yi(e,t,r){let s=r.getPointCount();if(!s)return;let i=r.getImpl(),n=i.getAttributeStreamRef(0),a=Math.min(s,1e3),o=0,m=e.getPECoordSys();Number.isNaN(t)&&(t=0);let h,g=e.isPannable(),u=e.getOneDegreeGCSUnit(),_=360*u,p=179*u;for(;s;){if(h=n.readRange(2*o,2*a),Ri(m,a,h,t),g)for(let e=0;e<a;e++){let r=e<<1,s=h[r]-t,i=(0,l.h)(s),a=n.read(2*(o+e));i*(0,l.h)(a)<0&&Math.abs(s)>p&&(h[r]+=-i*_)}n.writeRangeFromArray(2*o,2*a,h,!0,1),o+=a,s-=a,a=Math.min(s,1e3)}i.notifyModifiedFlags(2001)}function Xi(e,t,r){switch(r.getGeometryType()){case i.G.enumLine:return void function(e,t,r){let s=[r.getStartXY(),r.getEndXY()];zi(e,t,s,2),r.setStartXY(s[0]),r.setEndXY(s[1]),r.normalizeAfterEndpointChange()}(e,t,r);case i.G.enumBezier:return void function(e,t,r){let s=(0,l.d)(l.P,4);r.queryControlPoints(s),rn(e,t,s,4),r.setControlPoints(s)}(e,t,r);case i.G.enumEllipticArc:return void function(e,t,r){if(0===r.projectionBehavior())!function(e,t,r){sn(!1,e,t,r,!1)}(e,t,r);else{let s=r.isClosed()&&r.isMajor(),i=[r.getStartXY(),s?r.getCenter():r.getEndXY()],n=[i[0].clone(),i[1].clone()];rn(e,t,n,2);let a=new m.T;a.initializeFromTwoPointsArray(i,n),r.applyTransformation(a);let o=+!s;r.setCoordsForIntersector(n[0],n[o],!1)}}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return void(0,i.g)(0);default:(0,i.d)("")}}function Ri(e,t,r,s){let n=Ga.projToGeogCenter(e,t,r,s);for(let e=0;e<t;++e){let t=e<<1;(0,i.g)(Number.isFinite(r[t]+r[t+1]))}return n}function Li(e,t,r){if(!r.hasNonLinearSegments())return void Yi(e,t,r);if(r.isEmpty())return;let s=e.getPECoordSys();Number.isNaN(t)&&(t=0);let i=e.isPannable(),n=e.getOneDegreeGCSUnit(),m=360*n,h=179*n,g=r.createInstance();g.reserveParts(r.getPointCount(),r.getPathCount());let u=r.getImpl(),_=new a.S;for(let n=0,a=r.getPathCount();n<a;++n)if(u.hasNonLinearSegmentsPath(n)){let r=!0,s=-1,i=u.getPathStart(n),a=i+u.getSegmentCountPath(n);u.isClosedPath(n)&&(s=a-1);let m=new l.P;for(let n=i;n<a;++n){if(u.getSegmentBuffer(n,_,!1),Xi(e,t,_.get()),r||_.get().getStartXY().equals(m)||_.get().moveTo(m),n!==s)g.addSegment(_.get(),r);else{if(r){let e=new o.P;_.get().queryStart(e),g.startPathPoint(e)}g.closeLastPathWithSegment(_.get())}m.assign(_.get().getEndXY()),r=!1}}else{let e,a=1e3,o=u.getPathSize(n),_=Math.min(o,a);g.insertPath(-1,r,n,!0);let p=u.getAttributeStreamRef(0),d=g.getAttributeStreamRef(0);for(let r=u.getPathStart(n),g=u.getPathEnd(n);r<g;){if(e=p.readRange(2*r,2*_),Ri(s,_,e,t),i)for(let s=0;s<_;s++){let i=s<<1,n=e[i]-t,a=(0,l.h)(n),o=p.read(2*r);a*(0,l.h)(o)<0&&Math.abs(n)>h&&(e[i]+=-a*m)}d.writeRangeFromArray(2*r,2*_,e,!0,1),r+=_,o-=_,_=Math.min(o,a)}}r.assignMove(g)}function zi(e,t,r,s){let i=e.getPECoordSys();Number.isNaN(t)&&(t=0);let n=e.isPannable(),a=e.getOneDegreeGCSUnit(),o=360*a,m=179*a,h=new Float64Array(512);for(let e=0;e<s;){for(let t=e;t<s&&r[t].isNAN();++t)e++;let a=Math.min(256,s-e);if(a>0){for(let t=1,s=e+1;t<a;++t,++s)if(r[s].isNAN()){a=t;break}for(let t=0;t<a;t++){let s=t<<1;h[s]=r[e+t].x,h[s+1]=r[e+t].y}if(Ri(i,a,h,t),n)for(let s=0,i=e;s<a;++s,++i){let e=s<<1,n=r[i].x,a=h[e]-t,g=(0,l.h)(a);g*(0,l.h)(n)<0&&Math.abs(a)>m&&(h[e]-=g*o)}for(let t=0;t<a;t++){let s=t<<1;r[e+t].x=h[s],r[e+t].y=h[s+1]}e+=a}}}function Wi(e,t,r,s){(0,i.g)(0)}function ji(e,t,r){let s=t.getPointCount();if(!s)return!1;let i=t.getImpl(),n=i.getAttributeStreamRef(0),a=null,o=e.getInputSR(),m=e.getOutputSR();o.getVCS(),m.getVCS();let h=o.getOneDegreeGCSUnit(),g=m.getOneDegreeGCSUnit(),u=e.isVertical();u&&t.hasAttribute(1)&&(a=i.getAttributeStreamRef(1));let _=e.getDatumTransformation(),p=!!_&&1===_.getType();if(!p&&null!==a&&(Wi(a.getArray()),a=null),!_||0===_.count()){let e=o.getGcsUnitFactor()/m.getGcsUnitFactor(),t=(o.getPrimeMeridian()-m.getPrimeMeridian())*g,r=-90*h,a=90*h,u=0,_=n.getArray(),p=[0];for(let e=1,t=2*s;e<t;)p[0]=_[e],u|=+!!(0,l._)(p,r,a),_[e]=p[0],e+=2;if(0!==t||1!==e){u=1;let r=n.getArray();for(let i=0,n=2*s;i<n;){let s=r[i];s*=e,s+=t,r[i]=s,r[i+1]*=e,i+=2}}return 0!==u&&i.notifyModifiedFlags(2001),!!u}let d=Math.min(s,1e3),c=(0,l.c)(d,NaN),f=(0,l.c)(d,NaN),x=null;null!==a&&(x=new Float64Array(d));let P=0,y=NaN,E=NaN,S=360*g,C=g/h;r&&(E=90*g,y=89.9*h,f.fill(0));let I=!0,v=0;for(;s;){let e=!1,t=n.readRange(2*P,2*d);for(let e=0;e<d;e++)c[e]=t[e<<1];if(r)for(let r=0;r<d;r++){let s=1+(r<<1),i=Math.abs(t[s])-y;if(i>0){let n=t[s];t[s]=(0,l.j)(y,n),f[r]=(0,l.j)(i,n),e=!0}}let i=t[0];if(p){let e=_;x&&a.queryRange(P,d,x,!0,1),e.transform(!1,t,x,d),x&&a.writeRangeFromArray(P,d,x,!0,1)}else _.transform(!1,t,d);I&&=(v=t[0]-C*i,!1);for(let e=0;e<d;e++){let r=e<<1,s=t[r]-c[e]*C-v;Math.abs(s)>200&&(t[r]+=s>0?-S:S)}if(e){for(let e=0;e<d;e++)if(f[e]){let r=1+(e<<1);t[r]+=C*f[e],t[r]>E?t[r]=E:t[r]<-E&&(t[r]=-E)}f.fill(0)}n.writeRangeFromArray(2*P,2*d,t,!0,1),u&&a&&a.writeRangeFromArray(P,d,x,!0,1),P+=d,s-=d,d=Math.min(s,1e3)}return i.notifyModifiedFlags(2001),!0}function Zi(e,t,r){switch(t.getGeometryType()){case i.G.enumLine:return function(e,t,r){let s=[t.getStartXY(),t.getEndXY()],i=null;t.hasAttribute(1)&&(i=[0,0],i[0]=t.getAttributeAsDbl(0,1,0),i[1]=t.getAttributeAsDbl(1,1,0));let n=en(e,s,i,2,r);return t.setStartXY(s[0]),t.setEndXY(s[1]),i&&(t.setStartAttribute(1,0,i[0]),t.setEndAttribute(1,0,i[1])),t.normalizeAfterEndpointChange(),n}(e,t,r);case i.G.enumBezier:return function(e,t,r){let s=(0,l.d)(l.P,4);t.queryControlPoints(s);let i=null;t.hasAttribute(1)&&(i=[0,0,0,0],i[0]=t.getAttributeAsDbl(0,1,0),i[3]=t.getAttributeAsDbl(1,1,0),i[1]=(0,l.r)(i[0],i[3],.5),i[2]=i[1]);let n=en(e,s,i||null,s.length,r);return t.setControlPoints(s),i&&(t.setStartAttribute(1,0,i[0]),t.setEndAttribute(1,0,i[3])),t.normalizeAfterEndpointChange(),n}(e,t,r);case i.G.enumEllipticArc:return function(e,t,r){if(0===t.projectionBehavior())return function(e,t,r){let s=[t.getStartXY(),t.getEndXY(),t.getInteriorPoint(),t.getCenter()],i=4;t.isDegenerateToLine()&&(i=2);let n=[0,0,0,0],a=null;if(t.hasAttribute(1)){a=n,a[0]=t.getAttributeAsDbl(0,1,0),a[1]=t.getAttributeAsDbl(1,1,0);let e=(0,l.r)(a[0],a[1],.5);a[2]=e,a[3]=e}let o=t.getStartXY().equals(t.getEndXY())&&!t.isDegenerateToLine(),m=en(e,s,a,i,r);return o?t.constructCircleCenterAndPoint(s[3],s[0],!t.isClockwise()):t.isDegenerateToLine()?t.constructLineCircularArc(s[0],s[1]):t.constructCircularArcThreePoint(s[0],s[1],s[2]),a&&(t.setStartAttribute(1,0,a[0]),t.setEndAttribute(1,0,a[1])),m}(e,t,r);let s=t.getStartXY().equals(t.getEndXY()),i=(0,l.d)(l.P,3),n=(0,l.d)(l.P,3),a=null;i[0].assign(t.getStartXY()),i[1].assign(s?t.getCenter():t.getEndXY());let o=!1;t.hasAttribute(1)&&(a=[0,0,0],a[0]=t.getAttributeAsDbl(0,1,0),a[1]=t.getAttributeAsDbl(1,1,0),a[2]=(0,l.r)(a[0],a[1],.5),s&&(a[1]=a[2])),n[0].setCoordsPoint2D(i[0]),n[1].setCoordsPoint2D(i[1]);let h=new m.T;if(s||t.isDegenerateToLine())o=en(e,n,a,2,r),h.initializeFromTwoPoints(i[0],i[1],n[0],n[1]);else{let s=new l.P;t.queryCoord2D(.5,s),i[2].setCoordsPoint2D(s),n[2].setCoordsPoint2D(s),o=en(e,n,a,3,r),h.setFromTwoTriangles(i,n)}return h.isIdentity()||(t.applyTransformation(h),t.setStartXY(n[0]),t.setEndXY(s?n[0]:n[1]),t.normalizeAfterEndpointChange()),a&&(t.setStartAttribute(1,0,a[0]),t.setEndAttribute(1,0,s?a[0]:a[1])),o}(e,t,r);case i.G.enumBezier2:case i.G.enumRationalBezier2:return(0,i.g)(0),!1;default:(0,i.d)("")}}function Ki(e,t,r){if(!t.hasNonLinearSegments())return ji(e,t,r);if(t.isEmpty())return!1;let s=t.createInstance();s.reserveParts(t.getPointCount(),t.getPathCount());let i=t.getImpl(),n=new a.S;for(let a=0,m=t.getPathCount();a<m;++a){let t=!0,m=-1,h=i.getPathStart(a),g=h+i.getSegmentCountPath(a);i.isClosedPath(a)&&(m=g-1);let u=new l.P;for(let a=h;a<g;++a){if(i.getSegmentBuffer(a,n,!1),Zi(e,n.get(),r),t||n.get().getStartXY().equals(u)||n.get().moveTo(u),a!==m)s.addSegment(n.get(),t);else{if(t){let e=new o.P;n.get().queryStart(e),s.startPathPoint(e)}s.closeLastPathWithSegment(n.get())}u.assign(n.get().getEndXY()),t=!1}}return t.assignMove(s),!0}function Qi(e,t,r,s,i,n){if(e.isIdentityGeogToGeog()){let r=90*e.getInputSR().getOneDegreeGCSUnit(),i=0,n=[0];for(let e=0;e<s;e++)n[0]=t[e].y,i|=+!!(0,l._)(n,-r,r),t[e].y=n[0];return i}let a=e.getInputSR(),o=e.getOutputSR(),m=a.getVCS(),h=o.getVCS(),g=a.getOneDegreeGCSUnit(),u=90*g,_=o.getOneDegreeGCSUnit(),p=e.isVertical(),d=e.getDatumTransformation(),c=!!d&&1===d.getType();if(p||(r=null),!d||0===d.count()){let e=0,i=[0];for(let r=0;r<s;r++)i[0]=t[r].y,e|=+!!(0,l._)(i,-u,u),t[r].y=i[0];return e|=+!!ti(a.getGCS(),m,o.getGCS(),h,t,r,s),e}!c&&null!==r&&Wi();let f=Math.min(s,1024),x=(0,l.c)(f,NaN),P=(0,l.c)(f,NaN),y=0,E=NaN,S=NaN,C=360*_,I=_/g;i&&(S=90*_,E=89.9*g);let v=!0,G=0,w=s;for(;w;){let e=!1;for(let e=0;e<f;e++)x[e]=t[e+y].x;if(i)for(let r=0;r<f;r++){let s=Math.abs(t[r+y].y)-E;if(s>0){let i=t[r+y].y;t[r+y].y=(0,l.j)(E,i),P[r]=(0,l.j)(s,i),e=!0}}let s=t[0].x;c?d.transform(!1,t,r,f):d.transform(!1,t,f),v&&=(G=t[0].x-I*s,!1);for(let e=0;e<f;e++){let r=t[y+e].x-x[e]*I-G;Math.abs(r)>200&&(r>0?t[y+e].x-=C:t[y+e].x+=C)}if(e){for(let e=0;e<f;e++)P[e]&&(t[y+e].y+=I*P[e],t[y+e].y>S?t[y+e].y=S:t[y+e].y<-S&&(t[y+e].y=-S));P.fill(0,0,f)}y+=f,w-=f,f=Math.min(w,1024)}return 1}function Ji(e,t,r,s,n){return(0,i.g)(0),0}function $i(e,t,r,s,n){(0,i.g)(null===s),(0,i.g)(t<2147483647);let a,o=Array.isArray(r);a=o?(0,l.U)(r):r;let m=wa.geogToGeog(e,t,a,null,n);return o&&(0,l.V)(a,r),m}function en(e,t,r,s,i,n){let a=0,o=!0,l=0;for(let n=0;n<s;++n)t[n].isNAN()?o||=(a|=Qi(e,t.slice(l,n-l),r?r.slice(l,n-l):null,n-l,i),l=n,!0):o&&=(l=n,!1);return o||(a|=Qi(e,0===l?t:t.slice(l),r?0===l?r:r.slice(l):null,s-l,i)),0!==a}function tn(e,t,r,s){Mi(e,t,r,s)}function rn(e,t,r,s){zi(e,t,r,s);let i=new n.Envelope2D;i.setFromPoints(r,s);let a=e.getOneDegreeGCSUnit(),o=360*a,l=180*a;if(i.width()>l){for(let e=0;e<s;e++)for(;r[e].x<t;)r[e].x+=o;if(i.setFromPoints(r,s),i.xmax>l+t)for(let e=0;e<s;e++)r[e].x-=o}}function sn(e,t,r,s,i){let n=(0,l.d)(l.P,3),a=0,o=!1,m=!1,h=s.isDegenerateToLine();h?(n[0].assign(s.getStartXY()),n[1].assign(s.getEndXY()),n[2].setCoords(0,0),a=2):s.isClosed()&&s.isMajor()?(o=!0,m=!s.isClockwise(),n[0].assign(s.getStartXY()),n[1].assign(s.getCenter()),n[2].setCoords(0,0),a=2):(n[0].assign(s.getStartXY()),n[1].assign(s.getEndXY()),n[2].assign(s.getInteriorPoint()),a=3),e?tn(t,n,a,i):rn(t,r,n,a),h?s.constructLineCircularArc(n[0],n[1]):o?s.constructCircleCenterAndPoint(n[1],n[0],m):s.constructCircularArcThreePoint(n[0],n[1],n[2])}function nn(e,t,r){let s=(0,a.a4)(e),i=(0,a.a4)(t),n=(0,a.a3)(s,i),o=(0,a.a3)(s,(0,a.a4)(r));return 0===o||n>0&&o>0&&o<=n||n<0&&o<0&&o>=n}function an(e,t,r,n,a){let o={stack:[],error:void 0,hasError:!1};try{let m=r.clone(),h=n.clone();if(2===a){let e=[0,0];return V(0,t,m,h,0,e),e[0]}if(m.y>h.y){let e=new l.P;e.assign(m),m.assign(h),h.assign(e)}let g=(0,s.mS)(o,new Sa,!1),u=(0,s.mS)(o,new Sa,!1),_=(0,s.mS)(o,new Sa,!1),p=new l.E;if(p.setCoords(m.y,h.y),!p.containsCoordinate(0)||Math.abs(m.x-h.x)>=Math.PI)return NaN;if(m.x===h.x)return m.x;Da.geodeticDistance(e,t,m.x,m.y,h.x,h.y,u,g,null,a);let d=u.val,c=0,f=1,x=m.clone();for(;d*(f-c)>1e-12*e;){let r=.5*(c+f);if(Da.geodeticCoordinate(e,t,m.x,m.y,d*r,g.val,u,_,a),x.x=u.val,x.y=_.val,p.setCoords(m.y,x.y),0===x.y)return x.x;if(p.containsCoordinate(0))f=r;else{if(p.setCoords(h.y,x.y),!p.containsCoordinate(0))return(0,i.g)(!1),NaN;c=r}}return x.x}catch(e){o.error=e,o.hasError=!0}finally{(0,s.hk)(o)}}function on(e,t,r,s){let i=new l.E;i.setCoords(t,r);let n=s.width(),a=Math.floor((e-t)/n)*n+e,o=i.getCenter();for(;Math.abs(a-o)>Math.abs(a+n-o);)a+=n;return a}class ln extends u.G{m_geometryDeque=[];m_index=-1;constructor(){super()}next(){if(this.m_geometryDeque.length>0){this.m_index++;let e=this.m_geometryDeque[0];return this.m_geometryDeque.shift(),e}return null}getGeometryID(){return this.m_index}tick(e){this.m_geometryDeque.push(e)}tock(){return!0}getRank(){return 1}}class mn{m_csType;m_PCSHorizon=null;m_GCSHorizon=null;m_GCSSplitLines=null;m_bGCSHorisonIsInclusive=!1;m_oneMeterPCS=0;m_oneDegreeGCS=0;m_gcsUnitFactor=0;m_northPole=l.P.getNAN();m_southPole=l.P.getNAN();m_polesUpdated=0;m_domain=n.Envelope2D.constructEmpty();m_primeMeridian=NaN;m_geogToProjFactor=1;m_geogToProjOffset=0;m_geogToProjFactorsUpdated=0;m_oneMillimeter=0;m_centralMeridian=0;m_pPCSInfoNoDomain=null;m_WKID;m_oldWKID=-1973;m_vcsWKID=-1;m_bIsPannable=!1;m_bCached=!1;m_pannableExtent=n.Envelope2D.constructEmpty();m_pannableExtentGCS=n.Envelope2D.constructEmpty();m_unit;m_areaOfUse=null;m_canonicalWkt="";m_hashCode;m_peCoordSys;constructor(e,t=!0){this.m_peCoordSys=e,this.m_WKID=Ia.getCode(e),this.m_WKID<=0?(this.m_WKID=0,this.m_canonicalWkt=ci(e,0,!0),this.m_hashCode=(0,l.L)(this.m_canonicalWkt)):this.m_hashCode=(0,l.Q)(this.m_WKID);let r=this.m_peCoordSys.getType();this.m_csType=r===va.PE_TYPE_PROJCS?2:1,(0,i.g)(r===va.PE_TYPE_PROJCS||r===va.PE_TYPE_GEOGCS),r===va.PE_TYPE_PROJCS&&(e.loadConstants()||(0,i.b)("PeProjcs.loadConstants failed"));let s=r===va.PE_TYPE_GEOGCS?this.m_peCoordSys:this.m_peCoordSys.getGeogcs();r!==va.PE_TYPE_GEOGCS&&Ia.getCode(s),this.m_unit=function(e){let t=Ca(null);return e.getType()===va.PE_TYPE_PROJCS||e.getType()===va.PE_TYPE_GEOGCS?t.reset(e.getUnit()):(0,i.b)("PE_coord_sys"),t.get()||(0,i.d)("cannot create units from coord sys"),function(e){return e.getType()===va.PE_TYPE_LINUNIT?new kn(e):e.getType()===va.PE_TYPE_ANGUNIT?new x(e):void(0,i.b)("peUnit")}(t.get())}(e),this.m_primeMeridian=s.getPrimem().getLongitude();{let e=s.getUnit().getUnitFactor();this.m_gcsUnitFactor=e;let t=Math.PI/(180*e);Math.abs(t-1)<1e-10&&(t=1),this.m_oneDegreeGCS=t}if(r===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=e.getUnit().getUnitFactor();this.m_oneMeterPCS=1/t,this.m_oneMillimeter=.001/t,this.m_pPCSInfoNoDomain=ba.generate(e,ba.PE_PCSINFO_OPTION_NONE),this.m_pPCSInfoNoDomain||(0,i.d)("cannot create pcs info"),this.m_bIsPannable=this.m_pPCSInfoNoDomain.isPannableRectangle(),this.m_centralMeridian=this.m_pPCSInfoNoDomain.getCentralMeridian()}else{this.m_bIsPannable=!0,this.m_polesUpdated=1,this.m_oneMeterPCS=0;let e=1/s.getUnit().getUnitFactor(),t=s.getDatum().getSpheroid().getAxis();this.m_oneMillimeter=.001/t*e,this.m_centralMeridian=0}this.m_bIsPannable&&(this.updateGCSHorizon(),this.updatePCSHorizon(),this.updatePoles(),this.updateDomain(),this.updatePannableExtent(),this.updatePannableExtentGCS())}[Symbol.dispose](){}getHashCode(){return this.m_hashCode}getPCSHorizonPannable(){return this.m_PCSHorizon}getGCSHorizonPannable(){return this.m_GCSHorizon}getPCSInfo(){return(0,i.g)(this.m_pPCSInfoNoDomain),this.m_pPCSInfoNoDomain}getCentralMeridian(){return this.m_centralMeridian}updateGCSHorizon(){if(this.m_peCoordSys.getType()!==va.PE_TYPE_PROJCS)return;let e=!0,t=this.m_peCoordSys,r=t.getGeogcs(),s=t.horizonGcsGenerate();if(!s)return;(0,i.g)(s.length>0);let g,u=s[0].getNump(),_=s[0].getKind();e=s[0].getInclusive()>0;let p,d=this.getOneDegreeGCSUnit(),c=90*d,f=360*d,x=370*d,P=180*d*va.PE_HORIZON_DELTA/Math.PI,y=n.Envelope2D.constructEmpty(),E=null;if(u>1)for(let e=1;e<u;e++)if(s[e].getKind()===va.PE_HORIZON_LINE){E||=new a.a;let t=s[e].getCoord();E.startPathCoords(t[0][0],t[0][1]),E.lineToCoords(t[1][0],t[1][1])}if(_===va.PE_HORIZON_RECT){let t=s[0].getCoord();if(y.setFromPoints([new l.P(t[0][0],t[0][1]),new l.P(t[1][0],t[1][1])],2),Math.abs(y.ymax-c)<1e-7*P&&(y.ymax=c),Math.abs(y.ymin+c)<1e-7*P&&(y.ymin=-c),y.width()>x){let e=-400*d,t=e+5*f;y.setCoords({xmin:e,ymin:y.ymin,xmax:t,ymax:y.ymax})}let r=new o.E({env2D:y});this.m_GCSHorizon||(this.m_GCSHorizon=r,this.m_bGCSHorisonIsInclusive=e)}else{let t=this.getPCSInfo().isGcsHorizonMultiOverlap(),o=Zn(r,null,0,1),_=[],x=new l.E;for(let e=0;e<u;e++){if(s[e].getKind()!==va.PE_HORIZON_POLY)continue;g=s[e].getSize();let t=s[e].getCoord(),r=n.Envelope2D.constructEmpty();r.setFromPoints((0,l.R)(t),g),_.push(new l.E(r.xmin,r.xmax)),r.width(),x.merge(_.at(-1))}let P=!1,y=new l.E;x.width()>f&&_.length>1?(y.vmin=this.getCentralMeridian()-f,y.vmax=y.vmin+2*f,P=!0,t=!0):(y.vmin=x.vmin,y.vmax=y.vmin+f);let S=e=>{let t=0;for(;_[e].vmin+t<y.vmin;)t+=f;for(;_[e].vmax+t-f>y.vmin;)t-=f;return t},C=new a.P;if(t){let e=new ln,t=(new gi).executeMany(e,o,null);for(let r=0;r<u;r++){if(s[r].getKind()!==va.PE_HORIZON_POLY)continue;g=s[r].getSize();let i=s[r].getCoord();p=s[r].getInclusive()>0;let n=new a.P;if(n.addPathPoint2D((0,l.R)(i),g-1,!0),P){let t=S(r),s=_[r].clone();s.move(t);let i=t,a=new m.T;do{a.setShiftCoords(i,0);let t=n.clone();t.applyTransformation(a),e.tick(t),e.tock(),i+=f,s.move(f)}while(s.vmin<y.vmax)}else e.tick(n),t.tock()}C=t.next()}else{C=new a.P;for(let t=0;t<u;t++){if(s[t].getKind()!==va.PE_HORIZON_POLY)continue;g=s[t].getSize();let r=s[t].getCoord();if(p=s[t].getInclusive()>0,(0,i.g)(p===e),P){let e=new a.P;e.addPathPoint2D((0,l.R)(r),g-1,!0);let s=S(t),i=_[t].clone();i.move(s);let n=s,o=new m.T;do{if(0!==n){o.setShiftCoords(n,0);let t=new a.P({copy:e});t.applyTransformation(o),C.addPath(t,0,!0)}else C.addPath(e,0,!0);n+=f,i.move(f)}while(i.vmin<y.vmax)}else C.addPathPoint2D((0,l.R)(r),g-1,!0)}}P&&(C=(new h.O).execute(C,new n.Envelope2D(y.vmin,-c-d,y.vmax,c+d),o,null)),e?(new ns).accelerateGeometry(C,o,1):(new mi).accelerateGeometry(C,o,1),(new pi).accelerateGeometry(C,o,1),null===this.m_GCSHorizon&&(this.m_GCSHorizon=C,this.m_bGCSHorisonIsInclusive=e,this.m_GCSSplitLines=E)}}updateAreaOfUse(){return null}updatePCSHorizon(){if(this.m_peCoordSys.getType()!==va.PE_TYPE_PROJCS)return;let e,t=this.m_peCoordSys.horizonPcsGenerate();if(!t)return;this.getPCSInfo();let r=t[0].getKind();t[0].getInclusive();let s=n.Envelope2D.constructEmpty(),m=t[0].getNump(),h=!1;if(r===va.PE_HORIZON_RECT){let r=t[0].getCoord();s.setFromPoints((0,l.R)(r),2),e=new o.E({env2D:s})}else{let r=-1;for(let e=0;e<m;e++)t[e].getKind()===va.PE_HORIZON_POLY&&(r=e);(0,i.g)(r>=0);let s=t[r].getSize()-1,n=t[r].getCoord(),o=new a.P;e=o,o.addPathPoint2D((0,l.R)(n),s,!0),h=!0}if(this.getPCSInfo().isDensificationNeeded()){(0,i.g)(r!==va.PE_HORIZON_RECT);let t=1e5*this.getOneMeterPCSUnit();e=(new g.O).execute(e,t,0,0,null)}if(h){{let t=new o.E;e.queryEnvelope(t),e.calculateArea2D(),e.calculateLength2D(),e.getExteriorRingCount()}(new ns).accelerateGeometry(e,null,1)}null===this.m_PCSHorizon&&(this.m_PCSHorizon=e)}updatePannableExtent(){let e=this.m_peCoordSys.getType();if(e===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.getPCSInfo().getCentralMeridian(),r=e.getGeogcs();r||(0,i.d)("");let s=[t+1/r.getUnit().getUnitFactor()*Math.PI,0];Ga.geogToProj(e,1,s);let a=s[0],o=e.getParameters()[va.PE_PARM_X0].getValue(),l=this.getPCSHorizon(),m=n.Envelope2D.constructEmpty();l.queryEnvelope(m);let h=Math.abs(a-o),g=h+o,u=-1*h+o,_=m.ymax,p=m.ymin;this.m_pannableExtent.setCoords({xmin:u,ymin:p,xmax:g,ymax:_})}else if(e===va.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtent.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,i.d)("")}updatePannableExtentGCS(){let e=this.m_peCoordSys.getType();if(e===va.PE_TYPE_PROJCS){let e=this.m_peCoordSys,t=this.m_centralMeridian,r=e.getGeogcs();r||(0,i.d)("");let s=1/r.getUnit().getUnitFactor()*Math.PI,a=this.getGCSHorizon(),o=n.Envelope2D.constructEmpty();a.queryEnvelope(o),this.m_pannableExtentGCS.setCoords({xmin:t-s,ymin:o.ymin,xmax:t+s,ymax:o.ymax})}else if(e===va.PE_TYPE_GEOGCS){let e=1/this.m_peCoordSys.getUnit().getUnitFactor()*Math.PI;this.m_pannableExtentGCS.setCoords({xmin:-e,ymin:-e/2,xmax:e,ymax:e/2})}else(0,i.d)("")}updateDomain(){if(1===this.m_csType){let e=400*this.getOneDegreeGCSUnit();this.m_domain=n.Envelope2D.construct(-e,-e,e,e)}else{(0,i.g)(2===this.m_csType);let e=ba.generate(this.m_peCoordSys,ba.PE_PCSINFO_OPTION_DOMAIN);e||(0,i.d)("generate pcs info failed");let t=new n.Envelope2D(e.getDomainMinx(),e.getDomainMiny(),e.getDomainMaxx(),e.getDomainMaxy());this.m_domain.isEmpty()&&this.m_domain.setCoords({env2D:t})}}updatePoles(){if(this.m_peCoordSys.getType()===va.PE_TYPE_PROJCS){let e=90*this.getOneDegreeGCSUnit(),t=[[0,e],[0,-e]];Ga.geogToProj(this.m_peCoordSys,2,t);let r=this.getPCSInfo().getNorthPoleLocation()!==ba.PE_POLE_OUTSIDE_BOUNDARY,s=this.getPCSInfo().getSouthPoleLocation()!==ba.PE_POLE_OUTSIDE_BOUNDARY;this.m_polesUpdated||=(r&&this.m_northPole.setCoords(t[0][0],t[0][1]),s&&this.m_southPole.setCoords(t[1][0],t[1][1]),1)}else this.m_polesUpdated=1}updateGeogToProjFactors(){if(this.m_peCoordSys.getType()===va.PE_TYPE_PROJCS){let e=this.getOneDegreeGCSUnit(),t=this.m_pPCSInfoNoDomain.getCentralMeridian(),r=[0,0,0,0];r[0]=t,r[1]=0,r[2]=t+e,r[3]=0;let s=Ga.geogToProj(this.m_peCoordSys,2,r);(0,i.g)(2===s);let n=(r[2]-r[0])/e,a=r[0];0===this.m_geogToProjFactorsUpdated&&(this.m_geogToProjFactor=n,this.m_geogToProjOffset=a,this.m_geogToProjFactorsUpdated=1)}else this.m_geogToProjFactorsUpdated=1}getOneMeterPCSUnit(){return this.m_oneMeterPCS}getOneDegreeGCSUnit(){return this.m_oneDegreeGCS}getGcsUnitFactor(){return this.m_gcsUnitFactor}getUnitsPerMillimeter(){return this.m_oneMillimeter}getGCSSplitLines(){return this.m_bIsPannable?null:(this.m_GCSHorizon||this.updateGCSHorizon(),this.m_GCSSplitLines)}getGCSHorizon(){return this.m_bIsPannable?this.getGCSHorizonPannable():(null===this.m_GCSHorizon&&this.updateGCSHorizon(),this.m_GCSHorizon)}getGCSHorisonIsInclusive(){return this.m_bIsPannable||this.getGCSHorizon(),this.m_bGCSHorisonIsInclusive}getPCSHorizon(){return this.m_bIsPannable?this.getPCSHorizonPannable():(null===this.m_PCSHorizon&&this.updatePCSHorizon(),this.m_PCSHorizon)}getPole(e){return this.m_bIsPannable||0!==this.m_polesUpdated||this.updatePoles(),e?this.m_southPole:this.m_northPole}getGeogToProjFactors(){return 0===this.m_geogToProjFactorsUpdated&&this.updateGeogToProjFactors(),(0,l.o)(this.m_geogToProjFactor,this.m_geogToProjOffset)}getDomainXY(){if(this.m_bIsPannable)return this.m_domain.clone();let e=!1;return e=this.m_domain.isEmpty(),e&&this.updateDomain(),this.m_domain.clone()}getPrimeMeridian(){return this.m_primeMeridian}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;if(e<0){if(e=0,this.m_WKID>0){let t=[0];(function(e,t,r,s){return t<=0?(r[0]=0,s[0]=0,!1):(r[0]=t,s[0]=t,!0)})(this.m_peCoordSys.getType(),this.m_WKID,t,[0])||(0,i.d)("query_code_change"),e=t[0]}this.m_oldWKID=e}return e}isCustomWkid(){return!1}isPannable(){return this.m_bIsPannable}getPannableExtent(){return this.m_pannableExtent.clone()}getPannableExtentGCS(){return this.m_pannableExtentGCS.clone()}getAreaOfUse(){return null===this.m_areaOfUse?this.updateAreaOfUse():this.m_areaOfUse}getVcsCode(){return 0}saveMemory(){}getCSType(){return this.m_csType}getUnit(){return this.m_unit}setCached(){this.m_bCached=!0}getCached(){return this.m_bCached}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}class hn{m_oneMeter=0;m_WKID=-1;m_oldWKID=-1;m_canonicalWkt="not yet implemented";m_model=0;m_unit=new kn;m_cached=!1;m_peVertcs;static st_DeadWeedCount;constructor(e,t=!0){}setCached(e=!0){this.m_cached=e}getCached(){return this.m_cached}getOneMeterUnit(){return 0}getLatestID(){return this.m_WKID}getOldID(){let e=this.m_oldWKID;return e<0&&(e=0,this.m_WKID>0&&(e=this.m_WKID),this.m_oldWKID=e),e}getModel(){return 0}isCustomWkid(){return!1}getVerticalUnit(){return this.m_unit}static equal(e,t){return!1}static equal_for_projection(e,t){return!1}}function gn(e,t,r){return un(e,t,n.Envelope2D.constructEmpty())}function un(e,t,r,s){return function(e,t,r,s){return Rn()||(0,i.e)("cannot create projection transformation"),t.hasVCS()&&r.hasVCS()?((0,i.g)(0),{}):function(e,t,r){(!e||!t)&&(0,i.b)("!inputSR || !outputSR");let s=e.getLatestID(),a=t.getLatestID();if(3857===s&&4326===a){if(e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return Tn()}else if(4326===s&&3857===a&&e.m_bDefaultDescriptor&&t.m_bDefaultDescriptor)return wn||=Tn().getInverse(),wn;let o=n.Envelope2D.constructEmpty();o.setCoords({env2D:r});let l=e.getCoordinateSystemType(),m=t.getCoordinateSystemType();if(0===l||0===m)return cn(e,t);let h=e.getGCS().getLatestID(),g=t.getGCS().getLatestID();if(h>0&&h===g)return cn(e,t);let u=new In(e,t,r);{let e=function(e){if(vn.has(e.getHashCode()))return vn.get(e.getHashCode())}(u);if(e)return e}let _=pn(0,e,t,o,1,!0);return function(e,t){return vn.set(e.getHashCode(),t),t}(u,cn(e,t,_.length?_[0]:void 0))}(t,r,s)}(0,e,t,r)}function _n(e,t,r,s){return function(e,t,r,s,n){return Rn()||(0,i.e)("cannot create projection transformation"),new Pn(2,t,r,s,n,void 0)}(0,e,t,r,s)}function pn(e,t,r,n,a,m=!1){if((!t||!r)&&(0,i.b)(""),Rn()||(0,i.e)("cannot obtain geotransformation list"),1===e&&t.hasVCS()&&r.hasVCS())return(0,i.a)("hv xform not impl"),[];{let e=function(e,t,r,n,a){let m=e.getGCS(),h=t.getGCS(),g=m.getPECoordSys(),u=h.getPECoordSys(),_=null;if(!r.isEmpty()){let t=r.clone();if(!t.isEmpty()&&2===e.getCoordinateSystemType()){let r=new o.E({env2D:t}),s=_n(e,m,null);r=(new ps).execute(r,s,null),r.queryEnvelope(t)}if(!t.isEmpty()){let e=g.getPrimem().getLongitude(),r=g.getUnit().getUnitFactor();_=new ka(t.xmin,t.ymin,t.xmax,t.ymax,e,r)}}let p=n;p>=(0,l.i)()&&(p=0);let d=[],c=Ta.PE_GTLIST_OPTS_COMMON;a||(c&=~Ta.PE_GTLIST_OPTS_USABLE);for(let e=0;e<2;e++){let e={stack:[],error:void 0,hasError:!1};try{d.length=0;let t=Ta.getGTlist(g,u,2,c,_,p);if(null==t||0===t.length)break;(0,s.mS)(e,{[Symbol.dispose](){Na.destroy(t)}},!1);let r=!1;for(let e of t){let t=La(e);if((0,i.g)(t),a&&t.referencesMissingData())r=!0,p=0;else if(d.push(t),d.length===n)break}if(!r)break}catch(t){e.error=t,e.hasError=!0}finally{(0,s.hk)(e)}}return _&&_.destroy(),d}(t,r,n,a,m),h=[];for(let t of e)h.push(t);return h}}function dn(){return{centralMeridianOfOutputGCS:NaN,densificationStep:NaN,clipWithInputHorizon:!0,clipWithOutputHorizon:!0,legacyHorizonClipping:!1,normalizeResultGeometry:!1,equals(e){return(0,l.G)(this.centralMeridianOfOutputGCS,e.centralMeridianOfOutputGCS)&&(0,l.G)(this.densificationStep,e.densificationStep)&&this.clipWithInputHorizon===e.clipWithInputHorizon&&this.clipWithOutputHorizon===e.clipWithOutputHorizon&&this.legacyHorizonClipping===e.legacyHorizonClipping&&this.normalizeResultGeometry===e.normalizeResultGeometry}}}function cn(e,t,r,s,i){return new Pn(1,e,t,r,s,i)}function fn(){return{m_extendedParams:dn(),m_extendedParamsInternal:{flagsMask:0,setFlag(e,t){t?this.flagsMask|=e:this.flagsMask&=~e},hasFlag(e){return 0!==(this.flagsMask&e)}}}}function xn(){return fn()}class Pn{m_inputSR;m_outputSR;m_datumTran=null;m_params;m_bIdentity=!0;m_bIdentityGeogToGeog=!0;m_bVertical=!1;m_bNormalize=!1;m_projector;constructor(e,t,r,s,n,a){let o,l;(!t||!r)&&(0,i.b)("!inputSR || !outputSR"),s&&0===s.getType()&&(s.m_bReadOnly=!0),this.m_bNormalize=!1,1!==e&&(o=t.getVCS(),l=r.getVCS(),this.m_bVertical=null!=o&&null!=l),this.m_inputSR=t,this.m_outputSR=r,this.m_bIdentity=!1,this.m_bIdentityGeogToGeog=!1,(0,i.g)(!this.m_params),n&&(this.m_params=fn(),this.m_params.m_extendedParams=n),a&&(this.m_params||=fn(),this.m_params.m_extendedParamsInternal=a);let m=!1,h=null!=s,g=t.getCoordinateSystemType(),u=r.getCoordinateSystemType();if(r.isPannable()&&0!==g&&n){let e=n.centralMeridianOfOutputGCS;if(!Number.isNaN(e)&&r.isPannable()){let t=r.getPannableExtent(),s=t.getCenterX();if(s!==e){let r=Math.ceil(t.width());e+r!==s+r&&(m=!0)}}}let _=n&&n.normalizeResultGeometry;if(t.equals(r))return this.m_bIdentity=!m,this.m_bIdentityGeogToGeog=!0,void this.updateProjector();let p=!h&&t.equalForProjection(r,this.m_bVertical);this.m_bIdentity=p&&!m,this.m_bIdentity?this.m_bIdentityGeogToGeog=!0:0!==g&&0!==u&&(_&&this.m_outputSR.isPannable()&&(this.m_bNormalize=_),this.m_datumTran=s||null,this.m_bIdentityGeogToGeog=(!this.m_datumTran||0===this.m_datumTran.count())&&this.m_inputSR.getGCS().equalForProjection(this.m_outputSR.getGCS(),this.m_bVertical)),this.updateProjector()}getInputSR(){return this.m_inputSR}getOutputSR(){return this.m_outputSR}getDatumTransformation(){return this.m_datumTran}getInverse(){let e=new Pn(1,this.m_outputSR,this.m_inputSR,this.m_datumTran?.createInverse());return e.m_bIdentity=this.m_bIdentity,e.m_bVertical=this.m_bVertical,e.m_bIdentityGeogToGeog=this.m_bIdentityGeogToGeog,e.updateProjector(),e}isIdentity(){return this.m_bIdentity}getExtendedParams(){return this.m_params?this.m_params.m_extendedParams:xn().m_extendedParams}equals(e){return(0,i.g)(0),!1}isVertical(){return this.m_bVertical}isMatchingTransformation(e,t){return(0,i.g)(0),!1}getGeographicTransformations(){return this.m_datumTran}getExtendedParamsImpl(){return this.m_params?this.m_params.m_extendedParams:xn().m_extendedParams}getExtendedParamsInternal(){return this.m_params?this.m_params.m_extendedParamsInternal:xn().m_extendedParamsInternal}isIdentityGeogToGeog(){return this.m_bIdentityGeogToGeog}normalizeOutput(){return this.m_bNormalize}updateProjector(){this.m_projector=new gs(this)}}const yn=new Map,En=new Map,Sn=new Map;function Cn(e){let t=e.getCode();if(t>0)return Vn(t)||Dn(Ia.coordsys(t));let r=e.getName();if(En.has(r)){let t=En.get(r);if(t&&t.deref()){let r=t.deref();if(r.m_peCoordSys.isEqual(e))return r}}return t=Ia.getCode(e),Dn(t>0?Ia.coordsys(t):e)}class In{m_inputSR;m_outputSR;m_env;m_hashCode=-1;constructor(e,t,r){e&&(this.m_inputSR=e,this.m_outputSR=t,this.m_env=r.clone(),this.m_hashCode=this.m_inputSR.getHashCode(),this.m_hashCode=(0,l.B)(this.m_hashCode,this.m_outputSR.getHashCode()),this.m_env.isEmpty()||(this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.xmin)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.xmax)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.ymin)),this.m_hashCode=(0,l.B)(this.m_hashCode,(0,l.W)(this.m_env.ymax))))}getHashCode(){return this.m_hashCode}equals(e){return!(this.m_inputSR&&!e.m_inputSR||!this.m_inputSR&&e.m_inputSR)&&this.m_env.equals(e.m_env)&&this.m_inputSR.equals(e.m_inputSR)&&this.m_outputSR.equals(e.m_outputSR)}clear(){this.m_inputSR=void 0,this.m_outputSR=void 0,this.m_hashCode=-1,this.m_env=void 0}}const vn=new Map;let Gn,wn,bn;function Tn(){return Gn||=_n(ha(),ua()),Gn}const Nn=new Map;function Dn(e){let t=Ca(e),r=e.getCode();if(r>0){let e=Vn(r);if(e)return e}let s=e.getName(),i=En.get(s);if(i){let t=i.deref();if(t&&t.m_peCoordSys.isEqual(e))return t}let n=new mn(t.release());if(r>0)return n.setCached(),yn.set(r,new WeakRef(n)),En.set(s,new WeakRef(n)),n;let a=ci(e,0,!1);if(i=Sn.get(a),i){let e=i.deref();if(e)return e}return n.setCached(),Sn.set(a,new WeakRef(n)),n}function Vn(e){let t=yn.get(e);if(t)return t.deref()}class kn extends d{constructor(e){return void 0===e?(super(),this.m_wkid=9001,void(this.m_peUnit=null)):"number"==typeof e?(super(),this.m_factor=e,void(this.m_wkid=0)):(super(e),void(e||(this.m_factor=1,this.m_wkid=9001,this.m_peUnit=(bn||=Ia.unit(9001),bn))))}getUnitType(){return 0}convertFromMeters(e){return e/this.getUnitToBaseFactor()}convertToMeters(e){return e*this.getUnitToBaseFactor()}}const Fn="0123456789bcdefghjkmnpqrstuvwxyz".split("");function Hn(e,t,r,s,n){(0,i.g)(s>>5<n.length);let a=t,o=r;for(let t=s;t>=0;t-=2){let r=31&t,s=.5*(o+a);e>=s?(n[t>>5]|=1<<r,a=s):o=s}}let An=new Set;const Mn=2147483645n,Un=9007199254740990n,qn="operation is not supported for unknown coordinate systems";var Bn;function On(){return{majorSemiAxis:0,e2:0,minorSemiAxis:0,flattening:0,isSphere(){return 0===this.e2}}}function Yn(e){if(Ia)return;!function(e){let t=e;Ia=t.PeFactory,(0,i.g)(Ia),ka=t.PeGCSExtent,(0,i.g)(ka),Da=t.PeLineType,(0,i.g)(Da),Va=t.PeMath,(0,i.g)(Va),Sa=t.PeDouble,(0,i.g)(Sa),va=t.PeDefs,(0,i.g)(va),Ga=t.PeCSTransformations,(0,i.g)(Ga),wa=t.PeGTTransformations,(0,i.g)(wa),ba=t.PePCSInfo,(0,i.g)(ba),Ta=t.PeGTlistExtended,(0,i.g)(Ta),Ia.initialize(),Na=t.PeGTlistExtendedEntry,(0,i.g)(Na),va.PE_TYPE_ANGUNIT=512,va.PE_STR_AUTH_ALL=2,ba.PE_POLE_LINE_STRAIGHT=2,ba.PE_POLE_LINE_CURVED=3,va.PE_PARM_LAM0=2,va.PE_PARM_PHI0=6,va.PE_PRJ_AZIMUTHAL_EQUIDISTANT=43032,va.PE_PRJ_LAMBERT_AZIMUTHAL_EQAREA=43033,va.PE_PRJ_ALBERS=43007,va.PE_PRJ_CYLINDRICAL_EQAREA=43034,va.PE_TYPE_VERTCS=8,va.PE_LINETYPE_GEODESIC=0,va.PE_LINETYPE_LOXODROME=1,va.PE_LINETYPE_GREAT_ELLIPTIC=2,va.PE_LINETYPE_NORMAL_SECTION=3,Ta.PE_GTLIST_OPTS_USABLE=1,Fa=null}(e);let t=An;An=null,t.forEach(e=>{let t=e.deref();t&&t.attachToPe()})}function Xn(e){!function(e){Fa=e,(0,i.g)(Fa)}(e)}function Rn(){return!!Ia}function Ln(){return!!Fa}function zn(){return!!Ia||!!Fa}function Wn(e,t,r){return(0,i.g)(zn()),fa(e,void 0===t?0:t,0,!1)}function jn(e,t){(0,i.g)(zn());let r,s=new la;return Rn()?(r=function(e){let t=Ca(Ia.fromString(va.PE_TYPE_COORDSYS,e));return t.get()||(0,i.z)(e),Cn(t.release())}(e),s.setHorzProj_(r),s.m_vertcs=null,s.m_userWKID=r.getLatestID()):(r=Ha(e),s.m_unit=r.isPCS?new kn(r.metersOrRadiansPerUnit):new x(r.metersOrRadiansPerUnit)),pa(s.m_precisionDescriptor,r,null,1),s.m_bDefaultDescriptor=!0,s.m_userWKT=e,s.calculateHashCode(),s.initDbgName(),s}function Zn(e,t,r,s,n=!0){let a=null;return t&&((0,i.g)(0),a={}),function(e,t,r,s,n){e||(0,i.b)("!PE_coord_sys");let a,o=new la;return a=n?Cn(e):new mn(e,!1),pa(o.m_precisionDescriptor,a,t,s),o.m_bDefaultDescriptor=!0,o.setHorzProj_(a),o.m_vertcs=t,o.m_userWKID=a.getLatestID(),o.calculateHashCode(),o.initDbgName(),o}(e,a,0,s,n)}function Kn(e,t,r=!1){3===e.getCoordinateSystemType()&&(0,i.b)("image spatial reference cannot be altered");let s=new la,n=e;return s.m_peCoordSysVal=n.m_peCoordSysVal,s.m_vertcs=n.m_vertcs,s.m_unit=n.m_unit,s.m_precisionDescriptor.assign(t),s.m_localZToXYFactor=n.m_localZToXYFactor,(Number.isNaN(s.m_precisionDescriptor.m_falseX)||Number.isNaN(s.m_precisionDescriptor.m_falseY))&&(s.m_precisionDescriptor.m_falseX=n.m_precisionDescriptor.m_falseX,s.m_precisionDescriptor.m_falseY=n.m_precisionDescriptor.m_falseY),s.m_precisionDescriptor.snapPrecision(),s.m_precisionDescriptor.fixTolerance(),s.m_userWKID=n.m_userWKID,s.m_bDefaultDescriptor=!!s.m_precisionDescriptor.equals(n.m_precisionDescriptor)&&n.m_bDefaultDescriptor,r&&(s.m_bDefaultDescriptor=!0),s.calculateHashCode(),s.initDbgName(),s}function Qn(e,t,r){void 0===t&&(t=1),(t<=0||!Number.isFinite(t))&&(0,i.b)(""),!e&&1!==t&&(0,i.b)("null Unit has to have z_to_xy_factor equal to 1");let s=new la;s.m_unit=e;let n=e||new kn(9001);return ca(s.m_precisionDescriptor,n,null,1),s.m_bDefaultDescriptor=!0,Number.isNaN(s.m_precisionDescriptor.m_falseX)&&(0,i.b)("NAN false X/Y are not allowed here"),s.m_localZToXYFactor=t,s.calculateHashCode(),s.initDbgName(),s}function Jn(e){let t=e.getCoordinateSystemType();return 1===t?e:(3===t&&(0,i.g)(0),e.getGCS())}function $n(e){return(0,i.g)(zn()),Ln()?function(e){return(0,i.g)(Ln()),!!Fa(e).isPCS||function(e){return Ia&&(0,i.q)("pe has been loaded. no-pe methods should not be used at this point."),Pa||Ma(),Pa.has(e)}(e)}(e):function(e){if(Nn.has(e))return Nn.get(e);{let t=function(e){return null!==Ca(Ia.coordsys(e)).get()}(e);return Nn.set(e,t),t}}(e)}function ea(e){if(Rn()){let t={stack:[],error:void 0,hasError:!1};try{return null!==(0,s.mS)(t,Ia.fromString(va.PE_TYPE_COORDSYS,e,!0),!1)}catch(e){t.error=e,t.hasError=!0}finally{(0,s.hk)(t)}}try{return Ha(e),!0}catch{}return!1}let ta;function ra(){return ta||=(()=>{let e=Math.trunc(Math.random()*(0,l.i)()),t=Date.now();return`|abba_000|${e.toString(16)}|${t.toString(16)}|`})(),ta}!function(e){e[e.utmDefault=0]="utmDefault",e[e.utmNorthSouth=1]="utmNorthSouth"}(Bn||={});let sa,ia,na,aa=0;function oa(e=""){let t=`${ra()}${aa++}`;return""!==e&&(t+=`|${e}`),t}class la{m_vertcs=null;m_peCoordSysVal=null;m_unit;m_userWKID=0;m_userWKT=null;m_geogSpatialReference=null;m_srToGcs=null;m_gcsToSr=null;m_defaultPrecisionSR=null;m_localZToXYFactor=-1;m_precisionDescriptor=new ma;m_hashCode=0;m_bDefaultDescriptor=!1;destroy(){(function(e){En.delete(e.m_peCoordSys.getName()),Sn.delete(ci(e.m_peCoordSys,0,!1))})(this.m_peCoordSysVal),1===this.getCoordinateSystemType()||2===this.getCoordinateSystemType()?this.getPECoordSys().destroy():(0,i.d)("SpatialReference.destroy")}constructor(){_a(this.m_precisionDescriptor),An&&An.add(new WeakRef(this))}attachToPe(){(this.m_userWKID>0?Wn(this.m_userWKID):jn(this.m_userWKT)).copyTo(this,!1)}copyTo(e,t=!0){(t||e.m_bDefaultDescriptor)&&(e.m_bDefaultDescriptor=this.m_bDefaultDescriptor,e.m_precisionDescriptor.assign(this.m_precisionDescriptor)),e.m_defaultPrecisionSR=null,e.m_gcsToSr=this.m_gcsToSr,e.m_geogSpatialReference=this.m_geogSpatialReference,e.m_hashCode=this.m_hashCode,e.m_localZToXYFactor=this.m_localZToXYFactor,e.m_peCoordSysVal=this.m_peCoordSysVal,e.m_srToGcs=this.m_srToGcs,e.m_userWKID=this.m_userWKID,e.m_userWKT=this.m_userWKT,e.m_vertcs=this.m_vertcs,e.m_unit=this.m_unit}getHashCode(){return this.m_hashCode}getHashCodeHorizontal(){let e=0;return e=this.m_peCoordSysVal?this.m_peCoordSysVal.getHashCode():this.m_unit?this.m_unit.getHashCode():305419891,e}updateTransform(e){if(1===this.getCoordinateSystemType())return _n(this,this,null);let t=e?this.m_srToGcs:this.m_gcsToSr;if(t)return t;let r=this.getGCS();t=e?_n(this,r,null):_n(r,this,null);let s=t;return(e?this.m_srToGcs:this.m_gcsToSr)||(e?this.m_srToGcs=s:this.m_gcsToSr=s,t)}getHashCodeVertical(){return this.m_vertcs?this.m_vertcs.getHashCode():0}calculateHashCode(){let e=this.getHashCodeHorizontal(),t=this.getHashCodeVertical(),r=this.m_precisionDescriptor.getHashCode();e=(0,l.B)(e,t),this.m_hashCode=(0,l.B)(e,r)}initDbgName(){}setHorzProj_(e){this.m_peCoordSysVal=e,this.m_unit=this.m_peCoordSysVal.getUnit()}getTolerance(e=0){return this.m_precisionDescriptor.getTolerance(e)}getResolution(e=0){return this.m_precisionDescriptor.getResolution(e)}getPECoordSys(){return this.m_peCoordSysVal?this.m_peCoordSysVal.m_peCoordSys:null}getPCSInfo(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPCSInfo()}getCentralMeridian(){return this.throwIfNotGCSOrPCS(),1===this.getCoordinateSystemType()?0:this.getPCSInfo().getCentralMeridian()}getCoordinateSystemType(){let e=this.getPECoordSys();if(e)switch(e.getType()){case va.PE_TYPE_GEOGCS:return 1;case va.PE_TYPE_PROJCS:return 2;default:return 0}else{if((this.m_userWKID>0||this.m_userWKT)&&this.m_unit instanceof kn)return 2;if(this.m_unit instanceof x)return 1}return 0}getID(){return this.m_userWKID}getLatestID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getLatestID():this.m_userWKID}getOldID(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getOldID():this.m_userWKID}getVerticalID(){return(0,i.a)("vcs not implemented"),0}getLatestVerticalID(){return this.m_vertcs?this.m_vertcs.getLatestID():0}getOldVerticalID(){return(0,i.a)("vcs not implemented"),0}getPEVerticalCoordSys(){return null}getPole(e){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPole(e)}getText(){let e=this.getPECoordSys();return e?fi(e):this.m_userWKT??""}getTextExtended(e){let t=this.getPECoordSys();return t?this.getPEVerticalCoordSys()?(this.getPEVerticalCoordSys(),(0,i.g)(0),""):fi(t,e):this.m_userWKT??""}getText2(e=-1){let t=this.getPECoordSys();return t?function(e,t){(t>1||t<-1)&&(0,i.b)("verbosity");let r=va.PE_STR_FMT_WKT2;return-1!==t&&(r|=0===t?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL),e.toString(r)}(t,e):this.m_userWKT??""}getUnit(){return this.m_unit}getUnitsPerMillimeter(){return this.m_peCoordSysVal?this.m_peCoordSysVal.getUnitsPerMillimeter():this.m_unit instanceof kn?.001/this.m_unit.getUnitToBaseFactor():this.m_unit instanceof x?.001/(Ha(this.m_userWKT??this.m_userWKID).semiMajor*this.m_unit.getUnitToBaseFactor()):((0,i.q)("sr object not in valid state"),0)}getAuthorityName(){return this.getPECoordSys()?((0,i.g)(0),""):""}getVerticalUnit(){return(0,i.a)("vcs not implemented"),{}}getVCS(){return this.m_vertcs}hasVCS(){return!1}getGCSHorisonIsInclusive(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSHorisonIsInclusive()}getGCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSHorizon()}getGCS(){let e,t=this.getCoordinateSystemType();if(0===t)(0,i.q)(qn);else{if(1===t)return this;3===t&&(0,i.q)("image cs not supported")}if(this.m_geogSpatialReference)return this.m_geogSpatialReference;if(this===ha()||this===ga())e=ua();else{(0,i.g)(this.m_peCoordSysVal);let t=this.m_peCoordSysVal.m_peCoordSys.getGeogcs();t||(0,i.d)(""),e=Zn(t,this.m_vertcs,0,this.m_precisionDescriptor.getPrecision(),this.m_peCoordSysVal.getCached())}return this.m_geogSpatialReference?e=this.m_geogSpatialReference:this.m_geogSpatialReference=e,e}getGCSSplitLines(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGCSSplitLines()}toGCS(e,t){if(0===e.length)return 0;e.length>t.length&&(0,i.b)("coordsSrc.size() > coordsDst.size()");let r=this.getCoordinateSystemType();if(0===r&&(0,i.q)(qn),1===r)return(0,l.F)(t,e,e.length),e.length;(0,i.g)(this.m_peCoordSysVal);let s=this.getSRToGCSTransform();return(new ps).transform(s,e,e.length,t)}toGeohash(e,t=8){let r=e.clone();r.scale(9102===this.getGCS().getUnit().getID()?1:this.getGCS().getUnit().getUnitToBaseFactor()/Math.PI*180),r.x<-180?(r.x=(0,l.p)(r.x,360),r.x<-180&&(r.x+=360)):r.x>180&&(r.x=(0,l.p)(r.x,360),r.x>180&&(r.x-=360)),r.y>90&&(r.y=90),r.y<-90&&(r.y=-90);let s=5*t,i=new Uint32Array(4);return Hn(r.x,-180,180,s-1,i),Hn(r.y,-90,90,s-2,i),function(e,t,r){let s=(0,l.c)(t,"R"),i=0,n=0;for(let r=0;r<t;r++){let a=e[i]>>n&31;if(n+=5,n>31){let t=37-n;a&=(1<<t)-1,n-=32,i++,a|=(e[i]&(1<<n)-1)<<t}let o=Fn[a];s[t-1-r]=o}return r>t?s.push(..."0".repeat(r-t)):r<t&&(s.length=r),s.join("")}(i,t,t)}isPannable(){let e=this.getCoordinateSystemType();return 0!==e&&3!==e&&((0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.isPannable())}getPannableExtent(){return this.isPannable()||(0,i.b)("!is_pannable"),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPannableExtent()}getPannableExtentInGCS(){return this.isPannable()||(0,i.b)("!is_pannable"),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPannableExtentGCS()}throwIfNotGCSOrPCS(){let e=this.getCoordinateSystemType();1!==e&&2!==e&&(0,i.b)("Not a GCS or PCS")}getDomainXY(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getDomainXY()}getFullWorldExtent(){return this.throwIfNotGCSOrPCS(),this.isPannable()?this.getPannableExtent():this.getDomainXY()}queryPrecisionDescriptor(e){if(e.assign(this.m_precisionDescriptor),Number.isNaN(e.m_falseX))if(Rn()||(0,i.e)("cannot query precision descriptor"),(0,i.g)(null!==this.m_peCoordSysVal),2!==this.m_precisionDescriptor.m_precision){let t=this.m_peCoordSysVal.getDomainXY();e.m_falseX=t.xmin,e.m_falseY=t.ymin}else e.m_falseX=-Number.MAX_VALUE,e.m_falseY=-Number.MAX_VALUE}queryPrecisionDescriptorWithoutFalseXY(e){e.assign(this.m_precisionDescriptor),e.m_falseX=NaN,e.m_falseY=NaN}queryDefaultPrecisionDescriptorWithoutFalseXY(e){if(this.m_bDefaultDescriptor)e.assign(this.m_precisionDescriptor);else{let t=this.getCoordinateSystemType();0===t?ca(e,this.m_unit,this.m_vertcs,this.m_precisionDescriptor.getPrecision()):3===t?(0,i.a)("image cs"):pa(e,this.m_peCoordSysVal,this.m_vertcs,this.m_precisionDescriptor.getPrecision())}e.m_falseX=NaN,e.m_falseY=NaN}horizontalEqual(e){return function(e,t){return e===t||null!==e&&null!==t&&e.m_csType===t.m_csType&&(0===e.m_WKID&&0===t.m_WKID?e.m_hashCode===t.m_hashCode&&e.m_canonicalWkt===t.m_canonicalWkt:e.m_WKID===t.m_WKID)}(this.m_peCoordSysVal,e.m_peCoordSysVal)}verticalEqual(e){return null!==this.m_vertcs==(null!==e.m_vertcs)&&(!this.m_vertcs||this.m_vertcs.equals(e.m_vertcs))}equals(e){let t=e;if(this===t)return!0;if(!this.horizontalEqual(t)||!this.verticalEqual(t)||!t.m_peCoordSysVal&&((0,i.g)(!this.m_peCoordSysVal),null!==this.m_unit!=(null!==t.m_unit)||this.m_unit&&!this.m_unit.equals(t.m_unit)||this.m_localZToXYFactor!==t.m_localZToXYFactor))return!1;if(!this.m_bDefaultDescriptor||!t.m_bDefaultDescriptor){if(this.m_peCoordSysVal){if(!this.m_precisionDescriptor.equalsWithoutFalseXY(t.m_precisionDescriptor))return!1;(0,i.g)(t.m_peCoordSysVal);let e=this.m_precisionDescriptor.m_falseX,r=this.m_precisionDescriptor.m_falseY;if(Number.isNaN(e)){let t=this.m_peCoordSysVal.getDomainXY();e=t.xmin,r=t.ymin}let s=t.m_precisionDescriptor.m_falseX,n=t.m_precisionDescriptor.m_falseY;if(Number.isNaN(s)){let e=t.m_peCoordSysVal.getDomainXY();s=e.xmin,n=e.ymin}return e===s&&r===n}return this.m_precisionDescriptor.equals(t.m_precisionDescriptor)}return!0}equalForProjection(e,t){if(this===e)return!0;let r=this.getCoordinateSystemType(),s=e.getCoordinateSystemType();if(0===r||0===s)return 0===r&&0===s?(!t||this.getZToXYFactor()===e.getZToXYFactor())&&(!this.getUnit()||!e.getUnit()||this.getUnit().equals(e.getUnit())):3!==r&&3!==s&&(null===this.getUnit()||null===e.getUnit()||(!t||this.getZToXYFactor()===e.getZToXYFactor())&&this.getUnit().equals(e.getUnit()));if(r!==s)return!1;if(3===r)return this.equals(e);if(function(e,t){return e===t||null!==e&&null!==t&&e.m_csType===t.m_csType&&(0===e.m_WKID&&0===t.m_WKID?1===e.m_csType?e.m_peCoordSys.isEqual(t.m_peCoordSys):e.m_peCoordSys===t.m_peCoordSys:e.m_WKID===t.m_WKID)}(this.m_peCoordSysVal,e.m_peCoordSysVal)){if(!t)return!0;if(null!==this.m_vertcs==(null!==e.m_vertcs))return!this.m_vertcs||this.m_vertcs.equalForProjection(e.m_vertcs)}return!1}equalHorizontal(e){return this.horizontalEqual(e)}equalVertical(e){return(0,i.g)(0),!1}equalVerticalVCS(e){return(0,i.g)(0),!1}convergenceAngle(e){return(0,i.g)(0),0}getPeCoordsysCopy(){if(this.m_peCoordSysVal){let e=this.m_peCoordSysVal.m_peCoordSys;return e||(0,i.d)("cannot clone coord sys"),e}return null}getPeVertcsCopy(){return(0,i.g)(0),0}throwIfLocal(){0===this.getCoordinateSystemType()&&(0,i.b)(qn)}getPrimeMeridian(){return this.throwIfLocal(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPrimeMeridian()}getSRToGCSTransform(){return this.updateTransform(!0)}getGCSToSRTransform(){return this.updateTransform(!1)}getOneMeter(){return 1e3*this.getUnitsPerMillimeter()}getOneMeterPCSUnit(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getOneMeterPCSUnit()}getDefaultPrecisionSR(){if(this.m_bDefaultDescriptor)return this;if(null===this.m_defaultPrecisionSR){let e=new ma;this.queryDefaultPrecisionDescriptorWithoutFalseXY(e),this.m_defaultPrecisionSR=Kn(this,e,!0)}return this.m_defaultPrecisionSR}getPCSHorizon(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getPCSHorizon()}getHorzUnitFactor(){return this.m_unit?this.m_unit.getUnitToBaseFactor():1}querySpheroidData(e){this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal);let t=this.getGCS().getPECoordSys().getDatum().getSpheroid(),r=t.getFlattening();!function(e,t,r){e.majorSemiAxis=t,e.minorSemiAxis=t*(1-r),e.e2=r*(2-r),e.flattening=r}(e,t.getAxis(),r)}getAreaOfUse(){0===this.getCoordinateSystemType()&&(0,i.q)(""),(0,i.g)(this.m_peCoordSysVal);let e=this.m_peCoordSysVal.getAreaOfUse();return null===e?new p:new p({geom:e.clone(),sr:Wn(4326)})}getZToXYFactor(){return 1}isCustomWkid(){return!1}getOneDegreeGCSUnit(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getOneDegreeGCSUnit()}getGcsUnitFactor(){return this.throwIfNotGCSOrPCS(),(0,i.g)(this.m_peCoordSysVal),this.m_peCoordSysVal.getGcsUnitFactor()}snapGeometry(e){if(e.isEmpty()||2===this.m_precisionDescriptor.getPrecision())return!1;let t=e.getGeometryType();if((0,i.i)(t))return this.snapMultiVertex_(e);if(t===i.G.enumPoint)return this.snapPoint_(e);if(t===i.G.enumEnvelope)return this.snapEnvelope_(e);if((0,i.h)(t))return this.snapSegment_(e);if(t===i.G.enumGeometryCollection){let t=e,r=!1;for(let e=0,s=t.getGeometryCount();e<s;++e)r=this.snapGeometry(t.getGeometry(e))||r;return r}(0,i.d)("what else?")}snapMultiVertex_(e){if((0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision()),(0,i.j)(e.getGeometryType())){let t=e;if(t.hasNonLinearSegments())return this.snapGeometryWithCurves_(t)}let t=e.getImpl(),r=t.getDescription(),s=!1;for(let e=0,i=r.getAttributeCount();e<i;e++){let i=r.getSemantics(e),n=t.getAttributeStreamRef(i);s=this.snapAttributes(i,n,0,t.getPointCount())||s}return s&&t.notifyModifiedFlags(2001),s}snapPoint_(e){return!1}snapEnvelope_(e){return!1}snapSegment_(e){(0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision());let t=new ma;this.queryPrecisionDescriptor(t);let r=e.getStartXY(),s=new l.P;s.x=xa(r.x,t.getFalseX(),t.getGridUnitsXY()),s.y=xa(r.y,t.getFalseY(),t.getGridUnitsXY());let n=!s.equals(r),a=e.getEndXY(),o=new l.P;o.x=xa(a.x,t.getFalseX(),t.getGridUnitsXY()),o.y=xa(a.y,t.getFalseY(),t.getGridUnitsXY()),n||=!o.equals(a),n&&e.changeEndPoints2D(s,o);let m=(t,r,s)=>{let i=!1;{let n=e.getStartAttributeAsDbl(t,0),a=xa(n,r,s),o=!(0,l.G)(a,n);i||=o,o&&e.setStartAttribute(t,0,a)}{let n=e.getEndAttributeAsDbl(t,0),a=xa(n,r,s),o=!(0,l.G)(a,n);i||=o,o&&e.setEndAttribute(t,0,a)}return i},h=+!!n;return e.hasAttribute(1)&&(h|=+!!m(1,t.getFalseZ(),t.getGridUnitsZ())),e.hasAttribute(2)&&(h|=+!!m(2,t.getFalseM(),t.getGridUnitsM())),!!h}snapGeometryWithCurves_(e){(0,i.g)(!e.isEmpty()),(0,i.g)(2!==this.m_precisionDescriptor.getPrecision());let t=e.createInstance(),r=new a.S,s=0;for(let i=0,n=e.getPathCount();i<n;++i){let n=e.getSegmentCountPath(i);if(0===n){if(t.addPath(e,i,!0),1===t.getPathSize(i)){let e=new o.P;t.getPointByVal(t.getPointCount()-1,e),s|=+!!this.snapGeometry(e),t.setPointByVal(t.getPointCount()-1,e)}continue}let a=e.isClosedPath(i);for(let o=0,l=a?n-1:n;o<l;++o)e.getSegmentFromPath(i,o,r,!1),s|=+!!this.snapGeometry(r.get()),t.addSegment(r.get(),0===o);a&&(e.getSegmentFromPath(i,n-1,r,!1),s|=+!!this.snapGeometry(r.get()),1===n?t.addPathFromClosedSegment(r.get(),!1):t.closeLastPathWithSegment(r.get()))}return s&&t.copyTo(e),!!s}snapAttributes(e,t,r,s){let i=!1,n=new ma;if(this.queryPrecisionDescriptor(n),0===e){let e=t;for(let t=r;t<s;t++){let r=e.read(2*t),s=la.s_SnapValue(r,n.getFalseX(),n.getGridUnitsXY()),a=e.read(2*t+1),o=la.s_SnapValue(a,n.getFalseY(),n.getGridUnitsXY());i=i||s!==r||o!==a,i&&(e.write(2*t,s),e.write(2*t+1,o))}}else if(1===e){let e=t;for(let t=r;t<s;t++){let r=e.read(t),s=la.s_SnapValue(r,n.getFalseZ(),n.getGridUnitsZ());i||=!(0,l.G)(s,r),i&&e.write(t,s)}}else if(2===e){let e=t;for(let t=r;t<s;t++){let r=e.read(t),s=la.s_SnapValue(r,n.getFalseM(),n.getGridUnitsM());i||=!(0,l.G)(s,r),i&&e.write(t,s)}}return i}static s_SnapValue(e,t,r){return(0,l.H)((e-t)*r)/r+t}}class ma{m_falseX;m_falseY;m_unitsXY;m_falseZ;m_unitsZ;m_falseM;m_unitsM;m_toleranceXY;m_toleranceZ;m_toleranceM;m_precision;constructor(){let e=Un,t=1e-4,r=.001,s=t*Number(e)*.5;this.m_precision=1,this.m_falseX=-s,this.m_falseY=-s,this.m_unitsXY=Number(e)/(2*s),this.m_falseM=-1e5,this.m_unitsM=1/t,this.m_falseZ=-1e5,this.m_unitsZ=1/t,this.m_toleranceXY=r,this.m_toleranceM=r,this.m_toleranceZ=r}getHashCode(){let e=7777,t=7777;return t=(0,l.B)(t,this.m_falseM),t=(0,l.B)(t,this.m_unitsM),e=(0,l.B)(e,this.m_unitsXY),t=(0,l.B)(t,this.m_toleranceXY),e=(0,l.B)(e,this.m_falseZ),t=(0,l.B)(t,this.m_toleranceZ),e=(0,l.B)(e,this.m_unitsZ),t=(0,l.B)(t,this.m_toleranceM),e=(0,l.B)(e,this.m_precision),(0,l.B)(e,t)}clone(){let e=new ma;return e.m_falseX=this.m_falseX,e.m_falseY=this.m_falseY,e.m_unitsXY=this.m_unitsXY,e.m_falseZ=this.m_falseZ,e.m_unitsZ=this.m_unitsZ,e.m_falseM=this.m_falseM,e.m_unitsM=this.m_unitsM,e.m_toleranceXY=this.m_toleranceXY,e.m_toleranceZ=this.m_toleranceZ,e.m_toleranceM=this.m_toleranceM,e.m_precision=this.m_precision,e}assign(e){return this.m_falseX=e.m_falseX,this.m_falseY=e.m_falseY,this.m_unitsXY=e.m_unitsXY,this.m_falseZ=e.m_falseZ,this.m_unitsZ=e.m_unitsZ,this.m_falseM=e.m_falseM,this.m_unitsM=e.m_unitsM,this.m_toleranceXY=e.m_toleranceXY,this.m_toleranceZ=e.m_toleranceZ,this.m_toleranceM=e.m_toleranceM,this.m_precision=e.m_precision,this}initialize2D(e,t){}getTolerance(e){switch(e){case 0:return this.m_toleranceXY;case 1:return this.m_toleranceZ;case 2:return this.m_toleranceM;default:return 0}}getResolution(e){if(2===this.m_precision)return 0;switch(e){case 0:return 1/this.m_unitsXY;case 1:return 1/this.m_unitsZ;case 2:return 1/this.m_unitsM;default:return 0}}getFalseX(){return this.m_falseX}getFalseY(){return this.m_falseY}getFalseZ(){return this.m_falseZ}getFalseM(){return this.m_falseM}getGridUnitsXY(){return this.m_unitsXY}getGridUnitsZ(){return this.m_unitsZ}getGridUnitsM(){return this.m_unitsM}getPrecision(){return this.m_precision}static getLimit32(){return 2147483645}static getLimit64(){return 9007199254740990n}static getLimitFloat(){return 0}getXYGridRange(){let e=new n.Envelope2D;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsXY();e.setCoords({xmin:this.getFalseX(),ymin:this.getFalseY(),xmax:this.getFalseX()+t,ymax:this.getFalseY()+t})}break;case 2:e.setCoords({xmin:-Number.MAX_VALUE,ymin:-Number.MAX_VALUE,xmax:Number.MAX_VALUE,ymax:Number.MAX_VALUE});break;default:e.setEmpty(),(0,i.d)("")}return e}getZGridRange(){let e=new l.E;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsZ();e.setCoords(this.getFalseZ(),this.getFalseZ()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,i.d)("")}return e}getMGridRange(){let e=new l.E;switch(this.m_precision){case 0:{let t=ma.getLimit32()/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 1:{let t=Number(ma.getLimit64())/this.getGridUnitsM();e.setCoords(this.getFalseM(),this.getFalseM()+t)}break;case 2:e.setCoords(-Number.MAX_VALUE,Number.MAX_VALUE);break;default:e.setEmpty(),(0,i.d)("")}return e}setTolerance(e,t){switch(t<0&&(0,i.b)("tol < 0"),Number.isFinite(t)||(0,i.b)("tol is not finite"),e){case 0:this.m_toleranceXY=t;break;case 1:this.m_toleranceZ=t;break;case 2:this.m_toleranceM=t;break;default:(0,i.b)("cannot set tolerance for this attribute")}}setGridParams(e,t,r){(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(r))&&(0,i.b)("grid params are not finite"),r<1&&(0,i.b)("grid units cannot be smaller than 1.0"),this.m_falseX=e,this.m_falseY=t,this.m_unitsXY=r}setZParams(e,t){(!Number.isFinite(e)||!Number.isFinite(t))&&(0,i.b)("grid params are not finite"),t<1&&(0,i.b)("grid units cannot be smaller than 1.0"),this.m_falseZ=e,this.m_unitsZ=t}setMParams(e,t){(!Number.isFinite(e)||!Number.isFinite(t))&&(0,i.b)("grid params are not finite"),t<1&&(0,i.b)("grid units cannot be smaller than 1.0"),this.m_falseM=e,this.m_unitsM=t}setPrecision(e){}equals(e){return this===e||(0,l.G)(this.m_falseX,e.m_falseX)&&(0,l.G)(this.m_falseY,e.m_falseY)&&this.equalsWithoutFalseXY(e)}snapPrecision(){if(2===this.m_precision)return;let e=(e,t,r,s)=>{if(!Number.isFinite(t)||!Number.isFinite(r))return r;if(r<1)return 1;if(!s)return r;let i=Number(e)/r;return Math.trunc((t+i-t)*r)>e&&(r=e/(t+i-t)),Math.max(1,r)},t=Number(0===this.m_precision?Mn:Un);this.m_unitsXY=e(t,this.m_falseX,this.m_unitsXY,!0),this.m_unitsXY=e(t,this.m_falseY,this.m_unitsXY,!0),this.m_unitsZ=e(t,this.m_falseZ,this.m_unitsZ,!1),this.m_unitsM=e(t,this.m_falseM,this.m_unitsM,!1)}verifyPrecision(){if(2===this.m_precision)return!0;let e=(e,t,r,s)=>{if(r<1||!Number.isFinite(t)||!Number.isFinite(r))return!1;if(!s)return!0;let i=Number(e)/r;return!(BigInt((t+i-t)*r)>e)},t=0===this.m_precision?Mn:Un;return!!(e(t,this.m_falseX,this.m_unitsXY,!0)&&e(t,this.m_falseY,this.m_unitsXY,!0)&&e(t,this.m_falseZ,this.m_unitsZ,!1)&&e(t,this.m_falseM,this.m_unitsM,!1))}fixTolerance(){2!==this.m_precision&&(this.m_toleranceXY=Math.max(2/this.m_unitsXY,this.m_toleranceXY),this.m_toleranceZ=Math.max(2/this.m_unitsZ,this.m_toleranceZ),this.m_toleranceM=Math.max(2/this.m_unitsM,this.m_toleranceM),(Number.isNaN(this.m_falseX)||Number.isNaN(this.m_falseY))&&(this.m_falseX=this.m_falseY=NaN))}equalsWithoutFalseXY(e){return this===e||this.m_unitsXY===e.m_unitsXY&&this.m_falseZ===e.m_falseZ&&this.m_unitsZ===e.m_unitsZ&&this.m_falseM===e.m_falseM&&this.m_unitsM===e.m_unitsM&&this.m_toleranceXY===e.m_toleranceXY&&this.m_toleranceZ===e.m_toleranceZ&&this.m_toleranceM===e.m_toleranceM&&this.m_precision===e.m_precision}setBestXyDomainFromEnvelope(e,t){}setBestZDomainFromZRange(e,t,r){}setBestMDomainFromMRange(e,t,r){}}function ha(){return(!sa||Rn()&&null===sa.getPECoordSys())&&(sa=fa(3857,0,0,!0)),sa}function ga(){return(!ia||Rn()&&null===ia.getPECoordSys())&&(ia=fa(102100,0,0,!0)),ia}function ua(){return(!na||Rn()&&null===na.getPECoordSys())&&(na=fa(4326,0,0,!0)),na}function _a(e){e.m_falseX=0,e.m_falseY=0,e.m_unitsXY=1,e.m_falseZ=0,e.m_unitsZ=1,e.m_falseM=0,e.m_unitsM=1,e.m_toleranceXY=100*(0,l.I)(),e.m_toleranceZ=100*(0,l.I)(),e.m_toleranceM=100*(0,l.I)(),e.m_precision=2}function pa(e,t,r,s){let n=t instanceof mn;_a(e),e.m_precision=s,e.m_falseX=NaN,e.m_falseY=NaN;let a=1e-4,o=.001,l=n?t.m_csType:t.isPCS?2:1;1===l?e.m_unitsXY=1/((0===s?5.555555555555555e-7:1e-9)*(n?t.getOneDegreeGCSUnit():Math.PI/t.metersOrRadiansPerUnit/180)):2===l?e.m_unitsXY=1/((0===s?o:a)*(n?t.getOneMeterPCSUnit():1/t.metersOrRadiansPerUnit)):(0,i.b)("unrecognized cs type"),e.m_falseM=-1e5,e.m_unitsM=1/(0===s?o:a),e.m_unitsM=Math.max(1,e.m_unitsM),e.m_unitsXY=Math.max(1,e.m_unitsXY);let m=0,h=0;(0===s||1===s)&&(m=2/e.m_unitsXY,h=2/e.m_unitsM),e.m_toleranceXY=Math.max(m,n?t.getUnitsPerMillimeter():2===l?.001/t.metersOrRadiansPerUnit:.001/(t.semiMajor*t.metersOrRadiansPerUnit)),e.m_toleranceM=Math.max(o,h),da(e,r)}function da(e,t){let r=1e-4,s=.001;e.m_falseZ=-1e5,e.m_unitsZ=t?1/((0===e.m_precision?s:r)*t.getOneMeter()):1/(0===e.m_precision?s:r),e.m_unitsZ=Math.max(1,e.m_unitsZ);let i=0;(0===e.m_precision||1===e.m_precision)&&(i=2/e.m_unitsZ),e.m_toleranceZ=Math.max(t?t.getOneMeter()*s:s,i)}function ca(e,t,r,s){_a(e),e.m_precision=s;let i=0===s?Mn:Un,n=1e-4,a=.001,o=1,l=1,m=.001;t&&(l=t.getUnitToBaseFactor()),t&&1===t.getUnitType()?(o=400*Math.PI/180,m=8.983152841195215e-9*Math.PI/180/l):(o=(0===s?a:n)*Number(i)*.5,m=a/l),o/=l,e.m_falseX=-o,e.m_falseY=-o,e.m_unitsXY=Number(i)/(2*o),e.m_falseM=-1e5,e.m_unitsM=1/(0===s?a:n),e.m_unitsM=Math.max(1,e.m_unitsM),e.snapPrecision();let h=0,g=0;(0===e.m_precision||1===e.m_precision)&&(g=2/e.m_unitsM,h=2/e.m_unitsXY),e.m_toleranceXY=Math.max(h,m),e.m_toleranceM=Math.max(a,g),da(e,r)}function fa(e,t,r,s){if(!s&&t<=0){if(3857===e)return ha();if(102100===e)return ga();if(4326===e)return ua()}let n,a=new la,o=null;return Rn()?(n=function(e){e<=0&&(0,i.y)(e);{let t=Vn(e);if(t)return t}let t=Ca(Ia.coordsys(e));t.get()||(0,i.y)(e);let r=Dn(t.release());return r.getLatestID()!==e&&yn.set(e,new WeakRef(r)),r}(e),t>0?o=null:t=0,a.setHorzProj_(n),a.m_vertcs=o):(n=Ha(e),a.m_unit=n.isPCS?new kn(n.metersOrRadiansPerUnit):new x(n.metersOrRadiansPerUnit)),pa(a.m_precisionDescriptor,n,o,1),a.m_bDefaultDescriptor=!0,a.m_userWKID=e,a.calculateHashCode(),a.initDbgName(),a}function xa(e,t,r){return(0,l.H)((e-t)*r)/r+t}let Pa=null;const ya=3552713678800501e-30;function Ea(e,t){return function(e,t,r){return e===t||Math.abs(e-t)<=r*(1+(Math.abs(e)+Math.abs(t))/2)}(e,t,ya)}let Sa;function Ca(e){return{_this:e,get(){return this._this},reset(e){this._this=e},release(){let e=this._this;return this._this=null,e}}}let Ia,va,Ga,wa,ba,Ta,Na,Da,Va,ka,Fa=null;function Ha(e){(0,i.g)(Fa);let t=Fa(e);return t.semiMajor=t.isPCS?NaN:function(e){if(Ia&&(0,i.q)("pe has been loaded. no-pe methods should not be used at this point."),"string"==typeof e){let t=e.match(Aa);(!t||2!==t.length)&&(0,i.b)("bad gcs wkt");let r=Number.parseFloat(t[1]);return Number.isFinite(r)||(0,i.b)("bad gcs wkt"),r}return Pa||Ma(),Pa.has(e)||(0,i.q)("gcs wkid not found"),Pa.get(e)}(e),t}const Aa=/(?:ELLIPSOID|SPHEROID)\["(?:\w|[-()])+",(\d+\.\d+)/;function Ma(){Pa=new Map;for(let e in f){let t=Number.parseFloat(e),r=f[e];if(Array.isArray(r))for(let e of r)Pa.set(e,t);else Pa.set(r,t)}!function(){for(let e in f)delete f[e]}()}function Ua(e,t){let r=Ia.geogtran(e);return r||(0,i.y)(e),new Xa(r,t)}function qa(e,t){let r=Ia.fromString(va.PE_TYPE_GEOGTRAN,e);return r||(0,i.z)(e),new Xa(r,t)}function Ba(e,t){return new Xa(e,t)}const Oa=(0,l.C)(0),Ya=(0,l.C)(1);class Xa{m_geogTranWrapper;m_hashCode;m_bInverted;constructor(e,t){if(e instanceof Xa)return this.m_geogTranWrapper=e.m_geogTranWrapper,this.m_bInverted=t?!e.m_bInverted:e.m_bInverted,void(this.m_hashCode=(0,l.B)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?Ya:Oa));this.m_geogTranWrapper=new ei(e),this.m_bInverted=t,this.m_hashCode=(0,l.B)(this.m_geogTranWrapper.getHashCode(),this.m_bInverted?Ya:Oa)}getID(){return this.m_geogTranWrapper.getLatestId()}getLatestID(){return this.m_geogTranWrapper.getLatestId()}getText(){return this.m_geogTranWrapper.getText()}getTextExtended(e){if(!this.m_geogTranWrapper.getGeogtran())return"";if(-1===e)return this.m_geogTranWrapper.getGeogtran().toString();{let t=0===e?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL;return this.m_geogTranWrapper.getGeogtran().toString(t)}}getText2(e=-1){let t=va.PE_STR_FMT_WKT2;return-1!==e&&(t|=0===e?va.PE_STR_AUTH_TOP:va.PE_STR_AUTH_ALL),this.m_geogTranWrapper.getGeogtran().toString(t)}getName(){return this.m_geogTranWrapper&&this.m_geogTranWrapper.getGeogtran()?this.m_geogTranWrapper.getGeogtran().getName():""}getInputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getOutputSr(!1):this.m_geogTranWrapper.getInputSr(!1)}getOutputSpatialReference(){return this.m_bInverted?this.m_geogTranWrapper.getInputSr(!1):this.m_geogTranWrapper.getOutputSr(!1)}getInverse(){return new Xa(this,!0)}isInverted(){return this.m_bInverted}getHashCode(){return this.m_hashCode}GetPeGeogtran(){return this.m_geogTranWrapper.getGeogtran()}equals(e){let t=e;return t===this||this.m_bInverted===t.m_bInverted&&(this.GetPeGeogtran()===t.GetPeGeogtran()||!(this.getID()!==t.getID()||0===this.getID()&&!this.GetPeGeogtran().isEqual(t.GetPeGeogtran())))}referencesMissingData(){return!!this.m_geogTranWrapper&&!this.m_geogTranWrapper.isUsable()}getWrapper(){return this.m_geogTranWrapper}}function Ra(){return new za([],null,null,null)}function La(e){let t=new Wa,r=e.getSteps();if(r){let s=e.getEntries();for(let e=0;e<r;e++){let r,i=0!==s[e].getDirection(),n=s[e].getGeogtran().getCode();if(n>=0)r=Ia.geogtran(n);else{let t=s[e].getGeogtran().toString(va.PE_STR_FMT_WKT);r=Ia.fromString(va.PE_TYPE_GEOGTRAN,t)}if(null==r)return null;let a=Ba(r,i);t.add(a)}return t.create()}return null}class za{m_bReadOnly=!0;m_transforms;m_inputSr;m_outputSr;m_name="";m_fastTrack=-1;m_bNameIsSet=!1;constructor(e,t,r,s){this.m_transforms=e,t&&(this.m_name=t,this.m_bNameIsSet=!0),this.m_inputSr=r,this.m_outputSr=s}getType(){return 0}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}createInverse(){return this.getInverse()}getHashCode(){let e=1973;for(let t=0;t<this.m_transforms.length;t++)e=(0,l.B)(e,this.m_transforms[t].getHashCode());return e}equals(e){return(0,i.g)(0),!1}referencesMissingData(){if(0===this.m_transforms.length)return!1;for(let e of this.m_transforms)if(e.referencesMissingData())return!0;return!1}isMatchingTransformation(e,t){return(0,i.g)(0),!1}validateTransformation(e,t){return(0,i.g)(0),!1}nameIsSet(){return(0,i.g)(0),!1}getInputSpatialReference(){return this.m_inputSr}getOutputSpatialReference(){return this.m_outputSr}getStep(e){return(e<0||e>this.count())&&(0,i.r)(""),this.m_transforms[e]}getInverse(){let e=new Wa;return e.addSteps(this,!0),e.setInputSpatialReference(this.m_outputSr),e.setOutputSpatialReference(this.m_inputSr),e.create()}transform(e,t,r){if(0===this.count())return;let s=this.m_inputSr,i=this.m_outputSr;if(e&&(i=(0,l.s)(s,s=i)),0===this.m_transforms.length)return void ti(s,null,i,null,t,null,r);let n=this.m_fastTrack;if(1===n)return void(0,a.R)(e,this.m_transforms,s=>{!function(e,t,r,s,i){let n=e.getVerttran(),a=e.getGeogtran();if(i>0){e.prepareOrThrow();let s=t?va.PE_TRANSFORM_2_TO_1:va.PE_TRANSFORM_1_TO_2;n?Ji():$i(a,i,r,null,s)}}(s.getWrapper(),e!==s.isInverted(),t,0,r)});let o=$s();-1===n&&o.initFromGcsAndVcs(s,null);let m=$s(),h=e?this.m_transforms.length-1:0,g=e?-1:1;for(let i=0,a=this.m_transforms.length;i<a;i++,h+=g){if(0===i){let i=this.m_transforms[h];ri(s.getPECoordSys(),null,i.getWrapper(),e!==i.isInverted(),t,null,r,m),-1===n&&(o.equals(m)||(n=0)),o.assign(m)}else{let s=this.m_transforms[h-g],i=this.m_transforms[h];si(o,s.getWrapper(),e!==s.isInverted(),i.getWrapper(),e!==i.isInverted(),t,null,r,m),-1===n&&(o.equals(m)||(n=0)),o.assign(m)}let a=this.m_transforms[h];ii(o,a.getWrapper(),e!==a.isInverted(),t,null,r,m),o.assign(m)}let u=this.m_transforms[h-g];(function(e,t,r,s,i,n,a,o){let l=$s();l.assign(r?t.m_inputUnitParams:t.m_outputUnitParams),l.processUnitParams(e);let m=null;s&&(m=s.getPECoordSys());let h=$s();h.initFromGcsAndVcsPe(m,null),h.processUnitParams(l),l.processUnitParams(h),o>0&&Js(l,h,n,null,o)})(o,u.getWrapper(),e!==u.isInverted(),i,0,t,0,r),-1===n&&(m.initFromGcsAndVcs(i,null),o.equals(m)||(n=0)),this.m_fastTrack=0===n?0:1}}class Wa{m_transforms=[];m_inputGCS=null;m_outputGCS=null;m_name="";m_bNameIsSet=!1;getInputSpatialReference(){return null===this.m_inputGCS?this.count()>0?this.m_transforms[0].getInputSpatialReference():null:this.m_inputGCS}setInputSpatialReference(e){this.m_inputGCS=e?e.getGCS():null}getOutputSpatialReference(){return null===this.m_outputGCS?this.count()>0?this.m_transforms.at(-1).getOutputSpatialReference():null:this.m_outputGCS}setOutputSpatialReference(e){this.m_outputGCS=e?e.getGCS():null}getName(){if(this.m_bNameIsSet)return this.m_name;if(0===this.m_transforms.length)return"";let e="";for(let t of this.m_transforms)e.length>0&&(e+=" + "),t.isInverted()&&(e+="~"),e+=t.getName();return e}count(){return this.m_transforms.length}getStep(e){return(e<0||e>this.count())&&(0,i.r)(""),this.m_transforms[e]}setStep(e,t){(0,i.g)(0)}add(e){this.m_transforms.push(e)}addSteps(e,t){if(t)for(let t=e.count()-1;t>=0;--t)this.add(e.getStep(t).getInverse());else for(let t=0;t<e.count();++t)this.add(e.getStep(t))}clear(){this.m_transforms=[],this.m_name="",this.m_bNameIsSet=!1,this.m_inputGCS=null,this.m_outputGCS=null}remove(e){(0,i.g)(0)}create(){let e=this.getInputSpatialReference(),t=this.getOutputSpatialReference(),r=new za(this.m_transforms,this.m_bNameIsSet?this.m_name:null,e,t);return r.m_bReadOnly=!0,this.clear(),r}}}}]);